cackey-0.7.10/0000755000000000000000000000000013563537513011547 5ustar rootrootcackey-0.7.10/LICENSE0000644000000000000000000000615213563537513012560 0ustar rootroot CACKey 0.7.10 Release information: pkg: CACKey version 0.7.10 date: Mon Nov 18 13:57:33 CST 2019 author: US Army Corps of Engineers contact: Roy Keene US Army Corps of Engineers Information Technology Laboratory Vicksburg, MS 39180 -------------------------------------------------------------------------- With the exceptions noted below, the files in this directory and the 'leakcheck' subdirectory are Copyright 2012, Lockheed Martin Corporation. The U.S. Government has Unlimited Rights in this computer software pursuant to the clause DFARS 252.227-7014 of contract No. W91WMC-07-D-0001. Any reproduction of this computer software, or portions thereof, marked with this legend must also reproduce these markings. The files this project developed in the performance of contract W91WMC-07-D-0001 (see exceptions below) are authorized for distribution by the United States Government under the following license: LICENSE (MIT) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. EXCEPTIONS The following files in this directory are the intellectual property of the Free Software Foundation and are licensed under the terms of GPL-2.0-with-autoconf-exception: config.guess, config.sub The followig files in this directory are the intellectual property of the X Consortium, and are licensed under the X11 license: install.sh The following files in this directory are the intellectual property of RSA Data Security, Inc., and are licensed under terms specified therein: md5.h, md5.c These files are "derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm". The following files in this directory are from RFC 6234, are the intellectual property of the IETF Trust, and are licensed under the 3-clause BSD license: sha1.c, sha.h, sha-private.h The files in the "pkcs11/" directory are licensed under the terms of the following licenses: mypkcs11.h : GNU Lesser General Public License 2.1. pkcs11.h : GNU Lesser General Public License 2.1. pkcs11f.h : GNU Lesser General Public License 2.1. pkcs11n.h : Mozilla Public License 2.0 pkcs11t.h : GNU Lesser General Public License 2.1. cackey-0.7.10/MD5SUMS0000644000000000000000000000522413563537513012572 0ustar rootrootbe9a17033905f8294ada9bb86a08aa7a LICENSE 9e4628f1be6d637538dc385d8d91a595 Makefile.in b3d00a4233e6ded00fe457ab3d9e35b9 README.txt 8ba19168fbc01b356ecf3770b824e0a8 aclocal.m4 871bb27fa9d632d214c63bf8be4ab004 aclocal/Makefile fb2bb52c28eef992814ab6cc69260575 aclocal/acx_pthread.m4 a2dabd606c64b86dfc23ce26f857fb8f aclocal/dc_pcsc.m4 3d5e08d5fddaada011924fb00956a6fb aclocal/dc_shobjs.m4 c2dfd5d69ea14c0a9e455f73c6a8c720 aclocal/dc_versionscript.m4 f673253444466dc4b34d5ccf14de3618 asn1-x509.c 582fc92fccc99403e9c4031ce9151583 asn1-x509.h 732fc679cbca0184c0ab010c914d7c9f autogen.sh f09caccf6367759ac3ddc314d77e45c1 build/cackey_win32_build/build.sh 53d2af9a6418686b46bed6fb3c1a1da9 build/cackey_win32_build/include/pcsclite.h e2d6c316512dc025d2374c978b4b6bec build/cackey_win32_build/include/pthread.h 5407d4c937d8f925665f71aad35c12fa build/cackey_win32_build/include/zconf.h 64d8a5180bd54ff5452886e4cbb21e14 build/cackey_win32_build/include/zlib.h 48d687da23a7c25c32fb2be320320f1e build/cackey_win32_build/lib/libz.a 384d82f5f0805ec4b50085e7bb8c9547 build/cackey_win64_build/build.sh 53d2af9a6418686b46bed6fb3c1a1da9 build/cackey_win64_build/include/pcsclite.h e2d6c316512dc025d2374c978b4b6bec build/cackey_win64_build/include/pthread.h 5407d4c937d8f925665f71aad35c12fa build/cackey_win64_build/include/zconf.h 64d8a5180bd54ff5452886e4cbb21e14 build/cackey_win64_build/include/zlib.h a6b824cf680fa759ac7acf918ef38a5e build/cackey_win64_build/lib/libz.a 0309a7b91edf1139675f5ce680c08766 cackey.c e0c6c07c7dbb73cc696bae251c09431c cackey.spec fd67ff707d47611be7c5c130a6ae8712 cackey_builtin_certs.h cb63eb753c1e306e3c593c4903d26c66 config.guess 9eb33b6ac6aa60d74d9c14d8817fbf89 config.h.in ef227fdad53c101637ea54a27a2feeb5 config.log 9f3562619f0564ef89b6852b2d3f140d config.sub 4e99b55c41c6b0b15e2aa224723f6999 configure 79d25d392939eec264e6639454d09c1b configure.ac 361482dd6b5b5eb7090fff3986fba68a install-sh b93f8530c5c961a0f0beaa838fd1b19b leakcheck/README.txt 49c6ab5c7642190bea48609a1af3d4b3 leakcheck/leakcheck 2bf52906313276e920cd5e9c59bc65c0 libcackey.syms.in efa4946ed85bbea25ed79c9ea542b13c libcackey.vers e79887ddb7b796c2e202b2af526ea4e1 libcackey_wrap.c 735eb02bc6e4f23de09b27feb0565caf md5.c 9a2a019edba96a233c170bc23ef8f436 md5.h 7d6408bf9c084a1e4ec215f7cc0ac417 pkcs11/mypkcs11.h dbd6c85b10eba9e010290cf1152770af pkcs11/pkcs11.h 6720af7d2014d380ea3d7e909425673d pkcs11/pkcs11f.h 0249e258b3de56c25dbaff2977250641 pkcs11/pkcs11n.h 73a39c54cf6a651f737f2d21a4a84be4 pkcs11/pkcs11t.h dec7fa2585b5576a60f3b769e81e08e3 sha-private.h 2812c77a56e013741efbe50236e4fdaf sha.h a2bba58f75ab8449367d1b3ea7d2f4ba sha1.c d85cf7590ea8b36b2c30c4825af6a9b8 test.c cackey-0.7.10/Makefile.in0000644000000000000000000000706513563537513013624 0ustar rootrootCC = @PTHREAD_CC@ CFLAGS = @CFLAGS@ @PTHREAD_CFLAGS@ DEBUGCFLAGS = @CFLAGS@ @PTHREAD_CFLAGS@ -DCACKEY_DEBUG=1 CPPFLAGS = @CPPFLAGS@ @DEFS@ -I./pkcs11/ DEBUGCPPFLAGS = @CPPFLAGS@ -DCACKEY_DEBUG=1 -I./pkcs11/ @DEFS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ @PTHREAD_LIBS@ SHOBJFLAGS = @SHOBJFLAGS@ SHOBJLDFLAGS = @SHOBJLDFLAGS@ AR = @AR@ RANLIB = @RANLIB@ prefix = @prefix@ exec_prefix = @exec_prefix@ libdir = @libdir@ @SET_MAKE@ all: @DEFAULT_TARGET@ shared: $(MAKE) libcackey.@SHOBJEXT@ -$(MAKE) libcackey_g.@SHOBJEXT@ static: $(MAKE) libcackey.a -$(MAKE) libcackey_g.a cackey.o: cackey.c cackey_builtin_certs.h sha1.c sha.h sha-private.h md5.c md5.h asn1-x509.c asn1-x509.h config.h $(CC) $(SHOBJFLAGS) $(CPPFLAGS) $(CFLAGS) -o cackey.o -c cackey.c cackey_g.o: cackey.c cackey_builtin_certs.h sha1.c sha.h sha-private.h md5.c md5.h asn1-x509.c asn1-x509.h config.h $(CC) $(SHOBJFLAGS) $(DEBUGCPPFLAGS) $(DEBUGCFLAGS) -o cackey_g.o -c cackey.c libcackey.@SHOBJEXT@: cackey.o $(CC) $(SHOBJFLAGS) $(CPPFLAGS) $(CFLAGS) $(SHOBJLDFLAGS) $(LDFLAGS) -o libcackey.@SHOBJEXT@ cackey.o $(LIBS) -@WEAKENSYMS@ "libcackey.@SHOBJEXT@" -@REMOVESYMS@ "libcackey.@SHOBJEXT@" libcackey_g.@SHOBJEXT@: cackey_g.o $(CC) $(SHOBJFLAGS) $(DEBUGCPPFLAGS) $(DEBUGCFLAGS) $(SHOBJLDFLAGS) $(LDFLAGS) -o libcackey_g.@SHOBJEXT@ cackey_g.o $(LIBS) -@WEAKENSYMS@ "libcackey_g.@SHOBJEXT@" libcackey.a: cackey.o rm -f libcackey.a $(AR) rc libcackey.a cackey.o -$(RANLIB) libcackey.a libcackey_g.a: cackey_g.o rm -f libcackey_g.a $(AR) rc libcackey_g.a cackey_g.o -$(RANLIB) libcackey_g.a libcackey_wrap.@SHOBJEXT@: libcackey_wrap.o $(CC) $(SHOBJFLAGS) $(SHOBJLDFLAGS) -o libcackey_wrap.@SHOBJEXT@ libcackey_wrap.o -@WEAKENSYMS@ "libcackey_wrap.@SHOBJEXT@" -@REMOVESYMS@ "libcackey_wrap.@SHOBJEXT@" libcackey_wrap.o: libcackey_wrap.c $(CC) $(SHOBJFLAGS) -o libcackey_wrap.o -c libcackey_wrap.c test: test.c libcackey_g.@SHOBJEXT@ $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o test test.c -Wl,-R,. libcackey_g.@SHOBJEXT@ $(LIBS) test-afl.data: test tmpLogFile='log.$(shell openssl rand -hex 16)'; \ ./test 2> $${tmpLogFile}; \ echo -ne "$$( \ grep 'Returned Value:' $${tmpLogFile} | sed 's@^.*/@@;s@ = {@ @;s@})$$@@;s@,@@g;s@ @\\x@g;s@\\@ \\@' | while IFS=' ' read -r count string; do \ printf '\\x%02x\\x%02x%s' $$[$${count} / 256] $$[$${count} % 256] "$${string}"; \ done \ )" > test-afl.data; rm -f $${tmpLogFile} test-afl: test-afl.data test.c cackey.c cackey_builtin_certs.h sha1.c sha.h sha-private.h md5.c md5.h asn1-x509.c asn1-x509.h config.h $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -DCACKEY_TEST_AFL -o test-afl test.c $(patsubst -lpcsclite,,$(LIBS)) splint-cackey.txt: cackey.c cackey_builtin_certs.h asn1-x509.c asn1-x509.h config.h splint $(DEBUGCPPFLAGS) -DCACKEY_PARANOID=1 -weak +posixlib -I/usr/include/PCSC -Ipkcs11 cackey.c > splint-cackey.txt install: libcackey.@SHOBJEXT@ -mkdir -p "$(DESTDIR)$(libdir)" rm -f "$(DESTDIR)$(libdir)/libcackey.@SHOBJEXT@" rm -f "$(DESTDIR)$(libdir)/libcackey_g.@SHOBJEXT@" cp "libcackey.@SHOBJEXT@" "$(DESTDIR)$(libdir)/" -cp "libcackey_g.@SHOBJEXT@" "$(DESTDIR)$(libdir)/" clean: rm -f libcackey.@SHOBJEXT@ libcackey_g.@SHOBJEXT@ rm -f libcackey.@SHOBJEXT@.def libcackey_g.@SHOBJEXT@.def rm -f libcackey.@SHOBJEXT@.a libcackey_g.@SHOBJEXT@.a rm -f libcackey_wrap.@SHOBJEXT@ libcackey_wrap.o rm -f cackey.o cackey_g.o rm -f test rm -f splint-cackey.txt distclean: clean rm -f config.log config.status config.h Makefile libcackey.syms mrproper: distclean rm -f configure config.h.in aclocal.m4 *~ .PHONY: all shared static clean distclean mrproper install cackey-0.7.10/README.txt0000644000000000000000000000247213563537513013252 0ustar rootroot CACKey 0.7.10 Release information: pkg: CACKey version 0.7.10 date: Mon Nov 18 13:57:33 CST 2019 author: US Army Corps of Engineers contact: Roy Keene US Army Corps of Engineers Information Technology Laboratory Vicksburg, MS 39180 -------------------------------------------------------------------------- Description: CACKey provides a standard interface (PKCS#11) for smartcards connected to a PC/SC compliant reader. It performs a similar function to "CoolKey", but only supports Government Smartcards. It supports all Government Smartcards that implement the Government Smartcard Interoperability Specification (GSC-IS) v2.1 or newer. Compiling: $ ./configure $ make # make install This will install two libraries (libcackey.so, and libcackey_g.so) into "/usr/local/lib". Usage: The libraries "libcackey.so" and "libcackey_g.so" are RSA PKCS#11 Providers. They are meant to be linked into any application that requires a PKCS#11 provider. The library "libcackey.so" is meant for general purpose use. The library "libcackey_g.so" is for debugging purposes. It has debugging symbols compiled in and generates debugging information on stderr. Testing: $ make test $ ./test - or - $ ./test 2>cackey_debug.log cackey-0.7.10/SHA256SUMS0000644000000000000000000001043613563537513013056 0ustar rootroot77254ea0cd7cd5c40392cf076683dbae78050b51faf7159870b0a62b685156e4 LICENSE 8939246c6cffba24d50437935893336173b9f00898171e397e09d1117d2c81d2 MD5SUMS dca05422482e6b564ba9cb20dc747b041067125f501a8c0c9b7912bbbaa3ecfa Makefile.in 5ca7135c66d48cad34aa850c7337a16e9b0d30bbbe0ee552f2d72db152d05e39 README.txt 7a720fcd9b3f57d889e370813220cede8fb24599c638c36f8c59f8d121597a6c aclocal.m4 1735e6462b1f615bf893924f1e91ef78b62594ee54ddd751106121a5c2491dc2 aclocal/Makefile e1770e1d693878af959ead88c8aa970ba0bda4cb4d2b242e6a847975ddd4ab34 aclocal/acx_pthread.m4 7720e832b400033b250e2d53cc877bbb34400580a9fa6e896a63b51c2601aa34 aclocal/dc_pcsc.m4 ed85632af342167a0caa5372b2b5584be65829dbbba2ef4a7ae59ec1f38b4bbf aclocal/dc_shobjs.m4 ab811fd671f3320e4ed3aebbec5f3222753a77c4da3bd5ae0e481953d4f6b0ff aclocal/dc_versionscript.m4 d282109f6ddb7b4724e6a912bf7de3fd98f0a7a796761b784d7faea7c640cb2e asn1-x509.c ea5f99eff02366c416e21d88cec9bf1427e20fdba8a76d7377f871ddfec527c9 asn1-x509.h 9842d65dc763ba71ed39968b228c9a8c842c060265d75df8f9b82c500928ab4d autogen.sh faad3f6c7c3c44415c39dcf8670635e83e80cfd56cc4956b7a8c0d8b46bf304d build/cackey_win32_build/build.sh 7018bafc0c774aedb924aa782a97cac37634bb438f312514ba11b427c34a9b06 build/cackey_win32_build/include/pcsclite.h fe75e0d36451e9b17582fee6eb1afcabb7eca97ea41de5c4fa2c381f5152e0d5 build/cackey_win32_build/include/pthread.h ba25f4c66273ef9ef4d4bf5dcf94856a8335d541abecc5e28e2936c3148764c0 build/cackey_win32_build/include/zconf.h 726b0569915917b967f87f3f08a1eec039101bf9dcc29d61c0b2b0b8f271b58d build/cackey_win32_build/include/zlib.h 52e7957a9271bc5aed779012434db3b353fbb22766b3f5fc8dd694b895f680e4 build/cackey_win32_build/lib/libz.a ffea008851283a44fb4e06a5baeae666a4e3899110e69429b092adbf73ed3ef9 build/cackey_win64_build/build.sh 7018bafc0c774aedb924aa782a97cac37634bb438f312514ba11b427c34a9b06 build/cackey_win64_build/include/pcsclite.h fe75e0d36451e9b17582fee6eb1afcabb7eca97ea41de5c4fa2c381f5152e0d5 build/cackey_win64_build/include/pthread.h ba25f4c66273ef9ef4d4bf5dcf94856a8335d541abecc5e28e2936c3148764c0 build/cackey_win64_build/include/zconf.h 726b0569915917b967f87f3f08a1eec039101bf9dcc29d61c0b2b0b8f271b58d build/cackey_win64_build/include/zlib.h 073624a787ae5c32c067f09cd3f4af7cf15e059793785b368f25aa1227566525 build/cackey_win64_build/lib/libz.a 8a281f124da30869f50285ee003debf906a3c91beefdca5dd52211cdd8168a66 cackey.c 8b8586feb5ed35c87c13afcc0dd584413417c7108391dbafff504b40e2749477 cackey.spec 37a27ddf447623b8f3953cba0d0baf13de42357487f5d7e9b91e58a7cd048e4b cackey_builtin_certs.h b7eab9b8a73dc6e0421366bca6921cd2621dab6c3909d6e3bebf863011442d15 config.guess 36ce8b91c93079fc9b9e0bb2b111a1356308c7631cfb21e8c8cc0e2a77292837 config.h.in f004916836e3c6d23a11e1b6341807dc57c9dc2e769ddacd0a639faa4a9b3593 config.log 82745ce935695e7984a053c155a64b9ad16ece3a07d931cc90ab3fb28b7221af config.sub 9095f9d6849394145a846e24edf9f9a64b26320de7f57dfb90640697deb2677b configure da8eb5cc70c2ebc5330435217769ea8fe7f47c3c95aac6b335834a9210825d68 configure.ac d7c113e5484fce8b48f9a34a7a91e385ec279247d415b0b7d749bd56ad8ee8a2 install-sh 76a66ef94920d60ea071cb22ecaeee25a1d00a9eee6973edface5e66efa67dcd leakcheck/README.txt c9545edb3c9f3cfaa0c6f55bac4c2e5904ca8ad18e97d3271b17c670ac0001af leakcheck/leakcheck 6ed821252df540b7c2561ecd2682376bd84438007adfd98f532b5a88ebd4cf27 libcackey.syms.in 99648b8f9c6649efddca861a9e6ee549461f3698295176a7e35a9a08a7379102 libcackey.vers 12dd5ac714d5aedab9fdadfe9dc5a4386ffd1b3f7255a0786a90f55ddd3f06f5 libcackey_wrap.c d0dc194e2626b27799ca3eef8ae2040d63f6cd41c7b9da216bcb3953f687869e md5.c 40efe83ccaf0dbaa585f79f868025c6ca59834efed7653e4cf28f178dc4d01e5 md5.h 1348c1ceadcf27449250dbf7a76e755ec4a6d98297d8cba4ab126a6c0e28e979 pkcs11/mypkcs11.h df1b0787b8326a255020e968e8b42914d517b1be70790f517638f504ab2912c7 pkcs11/pkcs11.h 008ebc57ee5911ee2ee69e960013f04ce62d0dc6a999b9770fc45abf52c111e8 pkcs11/pkcs11f.h 0e9fc2957e2f995256fda63d35785f23a577e658ee6cec85a50fd5eb4f58509b pkcs11/pkcs11n.h 2583e74c446397179ee3e6fb2b9fe17042b97cdf34b81ce98f62537a6c8819d8 pkcs11/pkcs11t.h d88530d3f8fa0c7cca6db75c50fb819cbcebb6d7095b2e18fb8a6bef1e0b4452 sha-private.h bb62be0942b459718fd46aa69a4f31bc25b8055308c7e867b1b1a264313497f4 sha.h f9aac9786a40d174b0e70b9778a966b33aec8a1a47f48f740044623ca62f379d sha1.c a7c86ef005d274cca4baf69edf9caa782e69e94ef0cf73b71943c099221e0f03 test.c cackey-0.7.10/aclocal/0000755000000000000000000000000013563537513013145 5ustar rootrootcackey-0.7.10/aclocal/Makefile0000644000000000000000000000013113563537513014600 0ustar rootroot../aclocal.m4: acx_pthread.m4 dc_shobjs.m4 dc_pcsc.m4 dc_versionscript.m4 cat $^ > "$@" cackey-0.7.10/aclocal/acx_pthread.m40000644000000000000000000001600313563537513015671 0ustar rootrootdnl Available from the GNU Autoconf Macro Archive at: dnl http://www.gnu.org/software/ac-archive/htmldoc/acx_pthread.html dnl AC_DEFUN([ACX_PTHREAD], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_SAVE AC_LANG_C acx_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) AC_MSG_RESULT($acx_pthread_ok) if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all. acx_pthread_flags="pthreads none -Kthread -kthread lthread pthread -pthread -pthreads -mthreads --thread-safe -mt" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # pthread: Linux, etcetera # --thread-safe: KAI C++ case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthread or # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags" ;; esac if test x"$acx_pthread_ok" = xno; then for flag in $acx_pthread_flags; do case $flag in none) AC_MSG_CHECKING([whether pthreads work without any flags]) ;; -*) AC_MSG_CHECKING([whether pthreads work with $flag]) PTHREAD_CFLAGS="$flag" ;; *) AC_MSG_CHECKING([for the pthreads library -l$flag]) PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. AC_TRY_LINK([#include ], [pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], [acx_pthread_ok=yes]) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" AC_MSG_RESULT($acx_pthread_ok) if test "x$acx_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$acx_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: threads are created detached by default # and the JOINABLE attribute has a nonstandard name (UNDETACHED). AC_MSG_CHECKING([for joinable pthread attribute]) AC_TRY_LINK([#include ], [int attr=PTHREAD_CREATE_JOINABLE;], ok=PTHREAD_CREATE_JOINABLE, ok=unknown) if test x"$ok" = xunknown; then AC_TRY_LINK([#include ], [int attr=PTHREAD_CREATE_UNDETACHED;], ok=PTHREAD_CREATE_UNDETACHED, ok=unknown) fi if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then AC_DEFINE(PTHREAD_CREATE_JOINABLE, $ok, [Define to the necessary symbol if this constant uses a non-standard name on your system.]) fi AC_MSG_RESULT(${ok}) if test x"$ok" = xunknown; then AC_MSG_WARN([we do not know how to create joinable pthreads]) fi AC_MSG_CHECKING([if more special flags are required for pthreads]) flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac AC_MSG_RESULT(${flag}) if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with cc_r AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC}) else PTHREAD_CC="$CC" fi AC_SUBST(PTHREAD_LIBS) AC_SUBST(PTHREAD_CFLAGS) AC_SUBST(PTHREAD_CC) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) : else acx_pthread_ok=no $2 fi AC_LANG_RESTORE ])dnl ACX_PTHREAD cackey-0.7.10/aclocal/dc_pcsc.m40000644000000000000000000000673713563537513015022 0ustar rootrootAC_DEFUN(DC_PCSC_HEADERS, [ AC_ARG_WITH(pcsc-headers, AC_HELP_STRING([--with-pcsc-headers=], [Specify a path to look for PC/SC Headers]), [ manualheaders="${withval}" ], [ manualheaders="no" ]) if test "${manualheaders}" != "no"; then CFLAGS="${CFLAGS} -I${manualheaders}" CPPFLAGS="${CPPFLAGS} -I${manualheaders}" AC_CHECK_HEADER(wintypes.h, [ AC_DEFINE(HAVE_WINTYPES_H, [1], [Define if you have the PCSC-Lite header file (you should)]) ]) AC_CHECK_HEADER(pcsclite.h, [ AC_DEFINE(HAVE_PCSCLITE_H, [1], [Define if you have the PCSC-Lite header file (you should)]) ]) AC_CHECK_HEADER(winscard.h, [ AC_DEFINE(HAVE_WINSCARD_H, [1], [Define if you have the PCSC-Lite header file (you should)]) ]) else DC_PCSC_HEADERS_SEARCH fi ]) AC_DEFUN(DC_PCSC_HEADERS_SEARCH, [ SAVE_CFLAGS="${CFLAGS}" SAVE_CPPFLAGS="${CPPFLAGS}" ADD_CFLAGS="" ADD_CPPFLAGS="" found_pcsclite=0 found_winscard=0 found_wintypes=0 for headerpath in /usr/include /usr/local/include /usr/cac/include /Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers; do for subdir in smartcard PCSC pcsc pcsclite ""; do headerdir="${headerpath}/${subdir}" CFLAGS="${SAVE_CFLAGS} -I${headerdir}" CPPFLAGS="${SAVE_CPPFLAGS} -I${headerdir}" unset ac_cv_header_pcsclite_h unset ac_cv_header_winscard_h unset ac_cv_header_wintypes_h just_found_pcsclite=0 just_found_winscard=0 just_found_wintypes=0 AC_CHECK_HEADER(wintypes.h, [ AC_DEFINE(HAVE_WINTYPES_H, [1], [Define if you have the PCSC-Lite header file (you should)]) found_wintypes=1 just_found_wintypes=1 ]) AC_CHECK_HEADER(pcsclite.h, [ AC_DEFINE(HAVE_PCSCLITE_H, [1], [Define if you have the PCSC-Lite header file (you should)]) found_pcsclite=1 just_found_pcsclite=1 ]) AC_CHECK_HEADER(winscard.h, [ AC_DEFINE(HAVE_WINSCARD_H, [1], [Define if you have the PCSC-Lite header file (you should)]) found_winscard=1 just_found_winscard=1 ]) if test "${just_found_pcsclite}" = 1 -a "${just_found_winscard}" = 1 -a "${just_found_wintypes}" = 1; then ADD_CFLAGS=" -I${headerdir}" ADD_CPPFLAGS=" -I${headerdir}" fi if test "${found_pcsclite}" = 1 -a "${found_winscard}" = 1 -a "${found_wintypes}" = 1; then break fi done if test -n "${ADD_CFLAGS}" -o -n "${ADD_CPPFLAGS}"; then break fi done CFLAGS="${SAVE_CFLAGS}${ADD_CFLAGS}" CPPFLAGS="${SAVE_CPPFLAGS}${ADD_CPPFLAGS}" ]) AC_DEFUN(DC_PCSC_LIBS, [ AC_ARG_WITH(pcsc-libs, AC_HELP_STRING([--with-pcsc-libs=], [Specify PC/SC Libraries (e.g., -lpcsclite)]), [ manuallibs="${withval}" ], [ manuallibs="no" ]) if test "${manuallibs}" != "no"; then LIBS="${LIBS} ${manuallibs}" else DC_PCSC_LIBS_SEARCH fi ]) AC_DEFUN(DC_PCSC_LIBS_SEARCH, [ foundlib="0" SAVELIBS="${LIBS}" AC_MSG_CHECKING([for how to link to PC/SC]) for lib in -lpcsclite -lpcsc-lite -lpcsc /Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/PCSC; do LIBS="${SAVELIBS} ${lib}" AC_LINK_IFELSE(AC_LANG_PROGRAM([[ int SCardEstablishContext(void); ]], [[ int x; x = SCardEstablishContext(); ]]), [ AC_MSG_RESULT([${lib}]) LIBS="${SAVELIBS} ${lib}" foundlib="1" break ]) done if test "${foundlib}" = "0"; then AC_MSG_RESULT(cant) AC_MSG_WARN([unable to find PCSC library, compilation will likely fail.]) fi dnl Check for SCardIsValidContext, only in newer PCSC-Lite AC_CHECK_FUNCS(SCardIsValidContext) ]) AC_DEFUN(DC_PCSC, [ DC_PCSC_HEADERS DC_PCSC_LIBS ]) cackey-0.7.10/aclocal/dc_shobjs.m40000644000000000000000000000677413563537513015363 0ustar rootrootdnl Usage: dnl DC_TEST_SHOBJFLAGS(shobjflags, shobjldflags, action-if-not-found) dnl AC_DEFUN(DC_TEST_SHOBJFLAGS, [ AC_SUBST(SHOBJFLAGS) AC_SUBST(SHOBJLDFLAGS) OLD_LDFLAGS="$LDFLAGS" SHOBJFLAGS="" LDFLAGS="$OLD_LDFLAGS $1 $2" AC_TRY_LINK([#include int unrestst(void);], [ printf("okay\n"); unrestst(); return(0); ], [ SHOBJFLAGS="$1"; SHOBJLDFLAGS="$2" ], [ LDFLAGS="$OLD_LDFLAGS" $3 ]) LDFLAGS="$OLD_LDFLAGS" ]) AC_DEFUN(DC_GET_SHOBJFLAGS, [ AC_SUBST(SHOBJFLAGS) AC_SUBST(SHOBJLDFLAGS) AC_SUBST(DEFAULT_TARGET) AC_MSG_CHECKING(how to create shared objects) DEFAULT_TARGET=shared if test -z "$SHOBJFLAGS" -a -z "$SHOBJLDFLAGS"; then DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic -mimpure-text], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -mimpure-text], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic -Wl,-G,-z,textoff], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -Wl,-G,-z,textoff], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -dynamiclib -flat_namespace -undefined suppress -bind_at_load], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib -flat_namespace -undefined suppress -bind_at_load], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-Wl,-dynamiclib -Wl,-flat_namespace -Wl,-undefined,suppress -Wl,-bind_at_load], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib -flat_namespace -undefined suppress], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib], [ DEFAULT_TARGET=static ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) fi if test "$DEFAULT_TARGET" = 'shared' ; then AC_MSG_RESULT($SHOBJLDFLAGS $SHOBJFLAGS) else AC_MSG_RESULT(cant -- result will be a static archive) fi DC_SYNC_SHLIBOBJS ]) AC_DEFUN(DC_SYNC_SHLIBOBJS, [ AC_SUBST(SHLIBOBJS) SHLIBOBJS="" for obj in $LIB@&t@OBJS; do SHLIBOBJS="$SHLIBOBJS `echo $obj | sed 's/\.o$/_shr.o/g'`" done ]) AC_DEFUN(DC_SYNC_RPATH, [ OLD_LDFLAGS="$LDFLAGS" for tryrpath in "-Wl,-rpath" "-Wl,--rpath" "-Wl,-R"; do LDFLAGS="$OLD_LDFLAGS $tryrpath -Wl,/tmp" AC_LINK_IFELSE(AC_LANG_PROGRAM([], [ return(0); ]), [ rpathldflags="$tryrpath" break ]) done unset tryrpath LDFLAGS="$OLD_LDFLAGS" unset OLD_LDFLAGS ADDLDFLAGS="" for opt in $LDFLAGS; do if echo "$opt" | grep '^-L' >/dev/null; then rpathdir=`echo "$opt" | sed 's@^-L *@@'` ADDLDFLAGS="$ADDLDFLAGS $rpathldflags -Wl,$rpathdir" fi done unset opt rpathldflags LDFLAGS="$LDFLAGS $ADDLDFLAGS" unset ADDLDFLAGS ]) AC_DEFUN(DC_CHK_OS_INFO, [ AC_CANONICAL_HOST AC_SUBST(SHOBJEXT) AC_SUBST(SHOBJFLAGS) AC_SUBST(SHOBJLDFLAGS) AC_SUBST(CFLAGS) AC_SUBST(CPPFLAGS) AC_SUBST(AREXT) AC_MSG_CHECKING(host operating system) AC_MSG_RESULT($host_os) SHOBJEXT="so" AREXT="a" case $host_os in darwin*) SHOBJEXT="dylib" ;; hpux*) SHOBJEXT="sl" ;; mingw32|mingw32msvc*) SHOBJEXT="dll" SHOBJFLAGS="-DPIC" CFLAGS="$CFLAGS -mms-bitfields" CPPFLAGS="$CPPFLAGS -mms-bitfields" SHOBJLDFLAGS='-shared -Wl,--dll -Wl,--enable-auto-image-base -Wl,--output-def,$[@].def,--out-implib,$[@].a' ;; cygwin*) SHOBJEXT="dll" SHOBJFLAGS="-fPIC -DPIC" CFLAGS="$CFLAGS -mms-bitfields" CPPFLAGS="$CPPFLAGS -mms-bitfields" SHOBJLDFLAGS='-shared -Wl,--enable-auto-image-base -Wl,--output-def,$[@].def,--out-implib,$[@].a' ;; esac ]) cackey-0.7.10/aclocal/dc_versionscript.m40000644000000000000000000000265413563537513016776 0ustar rootrootAC_DEFUN(DC_SETVERSIONSCRIPT, [ VERSIONSCRIPT="$1" SYMFILE="$2" delete_symfile='0' if test ! -f "${SYMFILE}"; then delete_symfile='1' echo '' > "${SYMFILE}" fi SAVE_LDFLAGS="${LDFLAGS}" AC_MSG_CHECKING([for how to set version script]) for tryaddldflags in "-Wl,--version-script -Wl,${VERSIONSCRIPT}" "-Wl,-exported_symbols_list -Wl,${SYMFILE}"; do LDFLAGS="${SAVE_LDFLAGS} ${tryaddldflags}" AC_TRY_LINK([], [], [ addldflags="${tryaddldflags}" break ]) done if test "${delete_symfile}" = "1"; then rm -f "${SYMFILE}" fi if test -n "${addldflags}"; then LDFLAGS="${SAVE_LDFLAGS} ${addldflags}" AC_MSG_RESULT($addldflags) else LDFLAGS="${SAVE_LDFLAGS}" AC_MSG_RESULT([don't know]) fi ]) AC_DEFUN(DC_FIND_STRIP_AND_REMOVESYMS, [ SYMFILE="$1" dnl Determine how to strip executables AC_CHECK_TOOLS(OBJCOPY, objcopy gobjcopy, [false]) AC_CHECK_TOOLS(STRIP, strip gstrip, [false]) if test "x${STRIP}" = "xfalse"; then STRIP="${OBJCOPY}" fi WEAKENSYMS='true' REMOVESYMS='true' SYMPREFIX='' case $host_os in darwin*) REMOVESYMS="${STRIP} -i -u -s ${SYMFILE}" SYMPREFIX="_" ;; *) if test "x${OBJCOPY}" != "xfalse"; then WEAKENSYMS="${OBJCOPY} --keep-global-symbols=${SYMFILE}" REMOVESYMS="${OBJCOPY} --discard-all" elif test "x${STRIP}" != "xfalse"; then REMOVESYMS="${STRIP} -x" fi ;; esac AC_SUBST(WEAKENSYMS) AC_SUBST(REMOVESYMS) AC_SUBST(SYMPREFIX) ]) cackey-0.7.10/aclocal.m40000644000000000000000000003661213563537513013417 0ustar rootrootdnl Available from the GNU Autoconf Macro Archive at: dnl http://www.gnu.org/software/ac-archive/htmldoc/acx_pthread.html dnl AC_DEFUN([ACX_PTHREAD], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_SAVE AC_LANG_C acx_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) AC_MSG_RESULT($acx_pthread_ok) if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all. acx_pthread_flags="pthreads none -Kthread -kthread lthread pthread -pthread -pthreads -mthreads --thread-safe -mt" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # pthread: Linux, etcetera # --thread-safe: KAI C++ case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthread or # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags" ;; esac if test x"$acx_pthread_ok" = xno; then for flag in $acx_pthread_flags; do case $flag in none) AC_MSG_CHECKING([whether pthreads work without any flags]) ;; -*) AC_MSG_CHECKING([whether pthreads work with $flag]) PTHREAD_CFLAGS="$flag" ;; *) AC_MSG_CHECKING([for the pthreads library -l$flag]) PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. AC_TRY_LINK([#include ], [pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], [acx_pthread_ok=yes]) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" AC_MSG_RESULT($acx_pthread_ok) if test "x$acx_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$acx_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: threads are created detached by default # and the JOINABLE attribute has a nonstandard name (UNDETACHED). AC_MSG_CHECKING([for joinable pthread attribute]) AC_TRY_LINK([#include ], [int attr=PTHREAD_CREATE_JOINABLE;], ok=PTHREAD_CREATE_JOINABLE, ok=unknown) if test x"$ok" = xunknown; then AC_TRY_LINK([#include ], [int attr=PTHREAD_CREATE_UNDETACHED;], ok=PTHREAD_CREATE_UNDETACHED, ok=unknown) fi if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then AC_DEFINE(PTHREAD_CREATE_JOINABLE, $ok, [Define to the necessary symbol if this constant uses a non-standard name on your system.]) fi AC_MSG_RESULT(${ok}) if test x"$ok" = xunknown; then AC_MSG_WARN([we do not know how to create joinable pthreads]) fi AC_MSG_CHECKING([if more special flags are required for pthreads]) flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac AC_MSG_RESULT(${flag}) if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with cc_r AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC}) else PTHREAD_CC="$CC" fi AC_SUBST(PTHREAD_LIBS) AC_SUBST(PTHREAD_CFLAGS) AC_SUBST(PTHREAD_CC) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) : else acx_pthread_ok=no $2 fi AC_LANG_RESTORE ])dnl ACX_PTHREAD dnl Usage: dnl DC_TEST_SHOBJFLAGS(shobjflags, shobjldflags, action-if-not-found) dnl AC_DEFUN(DC_TEST_SHOBJFLAGS, [ AC_SUBST(SHOBJFLAGS) AC_SUBST(SHOBJLDFLAGS) OLD_LDFLAGS="$LDFLAGS" SHOBJFLAGS="" LDFLAGS="$OLD_LDFLAGS $1 $2" AC_TRY_LINK([#include int unrestst(void);], [ printf("okay\n"); unrestst(); return(0); ], [ SHOBJFLAGS="$1"; SHOBJLDFLAGS="$2" ], [ LDFLAGS="$OLD_LDFLAGS" $3 ]) LDFLAGS="$OLD_LDFLAGS" ]) AC_DEFUN(DC_GET_SHOBJFLAGS, [ AC_SUBST(SHOBJFLAGS) AC_SUBST(SHOBJLDFLAGS) AC_SUBST(DEFAULT_TARGET) AC_MSG_CHECKING(how to create shared objects) DEFAULT_TARGET=shared if test -z "$SHOBJFLAGS" -a -z "$SHOBJLDFLAGS"; then DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic -mimpure-text], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -mimpure-text], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic -Wl,-G,-z,textoff], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -Wl,-G,-z,textoff], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -dynamiclib -flat_namespace -undefined suppress -bind_at_load], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib -flat_namespace -undefined suppress -bind_at_load], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-Wl,-dynamiclib -Wl,-flat_namespace -Wl,-undefined,suppress -Wl,-bind_at_load], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib -flat_namespace -undefined suppress], [ DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib], [ DEFAULT_TARGET=static ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) ]) fi if test "$DEFAULT_TARGET" = 'shared' ; then AC_MSG_RESULT($SHOBJLDFLAGS $SHOBJFLAGS) else AC_MSG_RESULT(cant -- result will be a static archive) fi DC_SYNC_SHLIBOBJS ]) AC_DEFUN(DC_SYNC_SHLIBOBJS, [ AC_SUBST(SHLIBOBJS) SHLIBOBJS="" for obj in $LIB@&t@OBJS; do SHLIBOBJS="$SHLIBOBJS `echo $obj | sed 's/\.o$/_shr.o/g'`" done ]) AC_DEFUN(DC_SYNC_RPATH, [ OLD_LDFLAGS="$LDFLAGS" for tryrpath in "-Wl,-rpath" "-Wl,--rpath" "-Wl,-R"; do LDFLAGS="$OLD_LDFLAGS $tryrpath -Wl,/tmp" AC_LINK_IFELSE(AC_LANG_PROGRAM([], [ return(0); ]), [ rpathldflags="$tryrpath" break ]) done unset tryrpath LDFLAGS="$OLD_LDFLAGS" unset OLD_LDFLAGS ADDLDFLAGS="" for opt in $LDFLAGS; do if echo "$opt" | grep '^-L' >/dev/null; then rpathdir=`echo "$opt" | sed 's@^-L *@@'` ADDLDFLAGS="$ADDLDFLAGS $rpathldflags -Wl,$rpathdir" fi done unset opt rpathldflags LDFLAGS="$LDFLAGS $ADDLDFLAGS" unset ADDLDFLAGS ]) AC_DEFUN(DC_CHK_OS_INFO, [ AC_CANONICAL_HOST AC_SUBST(SHOBJEXT) AC_SUBST(SHOBJFLAGS) AC_SUBST(SHOBJLDFLAGS) AC_SUBST(CFLAGS) AC_SUBST(CPPFLAGS) AC_SUBST(AREXT) AC_MSG_CHECKING(host operating system) AC_MSG_RESULT($host_os) SHOBJEXT="so" AREXT="a" case $host_os in darwin*) SHOBJEXT="dylib" ;; hpux*) SHOBJEXT="sl" ;; mingw32|mingw32msvc*) SHOBJEXT="dll" SHOBJFLAGS="-DPIC" CFLAGS="$CFLAGS -mms-bitfields" CPPFLAGS="$CPPFLAGS -mms-bitfields" SHOBJLDFLAGS='-shared -Wl,--dll -Wl,--enable-auto-image-base -Wl,--output-def,$[@].def,--out-implib,$[@].a' ;; cygwin*) SHOBJEXT="dll" SHOBJFLAGS="-fPIC -DPIC" CFLAGS="$CFLAGS -mms-bitfields" CPPFLAGS="$CPPFLAGS -mms-bitfields" SHOBJLDFLAGS='-shared -Wl,--enable-auto-image-base -Wl,--output-def,$[@].def,--out-implib,$[@].a' ;; esac ]) AC_DEFUN(DC_PCSC_HEADERS, [ AC_ARG_WITH(pcsc-headers, AC_HELP_STRING([--with-pcsc-headers=], [Specify a path to look for PC/SC Headers]), [ manualheaders="${withval}" ], [ manualheaders="no" ]) if test "${manualheaders}" != "no"; then CFLAGS="${CFLAGS} -I${manualheaders}" CPPFLAGS="${CPPFLAGS} -I${manualheaders}" AC_CHECK_HEADER(wintypes.h, [ AC_DEFINE(HAVE_WINTYPES_H, [1], [Define if you have the PCSC-Lite header file (you should)]) ]) AC_CHECK_HEADER(pcsclite.h, [ AC_DEFINE(HAVE_PCSCLITE_H, [1], [Define if you have the PCSC-Lite header file (you should)]) ]) AC_CHECK_HEADER(winscard.h, [ AC_DEFINE(HAVE_WINSCARD_H, [1], [Define if you have the PCSC-Lite header file (you should)]) ]) else DC_PCSC_HEADERS_SEARCH fi ]) AC_DEFUN(DC_PCSC_HEADERS_SEARCH, [ SAVE_CFLAGS="${CFLAGS}" SAVE_CPPFLAGS="${CPPFLAGS}" ADD_CFLAGS="" ADD_CPPFLAGS="" found_pcsclite=0 found_winscard=0 found_wintypes=0 for headerpath in /usr/include /usr/local/include /usr/cac/include /Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers; do for subdir in smartcard PCSC pcsc pcsclite ""; do headerdir="${headerpath}/${subdir}" CFLAGS="${SAVE_CFLAGS} -I${headerdir}" CPPFLAGS="${SAVE_CPPFLAGS} -I${headerdir}" unset ac_cv_header_pcsclite_h unset ac_cv_header_winscard_h unset ac_cv_header_wintypes_h just_found_pcsclite=0 just_found_winscard=0 just_found_wintypes=0 AC_CHECK_HEADER(wintypes.h, [ AC_DEFINE(HAVE_WINTYPES_H, [1], [Define if you have the PCSC-Lite header file (you should)]) found_wintypes=1 just_found_wintypes=1 ]) AC_CHECK_HEADER(pcsclite.h, [ AC_DEFINE(HAVE_PCSCLITE_H, [1], [Define if you have the PCSC-Lite header file (you should)]) found_pcsclite=1 just_found_pcsclite=1 ]) AC_CHECK_HEADER(winscard.h, [ AC_DEFINE(HAVE_WINSCARD_H, [1], [Define if you have the PCSC-Lite header file (you should)]) found_winscard=1 just_found_winscard=1 ]) if test "${just_found_pcsclite}" = 1 -a "${just_found_winscard}" = 1 -a "${just_found_wintypes}" = 1; then ADD_CFLAGS=" -I${headerdir}" ADD_CPPFLAGS=" -I${headerdir}" fi if test "${found_pcsclite}" = 1 -a "${found_winscard}" = 1 -a "${found_wintypes}" = 1; then break fi done if test -n "${ADD_CFLAGS}" -o -n "${ADD_CPPFLAGS}"; then break fi done CFLAGS="${SAVE_CFLAGS}${ADD_CFLAGS}" CPPFLAGS="${SAVE_CPPFLAGS}${ADD_CPPFLAGS}" ]) AC_DEFUN(DC_PCSC_LIBS, [ AC_ARG_WITH(pcsc-libs, AC_HELP_STRING([--with-pcsc-libs=], [Specify PC/SC Libraries (e.g., -lpcsclite)]), [ manuallibs="${withval}" ], [ manuallibs="no" ]) if test "${manuallibs}" != "no"; then LIBS="${LIBS} ${manuallibs}" else DC_PCSC_LIBS_SEARCH fi ]) AC_DEFUN(DC_PCSC_LIBS_SEARCH, [ foundlib="0" SAVELIBS="${LIBS}" AC_MSG_CHECKING([for how to link to PC/SC]) for lib in -lpcsclite -lpcsc-lite -lpcsc /Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/PCSC; do LIBS="${SAVELIBS} ${lib}" AC_LINK_IFELSE(AC_LANG_PROGRAM([[ int SCardEstablishContext(void); ]], [[ int x; x = SCardEstablishContext(); ]]), [ AC_MSG_RESULT([${lib}]) LIBS="${SAVELIBS} ${lib}" foundlib="1" break ]) done if test "${foundlib}" = "0"; then AC_MSG_RESULT(cant) AC_MSG_WARN([unable to find PCSC library, compilation will likely fail.]) fi dnl Check for SCardIsValidContext, only in newer PCSC-Lite AC_CHECK_FUNCS(SCardIsValidContext) ]) AC_DEFUN(DC_PCSC, [ DC_PCSC_HEADERS DC_PCSC_LIBS ]) AC_DEFUN(DC_SETVERSIONSCRIPT, [ VERSIONSCRIPT="$1" SYMFILE="$2" delete_symfile='0' if test ! -f "${SYMFILE}"; then delete_symfile='1' echo '' > "${SYMFILE}" fi SAVE_LDFLAGS="${LDFLAGS}" AC_MSG_CHECKING([for how to set version script]) for tryaddldflags in "-Wl,--version-script -Wl,${VERSIONSCRIPT}" "-Wl,-exported_symbols_list -Wl,${SYMFILE}"; do LDFLAGS="${SAVE_LDFLAGS} ${tryaddldflags}" AC_TRY_LINK([], [], [ addldflags="${tryaddldflags}" break ]) done if test "${delete_symfile}" = "1"; then rm -f "${SYMFILE}" fi if test -n "${addldflags}"; then LDFLAGS="${SAVE_LDFLAGS} ${addldflags}" AC_MSG_RESULT($addldflags) else LDFLAGS="${SAVE_LDFLAGS}" AC_MSG_RESULT([don't know]) fi ]) AC_DEFUN(DC_FIND_STRIP_AND_REMOVESYMS, [ SYMFILE="$1" dnl Determine how to strip executables AC_CHECK_TOOLS(OBJCOPY, objcopy gobjcopy, [false]) AC_CHECK_TOOLS(STRIP, strip gstrip, [false]) if test "x${STRIP}" = "xfalse"; then STRIP="${OBJCOPY}" fi WEAKENSYMS='true' REMOVESYMS='true' SYMPREFIX='' case $host_os in darwin*) REMOVESYMS="${STRIP} -i -u -s ${SYMFILE}" SYMPREFIX="_" ;; *) if test "x${OBJCOPY}" != "xfalse"; then WEAKENSYMS="${OBJCOPY} --keep-global-symbols=${SYMFILE}" REMOVESYMS="${OBJCOPY} --discard-all" elif test "x${STRIP}" != "xfalse"; then REMOVESYMS="${STRIP} -x" fi ;; esac AC_SUBST(WEAKENSYMS) AC_SUBST(REMOVESYMS) AC_SUBST(SYMPREFIX) ]) cackey-0.7.10/asn1-x509.c0000644000000000000000000002531513563537513013266 0ustar rootroot/* * Basic implementation of ITU-T X.690 (07/2002) for parsing BER encoded * X.509 certificates */ #ifdef HAVE_CONFIG_H # include "config.h" #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STDARG_H # include #endif #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STRING_H # include #endif #include "asn1-x509.h" struct asn1_object { unsigned long tag; unsigned long size; void *contents; unsigned long asn1rep_len; void *asn1rep; }; struct x509_object { struct asn1_object wholething; struct asn1_object certificate; struct asn1_object version; struct asn1_object serial_number; struct asn1_object signature_algo; struct asn1_object issuer; struct asn1_object validity; struct asn1_object subject; struct asn1_object pubkeyinfo; struct asn1_object pubkey_algoid; struct asn1_object pubkey_algo; struct asn1_object pubkey_algoparm; struct asn1_object pubkey; }; static int _asn1_x509_read_asn1_object(unsigned char *buf, size_t buflen, va_list *args) { unsigned char small_object_size; unsigned char *buf_p; struct asn1_object *outbuf; outbuf = va_arg(*args, struct asn1_object *); if (outbuf == NULL) { return(0); } if (buflen == 0) { return(-1); } buf_p = buf; outbuf->tag = *buf_p; buf_p++; buflen--; /* NULL Tag -- no size is required */ if (outbuf->tag == 0x00) { outbuf->size = 0; outbuf->asn1rep_len = 1; outbuf->asn1rep = buf; return(_asn1_x509_read_asn1_object(buf_p, buflen, args)); } if (buflen == 0) { return(-1); } small_object_size = *buf_p; buf_p++; buflen--; if (buflen == 0) { return(-1); } if ((small_object_size & 0x80) == 0x80) { outbuf->size = 0; for (small_object_size ^= 0x80; small_object_size; small_object_size--) { outbuf->size <<= 8; outbuf->size += *buf_p; buf_p++; buflen--; if (buflen == 0) { break; } } } else { outbuf->size = small_object_size; } if (outbuf->size > buflen) { return(-1); } if (buflen != 0) { outbuf->contents = buf_p; } outbuf->asn1rep_len = outbuf->size + (buf_p - buf); outbuf->asn1rep = buf; buf_p += outbuf->size; buflen -= outbuf->size; return(_asn1_x509_read_asn1_object(buf_p, buflen, args)); } static int asn1_x509_read_asn1_object(unsigned char *buf, size_t buflen, ...) { va_list args; int retval; va_start(args, buflen); retval = _asn1_x509_read_asn1_object(buf, buflen, &args); va_end(args); return(retval); } static int asn1_x509_read_object(unsigned char *buf, size_t buflen, struct x509_object *outbuf) { int read_ret; read_ret = asn1_x509_read_asn1_object(buf, buflen, &outbuf->wholething, NULL); if (read_ret != 0) { CACKEY_DEBUG_PRINTF("Failed at reading the contents from the wrapper"); return(-1); } read_ret = asn1_x509_read_asn1_object(outbuf->wholething.contents, outbuf->wholething.size, &outbuf->certificate, NULL); if (read_ret != 0) { CACKEY_DEBUG_PRINTF("Failed at reading the certificate from the contents"); return(-1); } read_ret = asn1_x509_read_asn1_object(outbuf->certificate.contents, outbuf->certificate.size, &outbuf->version, &outbuf->serial_number, &outbuf->signature_algo, &outbuf->issuer, &outbuf->validity, &outbuf->subject, &outbuf->pubkeyinfo, NULL); if (read_ret != 0) { /* Try again without a version tag (X.509v1) */ outbuf->version.tag = 0; outbuf->version.size = 0; outbuf->version.contents = NULL; outbuf->version.asn1rep_len = 0; outbuf->version.asn1rep = NULL; read_ret = asn1_x509_read_asn1_object(outbuf->certificate.contents, outbuf->certificate.size, &outbuf->serial_number, &outbuf->signature_algo, &outbuf->issuer, &outbuf->validity, &outbuf->subject, &outbuf->pubkeyinfo, NULL); if (read_ret != 0) { CACKEY_DEBUG_PRINTF("Failed at reading the certificate components from the certificate"); return(-1); } } read_ret = asn1_x509_read_asn1_object(outbuf->pubkeyinfo.contents, outbuf->pubkeyinfo.size, &outbuf->pubkey_algoid, &outbuf->pubkey, NULL); if (read_ret != 0) { CACKEY_DEBUG_PRINTF("Failed at reading the public key from the certificate components"); return(-1); } return(0); } ssize_t x509_to_issuer(void *x509_der_buf, size_t x509_der_buf_len, void **outbuf) { struct x509_object x509; int read_ret; read_ret = asn1_x509_read_object(x509_der_buf, x509_der_buf_len, &x509); if (read_ret != 0) { return(-1); } if (outbuf) { *outbuf = x509.issuer.asn1rep; } return(x509.issuer.asn1rep_len); } ssize_t x509_to_subject(void *x509_der_buf, size_t x509_der_buf_len, void **outbuf) { struct x509_object x509; int read_ret; read_ret = asn1_x509_read_object(x509_der_buf, x509_der_buf_len, &x509); if (read_ret != 0) { return(-1); } if (outbuf) { *outbuf = x509.subject.asn1rep; } return(x509.subject.asn1rep_len); } static ssize_t x509_to_serial(void *x509_der_buf, size_t x509_der_buf_len, void **outbuf) { struct x509_object x509; int read_ret; read_ret = asn1_x509_read_object(x509_der_buf, x509_der_buf_len, &x509); if (read_ret != 0) { CACKEY_DEBUG_PRINTF("Unable to read serial number from a %lu byte buffer", (unsigned long) x509_der_buf_len); CACKEY_DEBUG_PRINTBUF("X.509 DER:", x509_der_buf, x509_der_buf_len); return(-1); } if (outbuf) { *outbuf = x509.serial_number.asn1rep; } return(x509.serial_number.asn1rep_len); } static ssize_t x509_to_pubkey(void *x509_der_buf, size_t x509_der_buf_len, void **outbuf) { struct x509_object x509; int read_ret; read_ret = asn1_x509_read_object(x509_der_buf, x509_der_buf_len, &x509); if (read_ret != 0) { return(-1); } *outbuf = x509.pubkey.contents; return(x509.pubkey.size); } static ssize_t x509_to_modulus(void *x509_der_buf, size_t x509_der_buf_len, void **outbuf) { struct asn1_object null, pubkey, modulus, exponent; struct x509_object x509; int read_ret; read_ret = asn1_x509_read_object(x509_der_buf, x509_der_buf_len, &x509); if (read_ret != 0) { return(-1); } /* The structure of "pubkey" is specified in PKCS #1 */ read_ret = asn1_x509_read_asn1_object(x509.pubkey.contents, x509.pubkey.size, &null, &pubkey, NULL); if (read_ret != 0) { return(-1); } read_ret = asn1_x509_read_asn1_object(pubkey.contents, pubkey.size, &modulus, &exponent, NULL); if (read_ret != 0) { return(-1); } if (outbuf) { *outbuf = modulus.contents; } return(modulus.size); } static ssize_t x509_to_exponent(void *x509_der_buf, size_t x509_der_buf_len, void **outbuf) { struct asn1_object null, pubkey, modulus, exponent; struct x509_object x509; int read_ret; read_ret = asn1_x509_read_object(x509_der_buf, x509_der_buf_len, &x509); if (read_ret != 0) { return(-1); } /* The structure of "pubkey" is specified in PKCS #1 */ read_ret = asn1_x509_read_asn1_object(x509.pubkey.contents, x509.pubkey.size, &null, &pubkey, NULL); if (read_ret != 0) { return(-1); } read_ret = asn1_x509_read_asn1_object(pubkey.contents, pubkey.size, &modulus, &exponent, NULL); if (read_ret != 0) { return(-1); } if (outbuf) { *outbuf = exponent.contents; } return(exponent.size); } static ssize_t x509_to_keysize(void *x509_der_buf, size_t x509_der_buf_len) { struct asn1_object null, pubkey, modulus, exponent; struct x509_object x509; int read_ret; read_ret = asn1_x509_read_object(x509_der_buf, x509_der_buf_len, &x509); if (read_ret != 0) { return(-1); } /* The structure of "pubkey" is specified in PKCS #1 */ read_ret = asn1_x509_read_asn1_object(x509.pubkey.contents, x509.pubkey.size, &null, &pubkey, NULL); if (read_ret != 0) { return(-1); } read_ret = asn1_x509_read_asn1_object(pubkey.contents, pubkey.size, &modulus, &exponent, NULL); if (read_ret != 0) { return(-1); } return(modulus.size - 1); } /* * http://www.blackberry.com/developers/docs/4.6.0api/javax/microedition/pki/Certificate.html */ static const char *_x509_objectid_to_label_string(void *buf, size_t buflen) { switch (buflen) { case 3: if (memcmp(buf, "\x55\x04\x03", 3) == 0) { return("CN"); } if (memcmp(buf, "\x55\x04\x04", 3) == 0) { return("SN"); } if (memcmp(buf, "\x55\x04\x06", 3) == 0) { return("C"); } if (memcmp(buf, "\x55\x04\x07", 3) == 0) { return("L"); } if (memcmp(buf, "\x55\x04\x08", 3) == 0) { return("ST"); } if (memcmp(buf, "\x55\x04\x09", 3) == 0) { return("STREET"); } if (memcmp(buf, "\x55\x04\x0A", 3) == 0) { return("O"); } if (memcmp(buf, "\x55\x04\x0B", 3) == 0) { return("OU"); } break; case 9: if (memcmp(buf, "\x2A\x86\x48\x86\xF7\x0D\x01\x09\x01", 9) == 0) { return("EmailAddress"); } break; } return("???"); } static ssize_t x509_dn_to_string(void *asn1_der_buf, size_t asn1_der_buf_len, char *outbuf, size_t outbuf_len, char *matchlabel) { struct asn1_object whole_thing, current_set, current_seq; struct asn1_object label, value; const char *label_str; ssize_t snprintf_ret, retval; char *outbuf_s; int read_ret; int offset; if (outbuf == NULL) { return(-1); } if (outbuf_len == 0 || asn1_der_buf_len == 0 || asn1_der_buf == NULL) { return(0); } read_ret = asn1_x509_read_asn1_object(asn1_der_buf, asn1_der_buf_len, &whole_thing, NULL); if (read_ret != 0) { return(-1); } /* Terminate string, in case no valid elements are found we still return a valid string */ *outbuf = '\0'; outbuf_s = outbuf; offset = 0; while (1) { read_ret = asn1_x509_read_asn1_object(((unsigned char *) whole_thing.contents) + offset, whole_thing.size - offset, ¤t_set, NULL); if (read_ret != 0) { break; } offset += current_set.size + 2; read_ret = asn1_x509_read_asn1_object(current_set.contents, current_set.size, ¤t_seq, NULL); if (read_ret != 0) { break; } read_ret = asn1_x509_read_asn1_object(current_seq.contents, current_seq.size, &label, &value, NULL); label_str = _x509_objectid_to_label_string(label.contents, label.size); /* If the user requested only certain labels, exclude others */ if (matchlabel) { if (strcmp(matchlabel, label_str) != 0) { continue; } } /* If the user requested only certain labels, don't include them in the reply */ if (matchlabel) { snprintf_ret = snprintf(outbuf, outbuf_len, "%.*s, ", (unsigned int) value.size, (char *) value.contents); } else { snprintf_ret = snprintf(outbuf, outbuf_len, "%s=%.*s, ", label_str, (unsigned int) value.size, (char *) value.contents); } if (snprintf_ret < 0) { break; } if (snprintf_ret > outbuf_len) { snprintf_ret = outbuf_len; } outbuf += snprintf_ret; outbuf_len -= snprintf_ret; if (outbuf_len < 2) { break; } } retval = outbuf - outbuf_s; /* Remove trailing ", " added by cumulative process, if found. */ if (retval > 2) { if (outbuf_s[retval - 2] == ',') { outbuf_s[retval - 2] = '\0'; retval -= 2; } } return(retval); } cackey-0.7.10/asn1-x509.h0000644000000000000000000000170613563537513013271 0ustar rootroot#ifndef USACEIT_ASN1_X509_H #define USACEIT_ASN1_X509_H 1 #ifdef HAVE_CONFIG_H # include "config.h" # ifdef HAVE_UNISTD_H # include # endif #else # include #endif static ssize_t x509_to_subject(void *x509_der_buf, size_t x509_der_buf_len, void **outbuf); static ssize_t x509_to_issuer(void *x509_der_buf, size_t x509_der_buf_len, void **outbuf); static ssize_t x509_to_serial(void *x509_der_buf, size_t x509_der_buf_len, void **outbuf); static ssize_t x509_to_pubkey(void *x509_der_buf, size_t x509_der_buf_len, void **outbuf); static ssize_t x509_to_modulus(void *x509_der_buf, size_t x509_der_buf_len, void **outbuf); static ssize_t x509_to_exponent(void *x509_der_buf, size_t x509_der_buf_len, void **outbuf); static ssize_t x509_to_keysize(void *x509_der_buf, size_t x509_der_buf_len); static ssize_t x509_dn_to_string(void *asn1_der_buf, size_t asn1_der_buf_len, char *outbuf, size_t outbuf_len, char *matchlabel); #endif cackey-0.7.10/autogen.sh0000755000000000000000000000061413563537513013551 0ustar rootroot#! /bin/sh rm -f aclocal.m4 rm -f libcackey_wrap.c ./build/make-libcackey_wrap > libcackey_wrap.c ${MAKE:-make} -C aclocal autoconf; autoheader rm -rf autom4te.cache/ for basefile in install-sh config.sub config.guess; do for path in /usr/share/automake-*; do file="${path}/${basefile}" if [ -f "${file}" ]; then cp "${file}" . chmod 755 "./${basefile}" break fi done done cackey-0.7.10/build/0000755000000000000000000000000013563537513012646 5ustar rootrootcackey-0.7.10/build/cackey_win32_build/0000755000000000000000000000000013563537513016306 5ustar rootrootcackey-0.7.10/build/cackey_win32_build/build.sh0000755000000000000000000000044113563537513017743 0ustar rootroot#! /bin/bash make distclean ./configure --with-pcsc-headers="$(pwd)/build/cackey_win32_build/include" --with-pcsc-libs="-L$(pwd)/build/cackey_win32_build/lib -lwinscard" --host=i586-mingw32msvc CPPFLAGS="-I$(pwd)/build/cackey_win32_build/include" "$@" || exit 1 make || exit 1 exit 0 cackey-0.7.10/build/cackey_win32_build/include/0000755000000000000000000000000013563537513017731 5ustar rootrootcackey-0.7.10/build/cackey_win32_build/include/pcsclite.h0000644000000000000000000000006013563537513021704 0ustar rootroot#define _WIN32_WINNT 0x500 #include cackey-0.7.10/build/cackey_win32_build/include/pthread.h0000644000000000000000000000510113563537513021526 0ustar rootroot/* Thread_emulation.h */ /* Author: Johnson M. Hart */ /* Emulate the Pthreads model for the Win32 platform */ /* The emulation is not complete, but it does provide a subset */ /* required for a first project */ /* Source: http://world.std.com/~jmhart/opensource.htm */ /* The emulation is not complete, but it does provide a subset */ /* that will work with many well-behaved programs */ /* IF YOU ARE REALLY SERIOUS ABOUT THIS, USE THE OPEN SOURCE */ /* PTHREAD LIBRARY. YOU'LL FIND IT ON THE RED HAT SITE */ #ifndef _THREAD_EMULATION # define _THREAD_EMULATION /* Thread management macros */ # ifdef _WIN32 # define _WIN32_WINNT 0x500 /* WINBASE.H - Enable SignalObjectAndWait */ # include # include # define THREAD_FUNCTION_PROTO THREAD_FUNCTION_RETURN (__stdcall *) (void *) # define THREAD_FUNCTION_RETURN unsigned int # define THREAD_SPECIFIC_INDEX DWORD # define pthread_t HANDLE # define pthread_attr_t DWORD # define pthread_create(thhandle, attr, thfunc, tharg) ((int) ((*thhandle = (HANDLE) _beginthreadex(NULL, 0, (THREAD_FUNCTION_PROTO) thfunc, tharg, 0, NULL)) == NULL)) # define pthread_join(thread, result) ((WaitForSingleObject((thread), INFINITE) != WAIT_OBJECT_0) || !CloseHandle(thread)) # define pthread_detach(thread) { if (((void *) thread) != NULL) { CloseHandle((void *) thread); }} # define thread_sleep(nms) Sleep(nms) # define pthread_cancel(thread) TerminateThread(thread, 0) # define ts_key_create(ts_key, destructor) {ts_key = TlsAlloc();} # define pthread_getspecific(ts_key) TlsGetValue(ts_key) # define pthread_setspecific(ts_key, value) TlsSetValue(ts_key, (void *)value) # define pthread_self() GetCurrentThreadId() # else # include # define THREAD_FUNCTION_RETURN void * # endif /* Syncrhronization macros: Win32->pthread */ # ifdef _WIN32 # define pthread_mutex_t HANDLE # define pthread_cond_t HANDLE # define pthread_mutex_lock(pobject) WaitForSingleObject(*pobject, INFINITE) # define pthread_mutex_unlock(pobject) (!ReleaseMutex(*pobject)) # define pthread_mutex_init(pobject,pattr) ((*pobject=CreateMutex(NULL, FALSE, NULL)) == NULL) # define pthread_cond_init(pobject,pattr) (*pobject=CreateEvent(NULL, FALSE, FALSE, NULL)) # define pthread_mutex_destroy(pobject) CloseHandle(*pobject) # define pthread_cond_destroy(pobject) CloseHandle(*pobject) # define pthread_cond_wait(pcv,pmutex) { SignalObjectAndWait(*pmutex, *pcv, INFINITE, FALSE); WaitForSingleObject(*pmutex, INFINITE); } # define pthread_cond_signal(pcv) SetEvent(*pcv) # endif #endif cackey-0.7.10/build/cackey_win32_build/include/zconf.h0000644000000000000000000003616013563537513021227 0ustar rootroot/* zconf.h -- configuration of the zlib compression library * Copyright (C) 1995-2013 Jean-loup Gailly. * For conditions of distribution and use, see copyright notice in zlib.h */ /* @(#) $Id$ */ #ifndef ZCONF_H #define ZCONF_H /* * If you *really* need a unique prefix for all types and library functions, * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. * Even better than compiling with -DZ_PREFIX would be to use configure to set * this permanently in zconf.h using "./configure --zprefix". */ #ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ # define Z_PREFIX_SET /* all linked symbols */ # define _dist_code z__dist_code # define _length_code z__length_code # define _tr_align z__tr_align # define _tr_flush_bits z__tr_flush_bits # define _tr_flush_block z__tr_flush_block # define _tr_init z__tr_init # define _tr_stored_block z__tr_stored_block # define _tr_tally z__tr_tally # define adler32 z_adler32 # define adler32_combine z_adler32_combine # define adler32_combine64 z_adler32_combine64 # ifndef Z_SOLO # define compress z_compress # define compress2 z_compress2 # define compressBound z_compressBound # endif # define crc32 z_crc32 # define crc32_combine z_crc32_combine # define crc32_combine64 z_crc32_combine64 # define deflate z_deflate # define deflateBound z_deflateBound # define deflateCopy z_deflateCopy # define deflateEnd z_deflateEnd # define deflateInit2_ z_deflateInit2_ # define deflateInit_ z_deflateInit_ # define deflateParams z_deflateParams # define deflatePending z_deflatePending # define deflatePrime z_deflatePrime # define deflateReset z_deflateReset # define deflateResetKeep z_deflateResetKeep # define deflateSetDictionary z_deflateSetDictionary # define deflateSetHeader z_deflateSetHeader # define deflateTune z_deflateTune # define deflate_copyright z_deflate_copyright # define get_crc_table z_get_crc_table # ifndef Z_SOLO # define gz_error z_gz_error # define gz_intmax z_gz_intmax # define gz_strwinerror z_gz_strwinerror # define gzbuffer z_gzbuffer # define gzclearerr z_gzclearerr # define gzclose z_gzclose # define gzclose_r z_gzclose_r # define gzclose_w z_gzclose_w # define gzdirect z_gzdirect # define gzdopen z_gzdopen # define gzeof z_gzeof # define gzerror z_gzerror # define gzflush z_gzflush # define gzgetc z_gzgetc # define gzgetc_ z_gzgetc_ # define gzgets z_gzgets # define gzoffset z_gzoffset # define gzoffset64 z_gzoffset64 # define gzopen z_gzopen # define gzopen64 z_gzopen64 # ifdef _WIN32 # define gzopen_w z_gzopen_w # endif # define gzprintf z_gzprintf # define gzvprintf z_gzvprintf # define gzputc z_gzputc # define gzputs z_gzputs # define gzread z_gzread # define gzrewind z_gzrewind # define gzseek z_gzseek # define gzseek64 z_gzseek64 # define gzsetparams z_gzsetparams # define gztell z_gztell # define gztell64 z_gztell64 # define gzungetc z_gzungetc # define gzwrite z_gzwrite # endif # define inflate z_inflate # define inflateBack z_inflateBack # define inflateBackEnd z_inflateBackEnd # define inflateBackInit_ z_inflateBackInit_ # define inflateCopy z_inflateCopy # define inflateEnd z_inflateEnd # define inflateGetHeader z_inflateGetHeader # define inflateInit2_ z_inflateInit2_ # define inflateInit_ z_inflateInit_ # define inflateMark z_inflateMark # define inflatePrime z_inflatePrime # define inflateReset z_inflateReset # define inflateReset2 z_inflateReset2 # define inflateSetDictionary z_inflateSetDictionary # define inflateGetDictionary z_inflateGetDictionary # define inflateSync z_inflateSync # define inflateSyncPoint z_inflateSyncPoint # define inflateUndermine z_inflateUndermine # define inflateResetKeep z_inflateResetKeep # define inflate_copyright z_inflate_copyright # define inflate_fast z_inflate_fast # define inflate_table z_inflate_table # ifndef Z_SOLO # define uncompress z_uncompress # endif # define zError z_zError # ifndef Z_SOLO # define zcalloc z_zcalloc # define zcfree z_zcfree # endif # define zlibCompileFlags z_zlibCompileFlags # define zlibVersion z_zlibVersion /* all zlib typedefs in zlib.h and zconf.h */ # define Byte z_Byte # define Bytef z_Bytef # define alloc_func z_alloc_func # define charf z_charf # define free_func z_free_func # ifndef Z_SOLO # define gzFile z_gzFile # endif # define gz_header z_gz_header # define gz_headerp z_gz_headerp # define in_func z_in_func # define intf z_intf # define out_func z_out_func # define uInt z_uInt # define uIntf z_uIntf # define uLong z_uLong # define uLongf z_uLongf # define voidp z_voidp # define voidpc z_voidpc # define voidpf z_voidpf /* all zlib structs in zlib.h and zconf.h */ # define gz_header_s z_gz_header_s # define internal_state z_internal_state #endif #if defined(__MSDOS__) && !defined(MSDOS) # define MSDOS #endif #if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) # define OS2 #endif #if defined(_WINDOWS) && !defined(WINDOWS) # define WINDOWS #endif #if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) # ifndef WIN32 # define WIN32 # endif #endif #if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) # if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) # ifndef SYS16BIT # define SYS16BIT # endif # endif #endif /* * Compile with -DMAXSEG_64K if the alloc function cannot allocate more * than 64k bytes at a time (needed on systems with 16-bit int). */ #ifdef SYS16BIT # define MAXSEG_64K #endif #ifdef MSDOS # define UNALIGNED_OK #endif #ifdef __STDC_VERSION__ # ifndef STDC # define STDC # endif # if __STDC_VERSION__ >= 199901L # ifndef STDC99 # define STDC99 # endif # endif #endif #if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) # define STDC #endif #if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) # define STDC #endif #if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) # define STDC #endif #if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) # define STDC #endif #if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ # define STDC #endif #ifndef STDC # ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ # define const /* note: need a more gentle solution here */ # endif #endif #if defined(ZLIB_CONST) && !defined(z_const) # define z_const const #else # define z_const #endif /* Some Mac compilers merge all .h files incorrectly: */ #if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) # define NO_DUMMY_DECL #endif /* Maximum value for memLevel in deflateInit2 */ #ifndef MAX_MEM_LEVEL # ifdef MAXSEG_64K # define MAX_MEM_LEVEL 8 # else # define MAX_MEM_LEVEL 9 # endif #endif /* Maximum value for windowBits in deflateInit2 and inflateInit2. * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files * created by gzip. (Files created by minigzip can still be extracted by * gzip.) */ #ifndef MAX_WBITS # define MAX_WBITS 15 /* 32K LZ77 window */ #endif /* The memory requirements for deflate are (in bytes): (1 << (windowBits+2)) + (1 << (memLevel+9)) that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) plus a few kilobytes for small objects. For example, if you want to reduce the default memory requirements from 256K to 128K, compile with make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" Of course this will generally degrade compression (there's no free lunch). The memory requirements for inflate are (in bytes) 1 << windowBits that is, 32K for windowBits=15 (default value) plus a few kilobytes for small objects. */ /* Type declarations */ #ifndef OF /* function prototypes */ # ifdef STDC # define OF(args) args # else # define OF(args) () # endif #endif #ifndef Z_ARG /* function prototypes for stdarg */ # if defined(STDC) || defined(Z_HAVE_STDARG_H) # define Z_ARG(args) args # else # define Z_ARG(args) () # endif #endif /* The following definitions for FAR are needed only for MSDOS mixed * model programming (small or medium model with some far allocations). * This was tested only with MSC; for other MSDOS compilers you may have * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, * just define FAR to be empty. */ #ifdef SYS16BIT # if defined(M_I86SM) || defined(M_I86MM) /* MSC small or medium model */ # define SMALL_MEDIUM # ifdef _MSC_VER # define FAR _far # else # define FAR far # endif # endif # if (defined(__SMALL__) || defined(__MEDIUM__)) /* Turbo C small or medium model */ # define SMALL_MEDIUM # ifdef __BORLANDC__ # define FAR _far # else # define FAR far # endif # endif #endif #if defined(WINDOWS) || defined(WIN32) /* If building or using zlib as a DLL, define ZLIB_DLL. * This is not mandatory, but it offers a little performance increase. */ # ifdef ZLIB_DLL # if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) # ifdef ZLIB_INTERNAL # define ZEXTERN extern __declspec(dllexport) # else # define ZEXTERN extern __declspec(dllimport) # endif # endif # endif /* ZLIB_DLL */ /* If building or using zlib with the WINAPI/WINAPIV calling convention, * define ZLIB_WINAPI. * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. */ # ifdef ZLIB_WINAPI # ifdef FAR # undef FAR # endif # include /* No need for _export, use ZLIB.DEF instead. */ /* For complete Windows compatibility, use WINAPI, not __stdcall. */ # define ZEXPORT WINAPI # ifdef WIN32 # define ZEXPORTVA WINAPIV # else # define ZEXPORTVA FAR CDECL # endif # endif #endif #if defined (__BEOS__) # ifdef ZLIB_DLL # ifdef ZLIB_INTERNAL # define ZEXPORT __declspec(dllexport) # define ZEXPORTVA __declspec(dllexport) # else # define ZEXPORT __declspec(dllimport) # define ZEXPORTVA __declspec(dllimport) # endif # endif #endif #ifndef ZEXTERN # define ZEXTERN extern #endif #ifndef ZEXPORT # define ZEXPORT #endif #ifndef ZEXPORTVA # define ZEXPORTVA #endif #ifndef FAR # define FAR #endif #if !defined(__MACTYPES__) typedef unsigned char Byte; /* 8 bits */ #endif typedef unsigned int uInt; /* 16 bits or more */ typedef unsigned long uLong; /* 32 bits or more */ #ifdef SMALL_MEDIUM /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ # define Bytef Byte FAR #else typedef Byte FAR Bytef; #endif typedef char FAR charf; typedef int FAR intf; typedef uInt FAR uIntf; typedef uLong FAR uLongf; #ifdef STDC typedef void const *voidpc; typedef void FAR *voidpf; typedef void *voidp; #else typedef Byte const *voidpc; typedef Byte FAR *voidpf; typedef Byte *voidp; #endif #if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) # include # if (UINT_MAX == 0xffffffffUL) # define Z_U4 unsigned # elif (ULONG_MAX == 0xffffffffUL) # define Z_U4 unsigned long # elif (USHRT_MAX == 0xffffffffUL) # define Z_U4 unsigned short # endif #endif #ifdef Z_U4 typedef Z_U4 z_crc_t; #else typedef unsigned long z_crc_t; #endif #if 1 /* was set to #if 1 by ./configure */ # define Z_HAVE_UNISTD_H #endif #if 1 /* was set to #if 1 by ./configure */ # define Z_HAVE_STDARG_H #endif #ifdef STDC # ifndef Z_SOLO # include /* for off_t */ # endif #endif #if defined(STDC) || defined(Z_HAVE_STDARG_H) # ifndef Z_SOLO # include /* for va_list */ # endif #endif #ifdef _WIN32 # ifndef Z_SOLO # include /* for wchar_t */ # endif #endif /* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even * though the former does not conform to the LFS document), but considering * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as * equivalently requesting no 64-bit operations */ #if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 # undef _LARGEFILE64_SOURCE #endif #if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) # define Z_HAVE_UNISTD_H #endif #ifndef Z_SOLO # if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) # include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ # ifdef VMS # include /* for off_t */ # endif # ifndef z_off_t # define z_off_t off_t # endif # endif #endif #if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 # define Z_LFS64 #endif #if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) # define Z_LARGE64 #endif #if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) # define Z_WANT64 #endif #if !defined(SEEK_SET) && !defined(Z_SOLO) # define SEEK_SET 0 /* Seek from beginning of file. */ # define SEEK_CUR 1 /* Seek from current position. */ # define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ #endif #ifndef z_off_t # define z_off_t long #endif #if !defined(_WIN32) && defined(Z_LARGE64) # define z_off64_t off64_t #else # if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) # define z_off64_t __int64 # else # define z_off64_t z_off_t # endif #endif /* MVS linker does not support external names larger than 8 bytes */ #if defined(__MVS__) #pragma map(deflateInit_,"DEIN") #pragma map(deflateInit2_,"DEIN2") #pragma map(deflateEnd,"DEEND") #pragma map(deflateBound,"DEBND") #pragma map(inflateInit_,"ININ") #pragma map(inflateInit2_,"ININ2") #pragma map(inflateEnd,"INEND") #pragma map(inflateSync,"INSY") #pragma map(inflateSetDictionary,"INSEDI") #pragma map(compressBound,"CMBND") #pragma map(inflate_table,"INTABL") #pragma map(inflate_fast,"INFA") #pragma map(inflate_copyright,"INCOPY") #endif #endif /* ZCONF_H */ cackey-0.7.10/build/cackey_win32_build/include/zlib.h0000644000000000000000000025351313563537513021053 0ustar rootroot/* zlib.h -- interface of the 'zlib' general purpose compression library version 1.2.8, April 28th, 2013 Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. Jean-loup Gailly Mark Adler jloup@gzip.org madler@alumni.caltech.edu The data format used by the zlib library is described by RFCs (Request for Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). */ #ifndef ZLIB_H #define ZLIB_H #include "zconf.h" #ifdef __cplusplus extern "C" { #endif #define ZLIB_VERSION "1.2.8" #define ZLIB_VERNUM 0x1280 #define ZLIB_VER_MAJOR 1 #define ZLIB_VER_MINOR 2 #define ZLIB_VER_REVISION 8 #define ZLIB_VER_SUBREVISION 0 /* The 'zlib' compression library provides in-memory compression and decompression functions, including integrity checks of the uncompressed data. This version of the library supports only one compression method (deflation) but other algorithms will be added later and will have the same stream interface. Compression can be done in a single step if the buffers are large enough, or can be done by repeated calls of the compression function. In the latter case, the application must provide more input and/or consume the output (providing more output space) before each call. The compressed data format used by default by the in-memory functions is the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped around a deflate stream, which is itself documented in RFC 1951. The library also supports reading and writing files in gzip (.gz) format with an interface similar to that of stdio using the functions that start with "gz". The gzip format is different from the zlib format. gzip is a gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. This library can optionally read and write gzip streams in memory as well. The zlib format was designed to be compact and fast for use in memory and on communications channels. The gzip format was designed for single- file compression on file systems, has a larger header than zlib to maintain directory information, and uses a different, slower check method than zlib. The library does not install any signal handler. The decoder checks the consistency of the compressed data, so the library should never crash even in case of corrupted input. */ typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); typedef void (*free_func) OF((voidpf opaque, voidpf address)); struct internal_state; typedef struct z_stream_s { z_const Bytef *next_in; /* next input byte */ uInt avail_in; /* number of bytes available at next_in */ uLong total_in; /* total number of input bytes read so far */ Bytef *next_out; /* next output byte should be put there */ uInt avail_out; /* remaining free space at next_out */ uLong total_out; /* total number of bytes output so far */ z_const char *msg; /* last error message, NULL if no error */ struct internal_state FAR *state; /* not visible by applications */ alloc_func zalloc; /* used to allocate the internal state */ free_func zfree; /* used to free the internal state */ voidpf opaque; /* private data object passed to zalloc and zfree */ int data_type; /* best guess about the data type: binary or text */ uLong adler; /* adler32 value of the uncompressed data */ uLong reserved; /* reserved for future use */ } z_stream; typedef z_stream FAR *z_streamp; /* gzip header information passed to and from zlib routines. See RFC 1952 for more details on the meanings of these fields. */ typedef struct gz_header_s { int text; /* true if compressed data believed to be text */ uLong time; /* modification time */ int xflags; /* extra flags (not used when writing a gzip file) */ int os; /* operating system */ Bytef *extra; /* pointer to extra field or Z_NULL if none */ uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ uInt extra_max; /* space at extra (only when reading header) */ Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ uInt name_max; /* space at name (only when reading header) */ Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ uInt comm_max; /* space at comment (only when reading header) */ int hcrc; /* true if there was or will be a header crc */ int done; /* true when done reading gzip header (not used when writing a gzip file) */ } gz_header; typedef gz_header FAR *gz_headerp; /* The application must update next_in and avail_in when avail_in has dropped to zero. It must update next_out and avail_out when avail_out has dropped to zero. The application must initialize zalloc, zfree and opaque before calling the init function. All other fields are set by the compression library and must not be updated by the application. The opaque value provided by the application will be passed as the first parameter for calls of zalloc and zfree. This can be useful for custom memory management. The compression library attaches no meaning to the opaque value. zalloc must return Z_NULL if there is not enough memory for the object. If zlib is used in a multi-threaded application, zalloc and zfree must be thread safe. On 16-bit systems, the functions zalloc and zfree must be able to allocate exactly 65536 bytes, but will not be required to allocate more than this if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers returned by zalloc for objects of exactly 65536 bytes *must* have their offset normalized to zero. The default allocation function provided by this library ensures this (see zutil.c). To reduce memory requirements and avoid any allocation of 64K objects, at the expense of compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h). The fields total_in and total_out can be used for statistics or progress reports. After compression, total_in holds the total size of the uncompressed data and may be saved for use in the decompressor (particularly if the decompressor wants to decompress everything in a single step). */ /* constants */ #define Z_NO_FLUSH 0 #define Z_PARTIAL_FLUSH 1 #define Z_SYNC_FLUSH 2 #define Z_FULL_FLUSH 3 #define Z_FINISH 4 #define Z_BLOCK 5 #define Z_TREES 6 /* Allowed flush values; see deflate() and inflate() below for details */ #define Z_OK 0 #define Z_STREAM_END 1 #define Z_NEED_DICT 2 #define Z_ERRNO (-1) #define Z_STREAM_ERROR (-2) #define Z_DATA_ERROR (-3) #define Z_MEM_ERROR (-4) #define Z_BUF_ERROR (-5) #define Z_VERSION_ERROR (-6) /* Return codes for the compression/decompression functions. Negative values * are errors, positive values are used for special but normal events. */ #define Z_NO_COMPRESSION 0 #define Z_BEST_SPEED 1 #define Z_BEST_COMPRESSION 9 #define Z_DEFAULT_COMPRESSION (-1) /* compression levels */ #define Z_FILTERED 1 #define Z_HUFFMAN_ONLY 2 #define Z_RLE 3 #define Z_FIXED 4 #define Z_DEFAULT_STRATEGY 0 /* compression strategy; see deflateInit2() below for details */ #define Z_BINARY 0 #define Z_TEXT 1 #define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ #define Z_UNKNOWN 2 /* Possible values of the data_type field (though see inflate()) */ #define Z_DEFLATED 8 /* The deflate compression method (the only one supported in this version) */ #define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ #define zlib_version zlibVersion() /* for compatibility with versions < 1.0.2 */ /* basic functions */ ZEXTERN const char * ZEXPORT zlibVersion OF((void)); /* The application can compare zlibVersion and ZLIB_VERSION for consistency. If the first character differs, the library code actually used is not compatible with the zlib.h header file used by the application. This check is automatically made by deflateInit and inflateInit. */ /* ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); Initializes the internal stream state for compression. The fields zalloc, zfree and opaque must be initialized before by the caller. If zalloc and zfree are set to Z_NULL, deflateInit updates them to use default allocation functions. The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: 1 gives best speed, 9 gives best compression, 0 gives no compression at all (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION requests a default compromise between speed and compression (currently equivalent to level 6). deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_STREAM_ERROR if level is not a valid compression level, or Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible with the version assumed by the caller (ZLIB_VERSION). msg is set to null if there is no error message. deflateInit does not perform any compression: this will be done by deflate(). */ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); /* deflate compresses as much data as possible, and stops when the input buffer becomes empty or the output buffer becomes full. It may introduce some output latency (reading input without producing any output) except when forced to flush. The detailed semantics are as follows. deflate performs one or both of the following actions: - Compress more input starting at next_in and update next_in and avail_in accordingly. If not all input can be processed (because there is not enough room in the output buffer), next_in and avail_in are updated and processing will resume at this point for the next call of deflate(). - Provide more output starting at next_out and update next_out and avail_out accordingly. This action is forced if the parameter flush is non zero. Forcing flush frequently degrades the compression ratio, so this parameter should be set only when necessary (in interactive applications). Some output may be provided even if flush is not set. Before the call of deflate(), the application should ensure that at least one of the actions is possible, by providing more input and/or consuming more output, and updating avail_in or avail_out accordingly; avail_out should never be zero before the call. The application can consume the compressed output when it wants, for example when the output buffer is full (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK and with zero avail_out, it must be called again after making room in the output buffer because there might be more output pending. Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to decide how much data to accumulate before producing output, in order to maximize compression. If the parameter flush is set to Z_SYNC_FLUSH, all pending output is flushed to the output buffer and the output is aligned on a byte boundary, so that the decompressor can get all input data available so far. (In particular avail_in is zero after the call if enough output space has been provided before the call.) Flushing may degrade compression for some compression algorithms and so it should be used only when necessary. This completes the current deflate block and follows it with an empty stored block that is three bits plus filler bits to the next byte, followed by four bytes (00 00 ff ff). If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the output buffer, but the output is not aligned to a byte boundary. All of the input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. This completes the current deflate block and follows it with an empty fixed codes block that is 10 bits long. This assures that enough bytes are output in order for the decompressor to finish the block before the empty fixed code block. If flush is set to Z_BLOCK, a deflate block is completed and emitted, as for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to seven bits of the current block are held to be written as the next byte after the next deflate block is completed. In this case, the decompressor may not be provided enough bits at this point in order to complete decompression of the data provided so far to the compressor. It may need to wait for the next block to be emitted. This is for advanced applications that need to control the emission of deflate blocks. If flush is set to Z_FULL_FLUSH, all output is flushed as with Z_SYNC_FLUSH, and the compression state is reset so that decompression can restart from this point if previous compressed data has been damaged or if random access is desired. Using Z_FULL_FLUSH too often can seriously degrade compression. If deflate returns with avail_out == 0, this function must be called again with the same value of the flush parameter and more output space (updated avail_out), until the flush is complete (deflate returns with non-zero avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that avail_out is greater than six to avoid repeated flush markers due to avail_out == 0 on return. If the parameter flush is set to Z_FINISH, pending input is processed, pending output is flushed and deflate returns with Z_STREAM_END if there was enough output space; if deflate returns with Z_OK, this function must be called again with Z_FINISH and more output space (updated avail_out) but no more input data, until it returns with Z_STREAM_END or an error. After deflate has returned Z_STREAM_END, the only possible operations on the stream are deflateReset or deflateEnd. Z_FINISH can be used immediately after deflateInit if all the compression is to be done in a single step. In this case, avail_out must be at least the value returned by deflateBound (see below). Then deflate is guaranteed to return Z_STREAM_END. If not enough output space is provided, deflate will not return Z_STREAM_END, and it must be called again as described above. deflate() sets strm->adler to the adler32 checksum of all input read so far (that is, total_in bytes). deflate() may update strm->data_type if it can make a good guess about the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered binary. This field is only for information purposes and does not affect the compression algorithm in any manner. deflate() returns Z_OK if some progress has been made (more input processed or more output produced), Z_STREAM_END if all input has been consumed and all output has been produced (only when flush is set to Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not fatal, and deflate() can be called again with more input and more output space to continue compressing. */ ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); /* All dynamically allocated data structures for this stream are freed. This function discards any unprocessed input and does not flush any pending output. deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state was inconsistent, Z_DATA_ERROR if the stream was freed prematurely (some input or output was discarded). In the error case, msg may be set but then points to a static string (which must not be deallocated). */ /* ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); Initializes the internal stream state for decompression. The fields next_in, avail_in, zalloc, zfree and opaque must be initialized before by the caller. If next_in is not Z_NULL and avail_in is large enough (the exact value depends on the compression method), inflateInit determines the compression method from the zlib header and allocates all data structures accordingly; otherwise the allocation will be deferred to the first call of inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to use default allocation functions. inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_VERSION_ERROR if the zlib library version is incompatible with the version assumed by the caller, or Z_STREAM_ERROR if the parameters are invalid, such as a null pointer to the structure. msg is set to null if there is no error message. inflateInit does not perform any decompression apart from possibly reading the zlib header if present: actual decompression will be done by inflate(). (So next_in and avail_in may be modified, but next_out and avail_out are unused and unchanged.) The current implementation of inflateInit() does not process any header information -- that is deferred until inflate() is called. */ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); /* inflate decompresses as much data as possible, and stops when the input buffer becomes empty or the output buffer becomes full. It may introduce some output latency (reading input without producing any output) except when forced to flush. The detailed semantics are as follows. inflate performs one or both of the following actions: - Decompress more input starting at next_in and update next_in and avail_in accordingly. If not all input can be processed (because there is not enough room in the output buffer), next_in is updated and processing will resume at this point for the next call of inflate(). - Provide more output starting at next_out and update next_out and avail_out accordingly. inflate() provides as much output as possible, until there is no more input data or no more space in the output buffer (see below about the flush parameter). Before the call of inflate(), the application should ensure that at least one of the actions is possible, by providing more input and/or consuming more output, and updating the next_* and avail_* values accordingly. The application can consume the uncompressed output when it wants, for example when the output buffer is full (avail_out == 0), or after each call of inflate(). If inflate returns Z_OK and with zero avail_out, it must be called again after making room in the output buffer because there might be more output pending. The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much output as possible to the output buffer. Z_BLOCK requests that inflate() stop if and when it gets to the next deflate block boundary. When decoding the zlib or gzip format, this will cause inflate() to return immediately after the header and before the first block. When doing a raw inflate, inflate() will go ahead and process the first block, and will return when it gets to the end of that block, or when it runs out of data. The Z_BLOCK option assists in appending to or combining deflate streams. Also to assist in this, on return inflate() will set strm->data_type to the number of unused bits in the last byte taken from strm->next_in, plus 64 if inflate() is currently decoding the last block in the deflate stream, plus 128 if inflate() returned immediately after decoding an end-of-block code or decoding the complete header up to just before the first byte of the deflate stream. The end-of-block will not be indicated until all of the uncompressed data from that block has been written to strm->next_out. The number of unused bits may in general be greater than seven, except when bit 7 of data_type is set, in which case the number of unused bits will be less than eight. data_type is set as noted here every time inflate() returns for all flush options, and so can be used to determine the amount of currently consumed input in bits. The Z_TREES option behaves as Z_BLOCK does, but it also returns when the end of each deflate block header is reached, before any actual data in that block is decoded. This allows the caller to determine the length of the deflate block header for later use in random access within a deflate block. 256 is added to the value of strm->data_type when inflate() returns immediately after reaching the end of the deflate block header. inflate() should normally be called until it returns Z_STREAM_END or an error. However if all decompression is to be performed in a single step (a single call of inflate), the parameter flush should be set to Z_FINISH. In this case all pending input is processed and all pending output is flushed; avail_out must be large enough to hold all of the uncompressed data for the operation to complete. (The size of the uncompressed data may have been saved by the compressor for this purpose.) The use of Z_FINISH is not required to perform an inflation in one step. However it may be used to inform inflate that a faster approach can be used for the single inflate() call. Z_FINISH also informs inflate to not maintain a sliding window if the stream completes, which reduces inflate's memory footprint. If the stream does not complete, either because not all of the stream is provided or not enough output space is provided, then a sliding window will be allocated and inflate() can be called again to continue the operation as if Z_NO_FLUSH had been used. In this implementation, inflate() always flushes as much output as possible to the output buffer, and always uses the faster approach on the first call. So the effects of the flush parameter in this implementation are on the return value of inflate() as noted below, when inflate() returns early when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of memory for a sliding window when Z_FINISH is used. If a preset dictionary is needed after this call (see inflateSetDictionary below), inflate sets strm->adler to the Adler-32 checksum of the dictionary chosen by the compressor and returns Z_NEED_DICT; otherwise it sets strm->adler to the Adler-32 checksum of all output produced so far (that is, total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described below. At the end of the stream, inflate() checks that its computed adler32 checksum is equal to that saved by the compressor and returns Z_STREAM_END only if the checksum is correct. inflate() can decompress and check either zlib-wrapped or gzip-wrapped deflate data. The header type is detected automatically, if requested when initializing with inflateInit2(). Any information contained in the gzip header is not retained, so applications that need that information should instead use raw inflate, see inflateInit2() below, or inflateBack() and perform their own processing of the gzip header and trailer. When processing gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output producted so far. The CRC-32 is checked against the gzip trailer. inflate() returns Z_OK if some progress has been made (more input processed or more output produced), Z_STREAM_END if the end of the compressed data has been reached and all uncompressed output has been produced, Z_NEED_DICT if a preset dictionary is needed at this point, Z_DATA_ERROR if the input data was corrupted (input stream not conforming to the zlib format or incorrect check value), Z_STREAM_ERROR if the stream structure was inconsistent (for example next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if no progress is possible or if there was not enough room in the output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and inflate() can be called again with more input and more output space to continue decompressing. If Z_DATA_ERROR is returned, the application may then call inflateSync() to look for a good compression block if a partial recovery of the data is desired. */ ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); /* All dynamically allocated data structures for this stream are freed. This function discards any unprocessed input and does not flush any pending output. inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state was inconsistent. In the error case, msg may be set but then points to a static string (which must not be deallocated). */ /* Advanced functions */ /* The following functions are needed only in some special applications. */ /* ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, int level, int method, int windowBits, int memLevel, int strategy)); This is another version of deflateInit with more compression options. The fields next_in, zalloc, zfree and opaque must be initialized before by the caller. The method parameter is the compression method. It must be Z_DEFLATED in this version of the library. The windowBits parameter is the base two logarithm of the window size (the size of the history buffer). It should be in the range 8..15 for this version of the library. Larger values of this parameter result in better compression at the expense of memory usage. The default value is 15 if deflateInit is used instead. windowBits can also be -8..-15 for raw deflate. In this case, -windowBits determines the window size. deflate() will then generate raw deflate data with no zlib header or trailer, and will not compute an adler32 check value. windowBits can also be greater than 15 for optional gzip encoding. Add 16 to windowBits to write a simple gzip header and trailer around the compressed data instead of a zlib wrapper. The gzip header will have no file name, no extra data, no comment, no modification time (set to zero), no header crc, and the operating system will be set to 255 (unknown). If a gzip stream is being written, strm->adler is a crc32 instead of an adler32. The memLevel parameter specifies how much memory should be allocated for the internal compression state. memLevel=1 uses minimum memory but is slow and reduces compression ratio; memLevel=9 uses maximum memory for optimal speed. The default value is 8. See zconf.h for total memory usage as a function of windowBits and memLevel. The strategy parameter is used to tune the compression algorithm. Use the value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no string match), or Z_RLE to limit match distances to one (run-length encoding). Filtered data consists mostly of small values with a somewhat random distribution. In this case, the compression algorithm is tuned to compress them better. The effect of Z_FILTERED is to force more Huffman coding and less string matching; it is somewhat intermediate between Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy parameter only affects the compression ratio but not the correctness of the compressed output even if it is not set appropriately. Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler decoder for special applications. deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible with the version assumed by the caller (ZLIB_VERSION). msg is set to null if there is no error message. deflateInit2 does not perform any compression: this will be done by deflate(). */ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, const Bytef *dictionary, uInt dictLength)); /* Initializes the compression dictionary from the given byte sequence without producing any compressed output. When using the zlib format, this function must be called immediately after deflateInit, deflateInit2 or deflateReset, and before any call of deflate. When doing raw deflate, this function must be called either before any call of deflate, or immediately after the completion of a deflate block, i.e. after all input has been consumed and all output has been delivered when using any of the flush options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The compressor and decompressor must use exactly the same dictionary (see inflateSetDictionary). The dictionary should consist of strings (byte sequences) that are likely to be encountered later in the data to be compressed, with the most commonly used strings preferably put towards the end of the dictionary. Using a dictionary is most useful when the data to be compressed is short and can be predicted with good accuracy; the data can then be compressed better than with the default empty dictionary. Depending on the size of the compression data structures selected by deflateInit or deflateInit2, a part of the dictionary may in effect be discarded, for example if the dictionary is larger than the window size provided in deflateInit or deflateInit2. Thus the strings most likely to be useful should be put at the end of the dictionary, not at the front. In addition, the current implementation of deflate will use at most the window size minus 262 bytes of the provided dictionary. Upon return of this function, strm->adler is set to the adler32 value of the dictionary; the decompressor may later use this value to determine which dictionary has been used by the compressor. (The adler32 value applies to the whole dictionary even if only a subset of the dictionary is actually used by the compressor.) If a raw deflate was requested, then the adler32 value is not computed and strm->adler is not set. deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is inconsistent (for example if deflate has already been called for this stream or if not at a block boundary for raw deflate). deflateSetDictionary does not perform any compression: this will be done by deflate(). */ ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, z_streamp source)); /* Sets the destination stream as a complete copy of the source stream. This function can be useful when several compression strategies will be tried, for example when there are several ways of pre-processing the input data with a filter. The streams that will be discarded should then be freed by calling deflateEnd. Note that deflateCopy duplicates the internal compression state which can be quite large, so this strategy is slow and can consume lots of memory. deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_STREAM_ERROR if the source stream state was inconsistent (such as zalloc being Z_NULL). msg is left unchanged in both source and destination. */ ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); /* This function is equivalent to deflateEnd followed by deflateInit, but does not free and reallocate all the internal compression state. The stream will keep the same compression level and any other attributes that may have been set by deflateInit2. deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent (such as zalloc or state being Z_NULL). */ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, int level, int strategy)); /* Dynamically update the compression level and compression strategy. The interpretation of level and strategy is as in deflateInit2. This can be used to switch between compression and straight copy of the input data, or to switch to a different kind of input data requiring a different strategy. If the compression level is changed, the input available so far is compressed with the old level (and may be flushed); the new level will take effect only at the next call of deflate(). Before the call of deflateParams, the stream state must be set as for a call of deflate(), since the currently available input may have to be compressed and flushed. In particular, strm->avail_out must be non-zero. deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if strm->avail_out was zero. */ ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, int good_length, int max_lazy, int nice_length, int max_chain)); /* Fine tune deflate's internal compression parameters. This should only be used by someone who understands the algorithm used by zlib's deflate for searching for the best matching string, and even then only by the most fanatic optimizer trying to squeeze out the last compressed bit for their specific input data. Read the deflate.c source code for the meaning of the max_lazy, good_length, nice_length, and max_chain parameters. deflateTune() can be called after deflateInit() or deflateInit2(), and returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. */ ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, uLong sourceLen)); /* deflateBound() returns an upper bound on the compressed size after deflation of sourceLen bytes. It must be called after deflateInit() or deflateInit2(), and after deflateSetHeader(), if used. This would be used to allocate an output buffer for deflation in a single pass, and so would be called before deflate(). If that first deflate() call is provided the sourceLen input bytes, an output buffer allocated to the size returned by deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed to return Z_STREAM_END. Note that it is possible for the compressed size to be larger than the value returned by deflateBound() if flush options other than Z_FINISH or Z_NO_FLUSH are used. */ ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, unsigned *pending, int *bits)); /* deflatePending() returns the number of bytes and bits of output that have been generated, but not yet provided in the available output. The bytes not provided would be due to the available output space having being consumed. The number of bits of output not provided are between 0 and 7, where they await more bits to join them in order to fill out a full byte. If pending or bits are Z_NULL, then those values are not set. deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent. */ ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, int bits, int value)); /* deflatePrime() inserts bits in the deflate output stream. The intent is that this function is used to start off the deflate output with the bits leftover from a previous deflate stream when appending to it. As such, this function can only be used for raw deflate, and must be used before the first deflate() call after a deflateInit2() or deflateReset(). bits must be less than or equal to 16, and that many of the least significant bits of value will be inserted in the output. deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the source stream state was inconsistent. */ ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, gz_headerp head)); /* deflateSetHeader() provides gzip header information for when a gzip stream is requested by deflateInit2(). deflateSetHeader() may be called after deflateInit2() or deflateReset() and before the first call of deflate(). The text, time, os, extra field, name, and comment information in the provided gz_header structure are written to the gzip header (xflag is ignored -- the extra flags are set according to the compression level). The caller must assure that, if not Z_NULL, name and comment are terminated with a zero byte, and that if extra is not Z_NULL, that extra_len bytes are available there. If hcrc is true, a gzip header crc is included. Note that the current versions of the command-line version of gzip (up through version 1.3.x) do not support header crc's, and will report that it is a "multi-part gzip file" and give up. If deflateSetHeader is not used, the default gzip header has text false, the time set to zero, and os set to 255, with no extra, name, or comment fields. The gzip header is returned to the default state by deflateReset(). deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent. */ /* ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, int windowBits)); This is another version of inflateInit with an extra parameter. The fields next_in, avail_in, zalloc, zfree and opaque must be initialized before by the caller. The windowBits parameter is the base two logarithm of the maximum window size (the size of the history buffer). It should be in the range 8..15 for this version of the library. The default value is 15 if inflateInit is used instead. windowBits must be greater than or equal to the windowBits value provided to deflateInit2() while compressing, or it must be equal to 15 if deflateInit2() was not used. If a compressed stream with a larger window size is given as input, inflate() will return with the error code Z_DATA_ERROR instead of trying to allocate a larger window. windowBits can also be zero to request that inflate use the window size in the zlib header of the compressed stream. windowBits can also be -8..-15 for raw inflate. In this case, -windowBits determines the window size. inflate() will then process raw deflate data, not looking for a zlib or gzip header, not generating a check value, and not looking for any check values for comparison at the end of the stream. This is for use with other formats that use the deflate compressed data format such as zip. Those formats provide their own check values. If a custom format is developed using the raw deflate format for compressed data, it is recommended that a check value such as an adler32 or a crc32 be applied to the uncompressed data as is done in the zlib, gzip, and zip formats. For most applications, the zlib format should be used as is. Note that comments above on the use in deflateInit2() applies to the magnitude of windowBits. windowBits can also be greater than 15 for optional gzip decoding. Add 32 to windowBits to enable zlib and gzip decoding with automatic header detection, or add 16 to decode only the gzip format (the zlib format will return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a crc32 instead of an adler32. inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_VERSION_ERROR if the zlib library version is incompatible with the version assumed by the caller, or Z_STREAM_ERROR if the parameters are invalid, such as a null pointer to the structure. msg is set to null if there is no error message. inflateInit2 does not perform any decompression apart from possibly reading the zlib header if present: actual decompression will be done by inflate(). (So next_in and avail_in may be modified, but next_out and avail_out are unused and unchanged.) The current implementation of inflateInit2() does not process any header information -- that is deferred until inflate() is called. */ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, const Bytef *dictionary, uInt dictLength)); /* Initializes the decompression dictionary from the given uncompressed byte sequence. This function must be called immediately after a call of inflate, if that call returned Z_NEED_DICT. The dictionary chosen by the compressor can be determined from the adler32 value returned by that call of inflate. The compressor and decompressor must use exactly the same dictionary (see deflateSetDictionary). For raw inflate, this function can be called at any time to set the dictionary. If the provided dictionary is smaller than the window and there is already data in the window, then the provided dictionary will amend what's there. The application must insure that the dictionary that was used for compression is provided. inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the expected one (incorrect adler32 value). inflateSetDictionary does not perform any decompression: this will be done by subsequent calls of inflate(). */ ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm, Bytef *dictionary, uInt *dictLength)); /* Returns the sliding dictionary being maintained by inflate. dictLength is set to the number of bytes in the dictionary, and that many bytes are copied to dictionary. dictionary must have enough space, where 32768 bytes is always enough. If inflateGetDictionary() is called with dictionary equal to Z_NULL, then only the dictionary length is returned, and nothing is copied. Similary, if dictLength is Z_NULL, then it is not set. inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the stream state is inconsistent. */ ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); /* Skips invalid compressed data until a possible full flush point (see above for the description of deflate with Z_FULL_FLUSH) can be found, or until all available input is skipped. No output is provided. inflateSync searches for a 00 00 FF FF pattern in the compressed data. All full flush points have this pattern, but not all occurrences of this pattern are full flush points. inflateSync returns Z_OK if a possible full flush point has been found, Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. In the success case, the application may save the current current value of total_in which indicates where valid compressed data was found. In the error case, the application may repeatedly call inflateSync, providing more input each time, until success or end of the input data. */ ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, z_streamp source)); /* Sets the destination stream as a complete copy of the source stream. This function can be useful when randomly accessing a large stream. The first pass through the stream can periodically record the inflate state, allowing restarting inflate at those points when randomly accessing the stream. inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_STREAM_ERROR if the source stream state was inconsistent (such as zalloc being Z_NULL). msg is left unchanged in both source and destination. */ ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); /* This function is equivalent to inflateEnd followed by inflateInit, but does not free and reallocate all the internal decompression state. The stream will keep attributes that may have been set by inflateInit2. inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent (such as zalloc or state being Z_NULL). */ ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, int windowBits)); /* This function is the same as inflateReset, but it also permits changing the wrap and window size requests. The windowBits parameter is interpreted the same as it is for inflateInit2. inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent (such as zalloc or state being Z_NULL), or if the windowBits parameter is invalid. */ ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, int bits, int value)); /* This function inserts bits in the inflate input stream. The intent is that this function is used to start inflating at a bit position in the middle of a byte. The provided bits will be used before any bytes are used from next_in. This function should only be used with raw inflate, and should be used before the first inflate() call after inflateInit2() or inflateReset(). bits must be less than or equal to 16, and that many of the least significant bits of value will be inserted in the input. If bits is negative, then the input stream bit buffer is emptied. Then inflatePrime() can be called again to put bits in the buffer. This is used to clear out bits leftover after feeding inflate a block description prior to feeding inflate codes. inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent. */ ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); /* This function returns two values, one in the lower 16 bits of the return value, and the other in the remaining upper bits, obtained by shifting the return value down 16 bits. If the upper value is -1 and the lower value is zero, then inflate() is currently decoding information outside of a block. If the upper value is -1 and the lower value is non-zero, then inflate is in the middle of a stored block, with the lower value equaling the number of bytes from the input remaining to copy. If the upper value is not -1, then it is the number of bits back from the current bit position in the input of the code (literal or length/distance pair) currently being processed. In that case the lower value is the number of bytes already emitted for that code. A code is being processed if inflate is waiting for more input to complete decoding of the code, or if it has completed decoding but is waiting for more output space to write the literal or match data. inflateMark() is used to mark locations in the input data for random access, which may be at bit positions, and to note those cases where the output of a code may span boundaries of random access blocks. The current location in the input stream can be determined from avail_in and data_type as noted in the description for the Z_BLOCK flush parameter for inflate. inflateMark returns the value noted above or -1 << 16 if the provided source stream state was inconsistent. */ ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, gz_headerp head)); /* inflateGetHeader() requests that gzip header information be stored in the provided gz_header structure. inflateGetHeader() may be called after inflateInit2() or inflateReset(), and before the first call of inflate(). As inflate() processes the gzip stream, head->done is zero until the header is completed, at which time head->done is set to one. If a zlib stream is being decoded, then head->done is set to -1 to indicate that there will be no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be used to force inflate() to return immediately after header processing is complete and before any actual data is decompressed. The text, time, xflags, and os fields are filled in with the gzip header contents. hcrc is set to true if there is a header CRC. (The header CRC was valid if done is set to one.) If extra is not Z_NULL, then extra_max contains the maximum number of bytes to write to extra. Once done is true, extra_len contains the actual extra field length, and extra contains the extra field, or that field truncated if extra_max is less than extra_len. If name is not Z_NULL, then up to name_max characters are written there, terminated with a zero unless the length is greater than name_max. If comment is not Z_NULL, then up to comm_max characters are written there, terminated with a zero unless the length is greater than comm_max. When any of extra, name, or comment are not Z_NULL and the respective field is not present in the header, then that field is set to Z_NULL to signal its absence. This allows the use of deflateSetHeader() with the returned structure to duplicate the header. However if those fields are set to allocated memory, then the application will need to save those pointers elsewhere so that they can be eventually freed. If inflateGetHeader is not used, then the header information is simply discarded. The header is always checked for validity, including the header CRC if present. inflateReset() will reset the process to discard the header information. The application would need to call inflateGetHeader() again to retrieve the header from the next gzip stream. inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent. */ /* ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, unsigned char FAR *window)); Initialize the internal stream state for decompression using inflateBack() calls. The fields zalloc, zfree and opaque in strm must be initialized before the call. If zalloc and zfree are Z_NULL, then the default library- derived memory allocation routines are used. windowBits is the base two logarithm of the window size, in the range 8..15. window is a caller supplied buffer of that size. Except for special applications where it is assured that deflate was used with small window sizes, windowBits must be 15 and a 32K byte window must be supplied to be able to decompress general deflate streams. See inflateBack() for the usage of these routines. inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of the parameters are invalid, Z_MEM_ERROR if the internal state could not be allocated, or Z_VERSION_ERROR if the version of the library does not match the version of the header file. */ typedef unsigned (*in_func) OF((void FAR *, z_const unsigned char FAR * FAR *)); typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, in_func in, void FAR *in_desc, out_func out, void FAR *out_desc)); /* inflateBack() does a raw inflate with a single call using a call-back interface for input and output. This is potentially more efficient than inflate() for file i/o applications, in that it avoids copying between the output and the sliding window by simply making the window itself the output buffer. inflate() can be faster on modern CPUs when used with large buffers. inflateBack() trusts the application to not change the output buffer passed by the output function, at least until inflateBack() returns. inflateBackInit() must be called first to allocate the internal state and to initialize the state with the user-provided window buffer. inflateBack() may then be used multiple times to inflate a complete, raw deflate stream with each call. inflateBackEnd() is then called to free the allocated state. A raw deflate stream is one with no zlib or gzip header or trailer. This routine would normally be used in a utility that reads zip or gzip files and writes out uncompressed files. The utility would decode the header and process the trailer on its own, hence this routine expects only the raw deflate stream to decompress. This is different from the normal behavior of inflate(), which expects either a zlib or gzip header and trailer around the deflate stream. inflateBack() uses two subroutines supplied by the caller that are then called by inflateBack() for input and output. inflateBack() calls those routines until it reads a complete deflate stream and writes out all of the uncompressed data, or until it encounters an error. The function's parameters and return types are defined above in the in_func and out_func typedefs. inflateBack() will call in(in_desc, &buf) which should return the number of bytes of provided input, and a pointer to that input in buf. If there is no input available, in() must return zero--buf is ignored in that case--and inflateBack() will return a buffer error. inflateBack() will call out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() should return zero on success, or non-zero on failure. If out() returns non-zero, inflateBack() will return with an error. Neither in() nor out() are permitted to change the contents of the window provided to inflateBackInit(), which is also the buffer that out() uses to write from. The length written by out() will be at most the window size. Any non-zero amount of input may be provided by in(). For convenience, inflateBack() can be provided input on the first call by setting strm->next_in and strm->avail_in. If that input is exhausted, then in() will be called. Therefore strm->next_in must be initialized before calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in must also be initialized, and then if strm->avail_in is not zero, input will initially be taken from strm->next_in[0 .. strm->avail_in - 1]. The in_desc and out_desc parameters of inflateBack() is passed as the first parameter of in() and out() respectively when they are called. These descriptors can be optionally used to pass any information that the caller- supplied in() and out() functions need to do their job. On return, inflateBack() will set strm->next_in and strm->avail_in to pass back any unused input that was provided by the last in() call. The return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR if in() or out() returned an error, Z_DATA_ERROR if there was a format error in the deflate stream (in which case strm->msg is set to indicate the nature of the error), or Z_STREAM_ERROR if the stream was not properly initialized. In the case of Z_BUF_ERROR, an input or output error can be distinguished using strm->next_in which will be Z_NULL only if in() returned an error. If strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning non-zero. (in() will always be called before out(), so strm->next_in is assured to be defined if out() returns non-zero.) Note that inflateBack() cannot return Z_OK. */ ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); /* All memory allocated by inflateBackInit() is freed. inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream state was inconsistent. */ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); /* Return flags indicating compile-time options. Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: 1.0: size of uInt 3.2: size of uLong 5.4: size of voidpf (pointer) 7.6: size of z_off_t Compiler, assembler, and debug options: 8: DEBUG 9: ASMV or ASMINF -- use ASM code 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention 11: 0 (reserved) One-time table building (smaller code, but not thread-safe if true): 12: BUILDFIXED -- build static block decoding tables when needed 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed 14,15: 0 (reserved) Library content (indicates missing functionality): 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking deflate code when not needed) 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect and decode gzip streams (to avoid linking crc code) 18-19: 0 (reserved) Operation variations (changes in library functionality): 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate 21: FASTEST -- deflate algorithm with only one, lowest compression level 22,23: 0 (reserved) The sprintf variant used by gzprintf (zero is best): 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! 26: 0 = returns value, 1 = void -- 1 means inferred string length returned Remainder: 27-31: 0 (reserved) */ #ifndef Z_SOLO /* utility functions */ /* The following utility functions are implemented on top of the basic stream-oriented functions. To simplify the interface, some default options are assumed (compression level and memory usage, standard memory allocation functions). The source code of these utility functions can be modified if you need special options. */ ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen)); /* Compresses the source buffer into the destination buffer. sourceLen is the byte length of the source buffer. Upon entry, destLen is the total size of the destination buffer, which must be at least the value returned by compressBound(sourceLen). Upon exit, destLen is the actual size of the compressed buffer. compress returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if there was not enough room in the output buffer. */ ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen, int level)); /* Compresses the source buffer into the destination buffer. The level parameter has the same meaning as in deflateInit. sourceLen is the byte length of the source buffer. Upon entry, destLen is the total size of the destination buffer, which must be at least the value returned by compressBound(sourceLen). Upon exit, destLen is the actual size of the compressed buffer. compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if there was not enough room in the output buffer, Z_STREAM_ERROR if the level parameter is invalid. */ ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); /* compressBound() returns an upper bound on the compressed size after compress() or compress2() on sourceLen bytes. It would be used before a compress() or compress2() call to allocate the destination buffer. */ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen)); /* Decompresses the source buffer into the destination buffer. sourceLen is the byte length of the source buffer. Upon entry, destLen is the total size of the destination buffer, which must be large enough to hold the entire uncompressed data. (The size of the uncompressed data must have been saved previously by the compressor and transmitted to the decompressor by some mechanism outside the scope of this compression library.) Upon exit, destLen is the actual size of the uncompressed buffer. uncompress returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if there was not enough room in the output buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In the case where there is not enough room, uncompress() will fill the output buffer with the uncompressed data up to that point. */ /* gzip file access functions */ /* This library supports reading and writing files in gzip (.gz) format with an interface similar to that of stdio, using the functions that start with "gz". The gzip format is different from the zlib format. gzip is a gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. */ typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ /* ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); Opens a gzip (.gz) file for reading or writing. The mode parameter is as in fopen ("rb" or "wb") but can also include a compression level ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression as in "wb9F". (See the description of deflateInit2 for more information about the strategy parameter.) 'T' will request transparent writing or appending with no compression and not using the gzip format. "a" can be used instead of "w" to request that the gzip stream that will be written be appended to the file. "+" will result in an error, since reading and writing to the same gzip file is not supported. The addition of "x" when writing will create the file exclusively, which fails if the file already exists. On systems that support it, the addition of "e" when reading or writing will set the flag to close the file on an execve() call. These functions, as well as gzip, will read and decode a sequence of gzip streams in a file. The append function of gzopen() can be used to create such a file. (Also see gzflush() for another way to do this.) When appending, gzopen does not test whether the file begins with a gzip stream, nor does it look for the end of the gzip streams to begin appending. gzopen will simply append a gzip stream to the existing file. gzopen can be used to read a file which is not in gzip format; in this case gzread will directly read from the file without decompression. When reading, this will be detected automatically by looking for the magic two- byte gzip header. gzopen returns NULL if the file could not be opened, if there was insufficient memory to allocate the gzFile state, or if an invalid mode was specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). errno can be checked to determine if the reason gzopen failed was that the file could not be opened. */ ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); /* gzdopen associates a gzFile with the file descriptor fd. File descriptors are obtained from calls like open, dup, creat, pipe or fileno (if the file has been previously opened with fopen). The mode parameter is as in gzopen. The next call of gzclose on the returned gzFile will also close the file descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, mode);. The duplicated descriptor should be saved to avoid a leak, since gzdopen does not close fd if it fails. If you are using fileno() to get the file descriptor from a FILE *, then you will have to use dup() to avoid double-close()ing the file descriptor. Both gzclose() and fclose() will close the associated file descriptor, so they need to have different file descriptors. gzdopen returns NULL if there was insufficient memory to allocate the gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not provided, or '+' was provided), or if fd is -1. The file descriptor is not used until the next gz* read, write, seek, or close operation, so gzdopen will not detect if fd is invalid (unless fd is -1). */ ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); /* Set the internal buffer size used by this library's functions. The default buffer size is 8192 bytes. This function must be called after gzopen() or gzdopen(), and before any other calls that read or write the file. The buffer memory allocation is always deferred to the first read or write. Two buffers are allocated, either both of the specified size when writing, or one of the specified size and the other twice that size when reading. A larger buffer size of, for example, 64K or 128K bytes will noticeably increase the speed of decompression (reading). The new buffer size also affects the maximum length for gzprintf(). gzbuffer() returns 0 on success, or -1 on failure, such as being called too late. */ ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); /* Dynamically update the compression level or strategy. See the description of deflateInit2 for the meaning of these parameters. gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not opened for writing. */ ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); /* Reads the given number of uncompressed bytes from the compressed file. If the input file is not in gzip format, gzread copies the given number of bytes into the buffer directly from the file. After reaching the end of a gzip stream in the input, gzread will continue to read, looking for another gzip stream. Any number of gzip streams may be concatenated in the input file, and will all be decompressed by gzread(). If something other than a gzip stream is encountered after a gzip stream, that remaining trailing garbage is ignored (and no error is returned). gzread can be used to read a gzip file that is being concurrently written. Upon reaching the end of the input, gzread will return with the available data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then gzclearerr can be used to clear the end of file indicator in order to permit gzread to be tried again. Z_OK indicates that a gzip stream was completed on the last gzread. Z_BUF_ERROR indicates that the input file ended in the middle of a gzip stream. Note that gzread does not return -1 in the event of an incomplete gzip stream. This error is deferred until gzclose(), which will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip stream. Alternatively, gzerror can be used before gzclose to detect this case. gzread returns the number of uncompressed bytes actually read, less than len for end of file, or -1 for error. */ ZEXTERN int ZEXPORT gzwrite OF((gzFile file, voidpc buf, unsigned len)); /* Writes the given number of uncompressed bytes into the compressed file. gzwrite returns the number of uncompressed bytes written or 0 in case of error. */ ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); /* Converts, formats, and writes the arguments to the compressed file under control of the format string, as in fprintf. gzprintf returns the number of uncompressed bytes actually written, or 0 in case of error. The number of uncompressed bytes written is limited to 8191, or one less than the buffer size given to gzbuffer(). The caller should assure that this limit is not exceeded. If it is exceeded, then gzprintf() will return an error (0) with nothing written. In this case, there may also be a buffer overflow with unpredictable consequences, which is possible only if zlib was compiled with the insecure functions sprintf() or vsprintf() because the secure snprintf() or vsnprintf() functions were not available. This can be determined using zlibCompileFlags(). */ ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); /* Writes the given null-terminated string to the compressed file, excluding the terminating null character. gzputs returns the number of characters written, or -1 in case of error. */ ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); /* Reads bytes from the compressed file until len-1 characters are read, or a newline character is read and transferred to buf, or an end-of-file condition is encountered. If any characters are read or if len == 1, the string is terminated with a null character. If no characters are read due to an end-of-file or len < 1, then the buffer is left untouched. gzgets returns buf which is a null-terminated string, or it returns NULL for end-of-file or in case of error. If there was an error, the contents at buf are indeterminate. */ ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); /* Writes c, converted to an unsigned char, into the compressed file. gzputc returns the value that was written, or -1 in case of error. */ ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); /* Reads one byte from the compressed file. gzgetc returns this byte or -1 in case of end of file or error. This is implemented as a macro for speed. As such, it does not do all of the checking the other functions do. I.e. it does not check to see if file is NULL, nor whether the structure file points to has been clobbered or not. */ ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); /* Push one character back onto the stream to be read as the first character on the next read. At least one character of push-back is allowed. gzungetc() returns the character pushed, or -1 on failure. gzungetc() will fail if c is -1, and may fail if a character has been pushed but not read yet. If gzungetc is used immediately after gzopen or gzdopen, at least the output buffer size of pushed characters is allowed. (See gzbuffer above.) The pushed character will be discarded if the stream is repositioned with gzseek() or gzrewind(). */ ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); /* Flushes all pending output into the compressed file. The parameter flush is as in the deflate() function. The return value is the zlib error number (see function gzerror below). gzflush is only permitted when writing. If the flush parameter is Z_FINISH, the remaining data is written and the gzip stream is completed in the output. If gzwrite() is called again, a new gzip stream will be started in the output. gzread() is able to read such concatented gzip streams. gzflush should be called only when strictly necessary because it will degrade compression if called too often. */ /* ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, z_off_t offset, int whence)); Sets the starting position for the next gzread or gzwrite on the given compressed file. The offset represents a number of bytes in the uncompressed data stream. The whence parameter is defined as in lseek(2); the value SEEK_END is not supported. If the file is opened for reading, this function is emulated but can be extremely slow. If the file is opened for writing, only forward seeks are supported; gzseek then compresses a sequence of zeroes up to the new starting position. gzseek returns the resulting offset location as measured in bytes from the beginning of the uncompressed stream, or -1 in case of error, in particular if the file is opened for writing and the new starting position would be before the current position. */ ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); /* Rewinds the given file. This function is supported only for reading. gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) */ /* ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); Returns the starting position for the next gzread or gzwrite on the given compressed file. This position represents a number of bytes in the uncompressed data stream, and is zero when starting, even if appending or reading a gzip stream from the middle of a file using gzdopen(). gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) */ /* ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); Returns the current offset in the file being read or written. This offset includes the count of bytes that precede the gzip stream, for example when appending or when using gzdopen() for reading. When reading, the offset does not include as yet unused buffered input. This information can be used for a progress indicator. On error, gzoffset() returns -1. */ ZEXTERN int ZEXPORT gzeof OF((gzFile file)); /* Returns true (1) if the end-of-file indicator has been set while reading, false (0) otherwise. Note that the end-of-file indicator is set only if the read tried to go past the end of the input, but came up short. Therefore, just like feof(), gzeof() may return false even if there is no more data to read, in the event that the last read request was for the exact number of bytes remaining in the input file. This will happen if the input file size is an exact multiple of the buffer size. If gzeof() returns true, then the read functions will return no more data, unless the end-of-file indicator is reset by gzclearerr() and the input file has grown since the previous end of file was detected. */ ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); /* Returns true (1) if file is being copied directly while reading, or false (0) if file is a gzip stream being decompressed. If the input file is empty, gzdirect() will return true, since the input does not contain a gzip stream. If gzdirect() is used immediately after gzopen() or gzdopen() it will cause buffers to be allocated to allow reading the file to determine if it is a gzip file. Therefore if gzbuffer() is used, it should be called before gzdirect(). When writing, gzdirect() returns true (1) if transparent writing was requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: gzdirect() is not needed when writing. Transparent writing must be explicitly requested, so the application already knows the answer. When linking statically, using gzdirect() will include all of the zlib code for gzip file reading and decompression, which may not be desired.) */ ZEXTERN int ZEXPORT gzclose OF((gzFile file)); /* Flushes all pending output if necessary, closes the compressed file and deallocates the (de)compression state. Note that once file is closed, you cannot call gzerror with file, since its structures have been deallocated. gzclose must not be called more than once on the same file, just as free must not be called more than once on the same allocation. gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the last read ended in the middle of a gzip stream, or Z_OK on success. */ ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); /* Same as gzclose(), but gzclose_r() is only for use when reading, and gzclose_w() is only for use when writing or appending. The advantage to using these instead of gzclose() is that they avoid linking in zlib compression or decompression code that is not used when only reading or only writing respectively. If gzclose() is used, then both compression and decompression code will be included the application when linking to a static zlib library. */ ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); /* Returns the error message for the last error which occurred on the given compressed file. errnum is set to zlib error number. If an error occurred in the file system and not in the compression library, errnum is set to Z_ERRNO and the application may consult errno to get the exact error code. The application must not modify the returned string. Future calls to this function may invalidate the previously returned string. If file is closed, then the string previously returned by gzerror will no longer be available. gzerror() should be used to distinguish errors from end-of-file for those functions above that do not distinguish those cases in their return values. */ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); /* Clears the error and end-of-file flags for file. This is analogous to the clearerr() function in stdio. This is useful for continuing to read a gzip file that is being written concurrently. */ #endif /* !Z_SOLO */ /* checksum functions */ /* These functions are not related to compression but are exported anyway because they might be useful in applications using the compression library. */ ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); /* Update a running Adler-32 checksum with the bytes buf[0..len-1] and return the updated checksum. If buf is Z_NULL, this function returns the required initial value for the checksum. An Adler-32 checksum is almost as reliable as a CRC32 but can be computed much faster. Usage example: uLong adler = adler32(0L, Z_NULL, 0); while (read_buffer(buffer, length) != EOF) { adler = adler32(adler, buffer, length); } if (adler != original_adler) error(); */ /* ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, z_off_t len2)); Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note that the z_off_t type (like off_t) is a signed integer. If len2 is negative, the result has no meaning or utility. */ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); /* Update a running CRC-32 with the bytes buf[0..len-1] and return the updated CRC-32. If buf is Z_NULL, this function returns the required initial value for the crc. Pre- and post-conditioning (one's complement) is performed within this function so it shouldn't be done by the application. Usage example: uLong crc = crc32(0L, Z_NULL, 0); while (read_buffer(buffer, length) != EOF) { crc = crc32(crc, buffer, length); } if (crc != original_crc) error(); */ /* ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); Combine two CRC-32 check values into one. For two sequences of bytes, seq1 and seq2 with lengths len1 and len2, CRC-32 check values were calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and len2. */ /* various hacks, don't look :) */ /* deflateInit and inflateInit are macros to allow checking the zlib version * and the compiler's view of z_stream: */ ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, const char *version, int stream_size)); ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, const char *version, int stream_size)); ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, int windowBits, int memLevel, int strategy, const char *version, int stream_size)); ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, const char *version, int stream_size)); ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, unsigned char FAR *window, const char *version, int stream_size)); #define deflateInit(strm, level) \ deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) #define inflateInit(strm) \ inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) #define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) #define inflateInit2(strm, windowBits) \ inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ (int)sizeof(z_stream)) #define inflateBackInit(strm, windowBits, window) \ inflateBackInit_((strm), (windowBits), (window), \ ZLIB_VERSION, (int)sizeof(z_stream)) #ifndef Z_SOLO /* gzgetc() macro and its supporting function and exposed data structure. Note * that the real internal state is much larger than the exposed structure. * This abbreviated structure exposes just enough for the gzgetc() macro. The * user should not mess with these exposed elements, since their names or * behavior could change in the future, perhaps even capriciously. They can * only be used by the gzgetc() macro. You have been warned. */ struct gzFile_s { unsigned have; unsigned char *next; z_off64_t pos; }; ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ #ifdef Z_PREFIX_SET # undef z_gzgetc # define z_gzgetc(g) \ ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) #else # define gzgetc(g) \ ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) #endif /* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if * both are true, the application gets the *64 functions, and the regular * functions are changed to 64 bits) -- in case these are set on systems * without large file support, _LFS64_LARGEFILE must also be true */ #ifdef Z_LARGE64 ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); #endif #if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) # ifdef Z_PREFIX_SET # define z_gzopen z_gzopen64 # define z_gzseek z_gzseek64 # define z_gztell z_gztell64 # define z_gzoffset z_gzoffset64 # define z_adler32_combine z_adler32_combine64 # define z_crc32_combine z_crc32_combine64 # else # define gzopen gzopen64 # define gzseek gzseek64 # define gztell gztell64 # define gzoffset gzoffset64 # define adler32_combine adler32_combine64 # define crc32_combine crc32_combine64 # endif # ifndef Z_LARGE64 ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); # endif #else ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); #endif #else /* Z_SOLO */ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); #endif /* !Z_SOLO */ /* hack for buggy compilers */ #if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) struct internal_state {int dummy;}; #endif /* undocumented functions */ ZEXTERN const char * ZEXPORT zError OF((int)); ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void)); ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); #if defined(_WIN32) && !defined(Z_SOLO) ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, const char *mode)); #endif #if defined(STDC) || defined(Z_HAVE_STDARG_H) # ifndef Z_SOLO ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file, const char *format, va_list va)); # endif #endif #ifdef __cplusplus } #endif #endif /* ZLIB_H */ cackey-0.7.10/build/cackey_win32_build/lib/0000755000000000000000000000000013563537513017054 5ustar rootrootcackey-0.7.10/build/cackey_win32_build/lib/libz.a0000755000000000000000000027032613563537513020173 0ustar rootroot! / 1437066065 0 0 0 1576 ` ^lll d d d d4Ê4Ê4Ê4Ê4Ê4Ê4Ê4Ê4Ê4Ê4Ê4Ê4Ê4Ê4ÊyÌyÌyÌžN©Ö©Ö©Ö©Ö©Ö©Ö©Ö©Ö©Ö©Ö©Ö©Ö©Ö©Ö©Ö©Öì¦ì¦ødødødødødødødød'l'l'l'l'l'l+œ+œ+œ0,3^5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\J"J"J"J"J"J"J"`(`(`(`(`(`(`(`(_adler32_adler32_combine_adler32_combine64_get_crc_table_crc32_crc32_combine_crc32_combine64_deflateSetDictionary_deflateResetKeep_deflateReset_deflateSetHeader_deflatePending_deflatePrime_deflateParams_deflateTune_deflateBound_deflate_deflateEnd_deflateInit2__deflateInit__deflateCopy_deflate_copyright_inflateBackInit__inflateBack_inflateBackEnd_inflate_fast_inflateResetKeep_inflateReset_inflateReset2_inflateInit2__inflateInit__inflatePrime_inflate_inflateEnd_inflateGetDictionary_inflateSetDictionary_inflateGetHeader_inflateSync_inflateSyncPoint_inflateCopy_inflateUndermine_inflateMark_inflate_table_inflate_copyright__tr_init__tr_stored_block__tr_flush_bits__tr_align__tr_flush_block__tr_tally__length_code__dist_code_zlibVersion_zlibCompileFlags_zError_zcalloc_zcfree_z_errmsg_compress2_compress_compressBound_uncompress_gzclose_gzopen_gzopen64_gzdopen_gzopen_w_gzbuffer_gzrewind_gzseek64_gzseek_gztell64_gztell_gzoffset64_gzoffset_gzeof_gzerror_gzclearerr_gz_error_gzread_gzgetc_gzgetc__gzungetc_gzgets_gzdirect_gzclose_r_gzwrite_gzputc_gzputs_gzvprintf_gzprintf_gzflush_gzsetparams_gzclose_wadler32.o/ 1437066062 1011 100 100644 1468 ` L¼ .text0Œ P`.data@0À.bss€0ÀUWVS‹L$‹|$‹t$‰ËáÿÿÁëƒÿ„?…ö½„éƒÿ†çÿ¯½q€€†Rï°†°¶Ñ¶VËѶVËѶVËѶVËѶVËѶVËѶVËѶVËѶV ËѶV ËѶV ËѶV ËѶV ËѶVËѶVƒÆËÑË9Æ…vÿÿÿ‰È÷剨ÁêiÒñÿ)Ñ÷åÁêiÒñÿ)Óÿ¯‡@ÿÿÿ…ÿ…‰ÝÁå Í[‰è^_]Ã…ÿt¶ƒÆÁ˃ïuñùñÿ‰Ø©ÿÿºq€€Bé÷âÁêiÒñÿ)ÓÁã ݉è[^_]öÁùñÿÿÿCÈËûñÿ«ÿÿBëÁå Í[‰è^_]Ãÿ†¡‰ú‰ð¶(ƒêé¶hËé¶hËé¶hËé¶hËé¶hËé¶hËé¶hËé¶hËé¶h Ëé¶h Ëé¶h Ëé¶h Ëé¶h Ëé¶hËé¶hËé˃Àƒú‡rÿÿÿGðƒàðƒçttƒï1ÀƒÇ¶ƒÀÑË9øuñ‰È¾q€€÷æ‰ØÁêiÒñÿ)Ñ÷æÁêiÒñÿ)Ó‰ÝÁå Íé–þÿÿ¶¿ƒì¸ÿÿÿÿ‹L$‰$‰t$‰|$…ɉl$ ˆ’‰È¾q€€·|$÷î‰È·l$ÁøÊÁú)‹D$iÒñÿÁè)щʉˋL$¯ßÁéÁ‰Ø)Ñ÷æÁêiÒñÿ)ÓºðÿÙïñÿtWÿúðÿv—ÿÿéñÿ=âÿCÁ=ñÿˆÿÿCÁÁà Ћ$‹t$‹|$‹l$ ƒÄô&ƒì¸ÿÿÿÿ‹L$‰$‰t$‰|$…ɉl$ ˆ’‰È¾q€€·|$÷î‰È·l$ÁøÊÁú)‹D$iÒñÿÁè)щʉˋL$¯ßÁéÁ‰Ø)Ñ÷æÁêiÒñÿ)ÓºðÿÙïñÿtWÿúðÿv—ÿÿéñÿ=âÿCÁ=ñÿˆÿÿCÁÁà Ћ$‹t$‹|$‹l$ ƒÄÃ.fileþÿgadler32.c_adler32  ` .text(.data.bss(_adler32_combine_adler32_combine64crc32.o/ 1437066062 1011 100 100644 10282 ` Lª&.textp´$%' P`.data@0À.bss€0À.rdata $@`@UW‰ÏVSì…ÉŽ7Ç„$€ ƒ¸íŒ$„»´$‰ƒÁÛ9ñuõ1틌¬€1ö…Étœ$€öÁt33ƒÃÑéuò‰4¬ƒÅƒý uÓf1틬1ö…Ût‰át&öÃt31ƒÁÑëuò‰´¬€ƒÅƒý uÓ1틌¬€1ö…Étœ$€öÁt33ƒÃÑéuò‰4¬ƒÅƒý uÓ÷Çt…Àt1Û‰áv¨t3ƒÁÑèuó‰ØÑÿtV1í‹ ¬1ö…Ét‰ãöÁt33ƒÃÑéuò‰´¬€ƒÅƒý uØ÷Çt…Àt1ÛŒ$€¨t3ƒÁÑèuó‰ØÑÿ…Tÿÿÿ1ÐÄ[^_]Ãv¼'¸Ãv¼'U1ÀWVSƒì‹T$,‹L$0…Ò„˜‹D$(…ÉÇD$÷Ðu#鶃Â1öÛÁè3ƒé„aöÂu݃ù†×‰Ë‰Ö‰$3‰Â¶øÁê¶ì‹<½ âÿÁè3<…3~3<­3<•‰ø‰ý¶ÔåÿÁè‹,­ %ÿÁï3,½3n3,•3,…‰è‰ï¶ÔçÿÁè‹<½ %ÿÁí3<­3~ 3<•3<…‰ø‰ý¶ÔåÿÁè‹,­ %ÿÁï3,½3n3,•3,…‰è‰ï¶ÔÁèçÿ%ÿ‹<½ ƒë Áí3<­3~3<•3<…‰ø‰ý¶ÔåÿÁè‹,­ %ÿÁï3,½3n3,•3,…‰è‰ê¶üâÿÁè‹• %ÿÁí3­3VƒÆ 3½3…‰×‰ÐÁï¶êÁèçÿ‹…¶Ö3­ 3•3½ƒû‡@þÿÿ‹$YàƒáƒãàT ƒùvY‰Ï‰Ö‰$‹ƒïƒÆ1‰ӉÐÁë¶êÁèãÿ‹…¶Ö3­ 3•3ƒÿw¿‹$YüƒáÁëTš…Ét¶ƒÂ1öÛÁè3ƒéuæ÷ЃÄ[^_]ô&‹L$ ‹T$‹D$é¿ûÿÿë ‹L$ ‹T$‹D$éŸûÿÿ–0w,aîºQ ™Ämôjp5¥c飕dž2ˆÛ¤¸ÜyéÕàˆÙÒ—+L¶ ½|±~-¸ç‘¿d·ò °jHq¹óÞA¾„}ÔÚëäÝmQµÔôÇ…ÓƒV˜lÀ¨kdzùbýìÉeŠO\Ùlcc=úõ È n;^iLäA`Õrqg¢Ñäjm ¨Zjz Ïäÿ “'® ±ž}D“ðÒ£‡hòþÂi]Wb÷Ëge€q6lçknvÔþà+Ó‰ZzÚÌJÝgoß¹ùùホC¾·Õް`è£ÖÖ~“Ñ¡ÄÂØ8RòßOñg»ÑgW¼¦Ýµ?K6²HÚ+ ØL ¯öJ6`zAÃï`ßUßg¨ïŽn1y¾iFŒ³a˃f¼ Òo%6âhR•w ÌG »¹"/&U¾;ºÅ( ½²’Z´+j³\§ÿ×Â1Ïе‹žÙ,®Þ[°Âd›&òc윣ju “m© œ?6ë…grW‚J¿•z¸â®+±{8¶ ›ŽÒ’ ¾Õå·ïÜ|!ßÛ ÔÒÓ†BâÔñø³ÝhnƒÚ;[&¹öáw°owG·æZˆpjÿÊ;f\ ÿžei®bøÓÿkaEÏlxâ  îÒ ×TƒN³9a&g§÷`ÐMGiIÛwn>JjÑ®ÜZÖÙf ß@ð;Ø7S®¼©Åž»ÞϲGéÿµ0ò½½ŠÂºÊ0“³S¦£´$6к“×Í)WÞT¿gÙ#.zf³¸JaÄh]”+o*7¾ ´¡Ž ÃßZï-A1‚b62ÃS-+ÅldEôw}†§ZVÇ–AOŠÙÈI»ÂÑŠèïúËÙôã Oµ¬M~®µŽ-ƒžÏ˜‡QÂJ#ÙSÓpôx’AïaU×®.æµ7×µ˜–„ƒY˜‚©›Ûú-°šË6©]]wællÿß?AÔžZÍ¢$„•㟌 F²§aw©¾¦áèñçÐóè$ƒÞÃe²ÅÚª®]]ëŸFD(Ìkoiýpv®k19ïZ* ,  m8ó6Fß²]ÆqTpí0ekô÷ó*»¶Â1¢u‘‰4 û¼Ÿº„yÞ©%8ï²<ÿyós¾Hèj}ÅA<*ÞXOyðD~bé‡-OÂÆTÛŠ”@»ƒè#¦ÂÙ8¿ Å 8Lô»!§– Ζ Ì\H1×E‹búnÊSáwT]»ºl £Ö?ˆ—–‘P˜×Þ©ÌÇÒúáì“Ëúõ\×bræykÞµT@Ÿ„OYX#Úp8$›A#=§kýeæZæ|% ËWd8ÐN£®‘⟊!̧3`ý¼*¯á$­îÐ?´-ƒŸl² †«$HÉêSÐ)F~ûhweâöy?/·H$6t 5*ò¼SK³HRpÞey1ï~`þóæç¿Âýþ|‘ÐÕ= ËÌú6Šƒ»‘šxT¼±9e§¨K˜ƒ; ©˜"Éúµ ˆË®O]ï_lôFÍ?ÙmŒÂtCZó#AêÁplÁ€AwØG×6—æ-ŽÅµ¥„„¼ŠAq[»Zh˜èwCÙÙlZO-_~6 œ-'Ý>˜¹S1ƒ b®‹ÑSµ’ÅôÝWôïÄ”§ÂïÕ–Ùöé¼®¨·kÞ1œ*ï*…íykʬHpÓo]ø.*Fáá6Þf ÅcTèT"eóMåó²¤Â©g‘„0& Ÿ)¸®ÅäùŸÞý:ÌóÖ{ýèϼk©€ýZ²™> Ÿ²8„«°$,ñ52F*sw1´ápHõÐkQ6ƒFzw²]cN×úËæáÒ̵Ìù„×àJ–¯ #¶Èp ‰A»„F]#l8Ä?1…(B˜Og©T~ÀúyUËbLÅ8^ô#˜§³Ü–ªTåZ1Oü™bbרSyÎOáIV~úP•-×{ÔÌbŠ-R»–4‘è»ÐÙ ìó~^­ÂeGn‘Hl/ Suè6:© #jT$+e?äy§–¥H¼f‘¤'*нà¼Ëò¡ÐëbÞýÀ#ïæÙ½á¼üЧ ?ƒŠ&~²‘?¹$ÐpøËi;FæBzwý[µkeÜôZ~Å7 Sîv8H÷±® ¸ðŸ¡3Ì?Šrý$“7jÂnÔ„Y¾Fܨ ëÂ˲|…O¸Q;ÑÖ…— áïU dù S“Ø -ž =G\ p£&GÉäw¢)`¬ /›aíÂß«õµiÈò5ÿ˜÷¦&±‘LsZ<#0þzޏMäzàFM8×,9Ž’É;¹ø :<îD? „†>R:À(ôq-Ãv³,šÈõ.­¢7/Àšp÷çXq®Ys™3Ür%“w+OQvrñtE›Õux܉~O¶K }!bÏ|¤t€y“BxÊ zýÊÆ{°.¼l‡D~mÞú8oéúnl†µk[ìwjR1h58ói¯b?mcf«+aQÁé`Ôצeã½ddº"fiàg Ë×H¡INSKyu‘JücÞOË N’·ZL¥Ý˜M˜šÄF¯ðGöN@EÁ$‚DD2ÍAsX@*æIBŒ‹CPhñTg3U>¼uW Ö·VŒÀøS»ª:Râ|PÕ~¾Qè9âZßS [†ífY±‡¤X4‘ë]û)\ZEo^m/­_€5á·q÷àîϱâÙ¥sã\³<ækÙþç2g¸å zä8J&ï äîVž¢ìaô`íäâ/èÓˆíéŠ6«ë½\iêð¸ýÇÒÑüžl—þ©Uÿ,úzØûBÄžùu®\øHéóƒÂò&=„ðWFñ”A ô£+Ëõú•÷ÍÿOö`]xÙW7ºØ‰üÚ9ã>Û¼õqÞ‹Ÿ³ßÒ!õÝåK7ÜØ k×ïf©Ö¶ØïÔ²-Õ¤bÐ3ΠÑjpæÓ]$Òþ^Å'”œÄ~*ÚÆI@ÇÌVWÂû<•â‚ÓÁ•èÀ¨¯MËŸÅÊÆ{ÉÈñ ÉtDÌCm†ÍÓÀÏ-¹Î@–¯‘wüm.B+’(铜>¦–«Td—òê"•Å€à”øÇ¼ŸÏ­~ž–8œ¡yú$oµ˜w™J»1›}Ñóš05‰_KŒ^á Ži‹Ï쀊Û÷B‹‚I‰µ#ƈˆdšƒ¿X‚æ°€ÑÚÜTÌ“„c¦Q…:‡ rÕ† Ðâ©—º ¨Îfªùn¤«|xë®K)¯¬o­%Æ­¬ñ§/ë3¦vUu¤A?·¥Ä)ø óC:¡ªý|£—¾¢Ðsĵç´¾§@¶‰Í‚· ÛͲ;±³bI±Ue‹°h"×»_HºöS¸1œ‘¹´ŠÞ¼ƒà½Ú^Z¿í4˜¾eg¼¸‹È ªî¯µW—b2ðÞ7Ü_k%¹8×ï(´ÅŠO}dà½o‡׸¿ÖJÝØjò3wßàVcXŸWPú0¥èŸúqø¬BÈÀ{ß­§ÇgCru&oÎÍp­•-û·¤?žÐ‡'èÏBs¢¬ ưÉGz>¯2 [ÈŽµg; Ї²i8P/ _ì—âðY…‡—å=ч†e´à:ÝZOÏ?(3w†äêãwXR Øí@h¿Qø¡ø+ðÄŸ—H*0"ZOWžâöoI“õÇ}§@ÕÀümNП5+·#Å–Ÿ *'Gýº| A’ô÷èH¨=X›X?¨#¶1Ó÷¡‰jÏv¨Ê¬á¾„`ÃÒp ^·æY¸©ô<ßL…çÂÑà€~i/Ë{kHwâ ËÇh±s)ÇaL ¸Ùõ˜oDÿÓü~Pfî7ÚVM'¹(@¶Æï°¤£ˆ °Û×g9‘xÒ+ôn“÷&;fšƒˆ?/‘íX“)T`D´1ø ߨMºÏñ¦ìß’þ‰¸.Fg›Tp'ì»HðqÞ/LÉ0€ùÛUçEcœ ?kùǃÓh6ÁrŠyË7]ä®Pá\@ÿTN%˜èösˆ‹®ï7ø@‚'>¼$é!AxU™¯×à‹Ê°\3;¶Yí^ÑåU°~PGÕìÿl!;b F‡Úçé2È‚ŽŽpÔží(±ùQ_Vä‚:1X:ƒ §æn3Á† m¦:µ¤á@½Á†ü/)IJNõ¯óv"2–žŠx¾+˜Ù— KÉôx.®HÀÀýÒ¥fAj^–÷y9*O—–Ÿ]òñ#åkM`~×õŽÑbçë¶Þ_RŽ Â7éµzÙFh¼!¼Ðê1߈Vc0aùÖ"žj𽦽ØÁ¿6n´­S šNrÿ)Î¥†{·táÇÍÙ’¨¾¬*F8#v¥€ufÆØz`þ®Ïr›ÉsÊ"ñ¤WG–ï©9­ýÌ^EîMvc‰ñÎ&DÜèAødQy/ù4“AÚ±&S¿ÖšëéÆù³Œ¡E bðiL¡¾Q›<Û6'„5™’–Pþ..™¹T&üÞèžq]Œwá4Î.6©«IŠEæ? ƒ»v‘àãö\[ýYéI˜>Uñ!‚lDa>Ԫ΋ÆÏ©7~8AÖ]&Ãn³‰v|ÖîÊÄoÖY ±¡áäóy¨K×i˲w«\¡Â¹9Æ~€þ©œå™$ 6 6nQާf†ÂqÚ>,Þo,I¹Ó”ð •渱{I £.±H>ÒC-YnûÃöÛ馑gQ©°ÌzÎ t”a¹fñÞw0–îa,™ QºmÄpjôéc¥5žd•£Ûˆ2yܸ¤àÕé—ÒÙˆ ¶L+~±|½ç¸-¿‘·dj° òó¹qH„¾AÞÚÔ}mÝäëôÔµQƒÓ…Çl˜Vdk¨ÀýbùzŠeÉì\OclÙú=c õ;n ÈLi^Õ`Aä¢gqr<äÑKÔGÒ …ý¥ µk5µ¨úB²˜lÛ»ÉÖ¬¼ù@2ØlãEß\uÜÖ Ï«Ñ=Y&Ù0¬QÞ:È×Q€¿Ða!´ôµV³Ä#Ϻ•™¸½¥(¸ž_ˆÆ Ù²± é$/o|‡XhLÁa«¶f-=vÜAÛq˜Ò ¼ïÕ*q±…‰¶µŸ¿ä¥è¸Ô3xÉ¢ù4– ¨Žá˜j »m=-‘dl—æc\kkQôlab…e0ØòbNl•í¥{‚ôÁõÄWe°ÙÆ·éP‹¾¸êü¹ˆ|bÝßÚ-IŒÓ|óûÔLeM²aX:µQΣ¼tÔ»0âJߥA=ؕפÑÄmÓÖôûCiéj4nÙü­gˆFÚ`¸ÐD-s3åª L_Ý |ÉPq<'Aª¾ É †Whµ% o…³¹fÔ ÎaäŸ^Þù)Ùɘ°Ð˜"Çר´Y³=.´ ·½\;Àºl­í¸ƒ š¿³¶¶â t±ÒšêÕG9Òw¯Û&s܃ãc ”d;„ mj>zjZ¨äÏ “ ÿ ®'}ž±ð“D‡£ÒòhiÂþ÷bW]€egËl6qnkçþÔv‰Ó+àÚzZgÝJÌù¹ßo޾ïù·¾C`°ŽÕÖÖ£è¡Ñ“~8ØÂÄOßòRÑ»gñ¦¼Wg?µÝH²6KØ +Ú¯ L6JöAz`ß`ïègßU1nŽïFi¾yËa³Œ¼fƒ%oÒ Rhâ6Ì w•» G"¹U&/ź;¾²½ (+´Z’\³jÂ×ÿ§µÐÏ1,Ùž‹[Þ®›d°ìcò&uj£œm“ œ ©ë6?rg…W•¿J‚â¸z{±+® ¶8’ÒŽ›åÕ¾ |Üï· Ûß!†ÓÒÔñÔâBhݳøÚƒn¾Íö¹&[o°wá·GwˆZæÿjpf;Ê \ežÿøb®iakÿÓlÏE  âx× ÒîNƒT9³Â§g&aÐ`÷IiGM>nwÛ®ÑjJÙÖZÜ@ß f7Ø;𩼮SÞ»žÅG²Ï0µÿé½½òʺŠS³“0$´£¦ºÐ6ÍדTÞW)#Ùg¿³fz.ÄaJ¸]h*o+”´ ¾7Ã Ž¡Zß-ï1A26b‚+-SÃdlÅ}wôEVZ§†OA–ÇÈÙŠÑ»IúïèŠãôÙˬµO µ®~Mžƒ-އ˜ÏJÂQSÙ#xôpÓaïA’.®×U7µæ˜µ×ƒ„–‚˜Y›©°-úÛ©6Ëšæw]]ÿllÔA?ßÍZž•„$¢ŒŸã§²F ¾©wañèá¦èóÐçÃÞƒ$ÚŲe]]®ªDFŸëokÌ(vpýi91k® *Zï  ,8mßF6óÆ]²ípTqôke0»*ó÷¢1¶‰‘u 4Ÿ¼û„º%©Þy<²ï8sóyÿjèH¾AÅ}XÞ*<ðyOéb~DÂO-‡ÛTÆ”Š»@¦#胿8ÙÂ8 Å !»ôL –§–Î\Ì E×1Hnúb‹wáSʺ»]T£ lˆ?Ö‘–—ÞטPÇÌ©ìáúÒõúË“rb×\kyæ@TµÞYO„ŸX#$8pÚ=#A›eýk§|æZæWË %NÐ8d‘®£ŠŸâ3§Ì!*¼ý`­$᯴?Ð-† ²lÉH$«ÐSêû~F)âewh/?yö6$H· t*5KS¼òRH³yeÞp`~ï1çæóþþý¿ÕБ|ÌË =ƒŠ6úš‘»±¼Tx¨§e9;ƒ˜K"˜© µúɮˈ_ï]OFôlmÙ?ÍtÂŒóZCêA#ÁlpÁØwA€—6×GŽ-極ż„„qAŠhZ»[Cwè˜ZlÙÙ-O 6~_'-œ>ݹ˜ ƒ1S‹®b’µSÑÝôÅÄïôWï§”öÙ–Õ®¼é·¨œ1Þk…*ï*ÊkyíÓpH¬ø]oáF*.fÞ6áÅ TèTcMóe"²óå©Â¤0„‘g)Ÿ &äÅ®¸ýÞŸùÖóÌ:Ïèý{€©k¼™²Zý²Ÿ >«„8,$°5ñ*F21wsHpá´QkÐõzFƒ6c]²wËú×NÒáæù̵Ìàׄ¯–J¶#  pÈ„»A‰#]F8l1?Ä(…gO˜B~T©UyúÀLbË8Ř#ô^³§ª–ÜåTüO1Z×bb™ÎySØIáOPú~V{×-•bÌÔ-Š4–»R»è‘ ÙÐ^~óìGe­lH‘nuS /:6è# ©$Tj?e+–§yä¼H¥¤‘f½Š*'ò˼àëСÀýÞbÙæï#¼á½ §Ðü&Šƒ??‘²~pÐ$¹iËøBæF;[ýwzÜekµÅ~ZôîS 7÷H8v¸ ®±¡ŸðŠ?Ì3“$ýrÂj7„ÔnF¾Y ¨ÜËÂë|²O…Q¸Ñ; —…Ö Uïá ùdØ“S ž- \G=&£päÉG¢w`)/ ¬ía›«ßÂiµõ5òÈ÷˜ÿ±&¦sL‘†„ <À:R=Pe6^X7œ}o5ÚÃ64©1W¿„0•Õ³2Ókê3Ý$kå%©§'ï1þ&-[É#bML" '{ æ™"!$ó*x´(+ºÞ)ü`F(> q-qô,³vÃ.õÈš/7¢­pšÀqXç÷sY®rÜ3™w“%vQO+tñruÕ›E~‰ÜxK¶O} |Ïb!y€t¤xB“z Ê{ÆÊýl¼.°m~D‡o8úÞnúékµ†ljwì[h1Rió85b¯cm?a+«f`éÁQe¦×Ôdd½ãf"ºgàiH×Ë I¡KSNJ‘uyOÞcüN ËLZ·’M˜Ý¥FÄš˜Gð¯E@NöD‚$ÁAÍ2D@XsBIæ*C‹ŒTñhPU3gWu¼>V·Ö SøÀŒR:ª»P|âQ¾~ÕZâ9è[ SßYfí†X¤‡±]ë‘4\)û^oEZ_­/má5€à÷q·â±Ïîãs¥Ùæ<³\çþÙkå¸g2äz ï&J8îä 좞Ví`ôaè/âäéíˆÓë«6Šêi\½ý¸ðüÑÒÇþ—lžÿU©ú,ûØzùžÄBø\®uóéHòƒð„=&ñFWô A”õË+£÷•úöOÿÍÙx]`غ7WÚü‰Û>ã9Þqõ¼ß³Ÿ‹Ýõ!ÒÜ7Kå×k ØÖ©fïÔïØ¶Õ-²Ðb¤Ñ Î3ÓæpjÒ$]Å^þÄœ”'ÆÚ*~Ç@IÂWVÌÕ<ûÁÓ‚¢Àè•ËM¯¨ÊÅŸÈÉ{ÆÉ ñÌDt͆mCÏÀÓι-‘¯–@müw’+B.“é(–¦>œ—dT«•"êò”à€ÅŸ¼Çøž~­Ïœ8–úy¡˜µo$™w›1»JšóÑ}‰50ŒK_Ž á^Ï‹iŠ€ì‹B÷Û‰I‚ˆÆ#µƒšdˆ‚X¿€°æÜÚÑ„“ÌT…Q¦c‡:†Õr ©âР¨ º—ªfΫ¤nù®ëx|¯)K­o¬¬­Æ%§ñ¦3ë/¤uUv¥·?A ø)Ä¡:Có£|ýª¢¾—µÄsдç¶@§¾·‚͉²ÍÛ ³±;±Ib°‹eU»×"hºH_¸Sö¹‘œ1¼ÞŠ´½àƒ¿Z^Ú¾˜4í¸¼geª È‹µ¯îb—W7Þð2%k_Ü×8¹Å´(ï}OŠo½àdׇJÖ¿¸òjØÝàßw3XcVPWŸè¥0úúŸB¬øqß{ÀÈgǧ­urCÍÎo&•­p-?¤·û‡ОÏè'¢sB°Æ ¬zGÉ 2¯>ŽÈ[ ;gµ²‡Ð/P8i—ì_ …Yðâ=å—‡e†‡ÑÝ:à´ÏOZw3(?êä†RXwã@íØ øQ¿hð+ø¡H—ŸÄZ"0*âžWOIoöÇõ“Õ@§}müÀ5ŸÐN#·+Ÿ–Å'* ºýGA |ô’¨Hè÷›X=#¨?X1¶‰¡÷ÓvÏj¬Ê¨¾áÃ`„^ pÒæ·ô©¸YLß<ÑÂç…i~€à{Ë/ÃwHkË ¢s±hÇaÇ)Ù¸ LDo˜õüÓÿîfP~VÚ7¹'M¶@(¤°ïÆ ˆ£Û°9g×+Òx‘“nô;&÷ƒšf‘/?ˆ)“Xí´D`T ø1M¨ß¦ñϺþ’ßìF.¸‰T›gì'pqðH»ÉL/ÞÛù€0cEçUk? œÓƒÇùÁ6hyŠrä]7Ë\áP®NTÿ@öè˜%®‹ˆs7ï‚@ø¼>'!é$™UxA‹àׯ3\°ÊíY¶;UåÑ^GP~°ÿìÕb;!lÚ‡F È2éçpŽŽ‚(ížÔQù±‚äV_:X1:§ ƒ3næ †Áµ:¦m½@á¤ü†ÁI)/¯õNJ2"vóŠž–˜+¾x —ÙxôÉKÀH®.ÒýÀjAf¥÷–^O*9y]Ÿ–—å#ñòMkõ×~`çbÑŽ_Þ¶ë ŽRzµé7hFÙм!¼ˆß1ê0cV"Öùašjž½¦½¿ÁØ­´n6 SrNš¥Î)ÿ·{†Çát’ÙÍ*¬¾¨8F€¥v#ØÆfu`zrÏ®þÊsÉ›W¤ñ"ï–Gý­9©E^ÌvMîÎñ‰cÜD&døAèù/yQA“4S&±ÚëšÖ¿³ùÆé E¡Œðb¡Li<›Q¾„'6Û–’™5..þP&T¹™žèÞüŒ]q4áw©6.ΊI«?æE»ƒ ãà‘v[\öIéYýñU>˜l‚!Ô>aDƋΪ~7©ÏÖA8nÃ&]|v‰³ÄÊîÖYÖoᡱ óäK¨yËi׫w²¹Â¡\~Æ9œ©þ€$™å6 6 ŽQn†f§>ÚqÂ,oÞ,”Ó¹I ð±¸æ•£ I{±.CÒ>HûnY-éÛöÃQg‘¦Ì°©t Îzf¹a”Þña±ãóý*4;Rakr‰˜¢©ÅÒÜãú 1@MTnx†ÐÚáè.fileþÿgcrc32.c ` #_crc32p .0 =P .texta'.data.bss.rdata N_crc32_combine__get_crc_table_crc_table_crc32_combine_crc32_combine64deflate.o/ 1437066063 1011 100 100644 17606 ` Lr?2.text:´”;Y P`.data@0À.bss€0À.rdataà´:? @`@UWVSƒì4‹xl‹h8‹px‹H|ÇD$\=‰\$ ‹˜‰t$0‰\$‹X,‰\$ë9ßvŸ‰\$‹\$)\$‹X@¼=‰|$,‰ÏÁï;°Œ‰\$ ‹X4CωL$‰\$‹\$ ¶\3ÿˆ\$(‹\$ ¶3ˆ\$‹Xt9\$‰\$F\$‰\$‹\$0‰D$0ë!‹D$ #T$·P9T$ƒtƒl$„iD‰ß¶4‰ñ:L$uͶLÿˆL$'¶L$(8L$'u¹‹L$ ¶ 8u®‹L$ ¶I8Hu¡‹L$ ƒÀ‰\$(‰$ƒÁ‰L$‹L$‰L$ ‹L$¶PY8Q… ¶PY8Q…1¶PY8Q…¶PY8Q…ݶPY8Q…¶PY8Q…×¶PY8Q…­ƒÀƒÁ¶8…ê9L$,‡uÿÿÿ‹D$ ‹\$(‹$‰L$‰D$‰È‹L$,+D$,é‰L$ ‰ñ9ÈL$¶L$'ˆL$(²þÿÿ‹\$09D$‰Sp~&‰Ç‹L$,‹D$ ‰û¶Œ9þþÿÿ¶D8ÿˆL$ˆD$(éþÿÿ‰Ç´&‹D$;|$FǃÄ4[^_]ËT$ ‰Ø‰D$‹\$(‰T$‹$éiÿÿÿ‹D$ ‹$‰D$‰Ø‹\$(‰D$éOÿÿÿ‹L$ ‰Ø‹$‹\$(‰D$‰L$é5ÿÿÿ‰L$‹L$ ‹\$(‹$‹D$‰L$éÿÿÿvUWVS‰ÃƒìL‹P,‹pt‰T$0‹D$0Ò‰T$8‰t$ ‰Â÷Ú¸úþÿÿÒ‰|$4‰T$<‹kl‹s<+t$ D$4‰l$)î9Ń6‹;‹o…í„Ò1Ò9î‹K8‹Ct‚ D$‰W4‹‰l$‰4$‰D$è‹G‹@ƒø„'ƒø„>/o‹Ct‹“´ʼnè‰l$ ‰ktЃø†‹sl‹C8‹KX‹kT)Ö¶<0‰D$$‰l$,‰L$(‰{H¶D0Óç‰t$1ø#D$,‰CHt&…ÒtQ‹t$ƒê‹l$$¶L$(¶|5Óà#s41ø‹{@#D$, KD‰CH·)f‰,w·t$ƒD$f‰1‹L$ ‰“´уùw«|$ ‡Í‹‹@…À„À‹C,é½þÿÿ…ö…{1íé#ÿÿÿ‹C8‹T$0‹|$0‰$‰T$‰|$è‹CL‹kl){p){\‰ÁSD)ý÷Ù‰l$‰kl J1í‰t$ ‰þf·TAþ‰×)÷9ÖGýf‰|Aþƒèuè‹D$01í‹L$8K@L$<‰Æt&·TAþ‰×)÷9ÖGýf‰|Aþƒèuè‹;‹t$ t$0‹o…í…1þÿÿv‹ƒÀ‹S<9Ðs;‹stsl9ðs9‹C8)ò¿úFú‰|$ðþÇD$‰$艳ÀƒÄL[^_]ÃŽ9Èsî)Æ)ÂÆ9ÖGòC8‰t$ÇD$‰$è³ÀƒÄL[^_]Ãf‰l$‰t$‹G0‰$è‰G0éÇýÿÿt&‰l$‰t$‹G0‰$è‰G0é§ýÿÿ‰ê‰õ)òéhýÿÿv¼'S‰Ãƒì‹@,‹SLÀ‰C<‹CDfÇDPþTþ‰T$ÇD$‰$苃„ÇClÇC\ÇCt@Áâ‚`·Šb·’`ǃ´ÇCx‰‹€‰“Œ·P·@ÇC`ÇCh‰“‰C|ÇCHƒÄ[Ãì‰t$‹p‰\$‰Ã‰|$‰4$è‹~9{F{…ÿu‹\$‹t$‹|$ƒÄö‹V‹C ‰|$‰T$‰$è‹F{ ~{)ø){…À‰Fu¼‹F‹\$‹|$‰F‹t$ƒÄö¿UWVSƒì,‹\$@‹ktfý†M‹sl‹C8‹KX‹SH‹{D¶D0Óâ‹K@1Ð#CT‰CHG‹{4·!÷f‰y‹{`…Òf‰0‹CpÇC`‰{x‰Cd¸t;»€s‹K,)Öé9Άšƒÿ†a9Ç‚Y‹KlWý‹Ct‹³¤ȃèf+Kd‰D$‹ƒ yÿƒéf‰ÿÿÿ‹C\1É)Â…Àx‹K8Á‰T$‰L$ÇD$ ‰$è‹Cl‰C\‹èøúÿÿ‹ƒxÀƒÀé^ýÿÿ´&UWVSƒìL‹\$`‹ktfý††‹sl‹C8‹KX‹SH‹kD¶D0‹{4Óâ‹K@1Ð#CT!÷‰CHDE·…Òf‰yf‰0t‹C,‰ñ)Ñ-9Á†{‹C`ƒø†”‹“ ƒè‹‹¤f+spf‰4Q‹‹˜ƒîˆ¶ÀƒÂ¶€‰“ fƒ„ƒ˜fþÿ‡·ö¶†fƒ„ƒˆ ‹ƒœ‹ktƒè9‹S`”À¶À‰D$)Õ;“€‰T$‰kt‡oƒý†f‹{l‰Ö‹S@ƒî‹KX‹CH‰|$8‹{4‰T$ ‹SD‰s`‰L$0‰|$$‹{8‰T$(‹T$8‰l$<‰\$‰|$,‹{T‰|$4‹\$ƒÂƒî‹l$,¶L$0‰Sl¶|Óà‹l$ 1ø‹|$$#D$4‰CH‹\$(!×…ö C·f‰\}‹|$f‰‰w`u³‹D$8‰ûD$‹l$<‰Gl‹|$…ÿ„Tþÿÿ‹S\1É)Ð…Òx‹K8щD$‰L$ÇD$ ‰$è‹Cl‰C\‹èïøÿÿ‹‹p…ö… þÿÿ1ÀƒÄL[^_]ËC8‹‹¤¶0‹ƒ fÇA‹‹˜ˆƒÀ¶Ò‰ƒ fƒ„“”‹“œ‹ktƒê9ДÀƒí¶À‰D$‹Cl‰ktƒÀ‰CléEÿÿÿt&‹S8‹D$ClÇC`‹KX‰Cl¶4‰sH¶TÓæ1ò#ST‰SHéÿÿÿ‰Øèwôÿÿ‹T$d‹Ct…ÒtA…ÀtLƒø‡[ýÿÿ‹C`‹sléŸýÿÿt&fÁî·ö¶†éåýÿÿ‰Øèvñÿÿ‹sl‰C`évýÿÿ=†þþÿÿ…Àu´‹Sl¸ƒúFƒ|$d‰ƒ´t]‹‹ ¸…É„Îþÿÿ‹C\1É)Â…Àx‹K8Á‰T$‰L$‰$ÇD$ è‹Cl‰C\‹èy÷ÿÿ‹‹@…À•ÀƒÄL[¶À^_]ËC\1É)Â…Àx‹K8Á‰T$‰L$‰$ÇD$ è‹Cl‰C\‹è/÷ÿÿ‹ƒxÀƒÄL[ƒÀ^_]ö¿W¸ÿÿVSƒì‹\$ ‹|$$‹s ƒîþÿÿCð‹Stƒú†¹Sl‹C\ÇCt…Ò‰Sl t9ÊrI)ʉSt1Ò‰Kl)Á…Àx‹S8‰L$‰T$ÇD$ ‰$è‹Cl‰C\‹èöÿÿ‹‹@…ÀtR‹Sl‹C\‹K,)Âé9Êr1É…Àx‹K8Á‰T$‰L$ÇD$ ‰$è‹Cl‰C\‹è?öÿÿ‹‹@…À…Dÿÿÿ1ÀƒÄ[^_ÉØèbòÿÿ‹St…Ò”À…ÿtf„À„,ÿÿÿƒÿǃ´t\‹Kl¸‹S\9Ñ~À)Ñ0À…Òx‹C8ЉL$‰D$ÇD$ ‰$è‹Cl‰C\‹è¾õÿÿ‹‹H1À…É•À뀄À„Æþÿÿéqÿÿÿ‹S\1É‹Cl)Ð…Òx‹K8щD$‰L$ÇD$ ‰$è‹Cl‰C\‹èkõÿÿ‹ƒxÀƒÀé+ÿÿÿt&¼'WV‰ÖS‰Ãƒì‹Stëe‹Cl‹S8ÇC`‹‹¤¶‹ƒ fÇA‹‹˜ˆƒÀ¶Ò‰ƒ fƒ„“”‹»œ‹St‹KlƒïƒêƒÁ9ø‰St‰Kl„Œ…Òu˜‰Øèñÿÿ‹{t…ÿuŠ1À…ötgƒþǃ´„¬‹“ ¸…ÒtE‹S\1É‹Cl)Ð…Òx‹K8щD$‰L$ÇD$ ‰$è‹Cl‰C\‹èjôÿÿ‹‹@…À•À¶ÀƒÄ[^_ö‹C\1Ò)Á…Àx‹S8‰L$‰T$ÇD$ ‰$è‹Cl‰C\‹èôÿÿ‹‹H…É…ÈþÿÿƒÄ1À[^_ËS\1É‹Cl)Ð…Òx‹K8щD$‰L$‰$ÇD$ è‹Cl‰C\‹èÍóÿÿ‹ƒxÀƒÄ[ƒÀ^_Ãt&¼'UWVS‰Ãƒì<¶5‰T$ ‹Cté’t&ÇC`‹Sl‹K8…Òt|ÿ¶o‰l$¶/9l$„¨¶¶‹ƒ ‹‹¤fÇA‹‹˜ˆƒÀ¶Ò‰ƒ 1Éfƒ„“”‹“œƒê9ЋCt‹Sl”ÁƒèƒÂ…ɉCt‰Sl…ƒ=‡gÿÿÿ‰Øè0ïÿÿ‹|$ ‹Ct…ÿ„®…À„µƒøÇC`‡@ÿÿÿ‹K8‹Slé^ÿÿÿ¶o9l$…Pÿÿÿ¶o9l$…Bÿÿÿo¼‰D$,‹D$‰|$$‰T$(ëa¶¶U}9Ðu[¶U}9ÐuP¶U}9ÐuE¶U}9Ðu:¶U}9Ðu/¶U}9Ðu$ƒÅ¶U9Ð…Ì9l$$†Â¶U}9Ðtš‹T$(‰ý‹D$,+l$$½9lj{`‡Cƒÿ†’þÿÿ‹ƒ Wý‹‹¤fÇA‹‹˜ˆ¶ÒƒÀ¶’1ɉƒ fƒ„“˜fƒ„³ˆ ‹“œƒê9ЋS`‹Ct”ÁÇC`)ÐSl…ɉCt‰Sl„}þÿÿ‹C\1É)Â…Àx‹K8Á‰L$‰T$ÇD$ ‰$è‹Cl‰C\‹èJñÿÿ‹‹H…É…¡ýÿÿ1ÀƒÄ<[^_]Ã=vï…À…Kþÿÿƒ|$ ǃ´te‹“ ¸…ÒtÉ‹S\1É‹Cl)Ð…Òx‹K8щD$‰L$‰$ÇD$ è‹Cl‰C\‹èÌðÿÿ‹‹h1À…í•ÀƒÄ<[^_]ÉC`‰Çé¼þÿÿ‹S\1É‹Cl)Ð…Òx‹K8щD$‰L$‰$ÇD$ è‹Cl‰C\‹èvðÿÿ‹ƒxÀƒÄ<[ƒÀ^_]ËT$(‹D$,éFþÿÿ¶UWVSƒìL‹L$`‹t$d‹|$h…É„(‹T$`…ö‹Z„…Û„‹kƒý‰l$4„ƒý„‚‹St¸þÿÿÿ…Ò…Wƒ|$4„º‹C,ÇC9ǃB‹T$`‰Ø‹l$`‹R‹m‰T$8‹T$`‰l$<‰z‰2èòëÿÿ‹{tƒÿ‰|$,†·f‹kl‹{8‹S@‹t$,‰l$0‹kT‹KX‰|$‹{4‰T$ ‹CHƒî‰l$‹kD‹T$0‰L$‰|$$‰l$(‹l$ ‰\$‹\$¶L$¶|Óà‹\$1ø‹|$(#D$ G‹|$$‰CH·!×f‰\}f‰ƒÂƒîuËl$,‹|$0‹\$D=þ‰Cl‰ØÇCtè;ëÿÿ‹Ctƒø‰D$,‡Kÿÿÿ‹T$,‹|$`‹D$,‹l$<‰“´‹T$8ClÇCtÇCx‰Cl‰C\1ÀÇC`ÇCh‰/‰W‹|$4‰{ƒÄL[^_]Ël$4…ít)Çþ‰Çé«þÿÿƒ{*¸þÿÿÿ„oþÿÿëÔ‹SL‹CDfÇDPþTþ‰T$ÇD$‰$è‹C,ÇClÇC\ǃ´뢋T$`‰|$‰t$‹B0‰$è‹l$`‰E0é#þÿÿ¸þÿÿÿéeÿÿÿvVSƒì‹\$ …Û„À‹s…ö„µ‹C …À„ª‹C$…À„Ÿ‹FÇCÇCÇCÇC,‰F‹FÇFƒø|?uBÇFqÇD$ÇD$Ç$è‰C0ÇF(‰4$è1ÀƒÄ[^Ã÷؉FƒøÇF*u¹ÇD$ÇD$Ç$èë·¸þÿÿÿëÄ´&ƒì‰t$‹t$ ‰\$‰4$è ÿÿÿ…À‰Ãu‹FèKìÿÿ‰Ø‹t$‹\$ƒÄö¼'‹D$…Àt‹P¸þÿÿÿ…Òtƒzu ‹D$‰B1ÀÃóøþÿÿÿÃt&S‹D$‹\$ ‹L$…Àt ‹P…Òt…Ût‹B‰1À…Ét‹’¼‰[øþÿÿÿ[ô&UWVSƒì‹D$0‹|$4‹l$8…Àtg‹p…öt`‹V¸ûÿÿÿƒÂ9–¤rE‹–¼»¸)Ó9ßN߉ÙÓà‰ÑƒèÚ!èÓàf †¸‰–¼‰4$è‰ÙÓý)ßu½1ÀƒÄ[^_]øþÿÿÿëñt&¼'UWVSƒì,‹|$@‹t$D…ÿ„ ‹_…Û„ÿƒþÿ„ªƒþ ‡í‹D$HÁè„À…Þƒ|$H¸þÿÿÿ~‹“„‹L$HR‹…h‰D$‹ƒˆ9ȉD$tk‹O1À…É…}9Öt= vÁá‘`‰³„·±b·‰`‰³€‰‹Œ·J·R‰‹‰S|‹L$H‰‹ˆƒÄ,[^_]þéUÿÿÿ,v‹L$1À9 ­ht‹O1À…É„ƒÿÿÿ‹G …À„V‹…À„<‹kýš„=‹G…À„ ‹K(ƒý*‰;ÇC(‰L$„΃ýE„ ‹CƒýI„åƒý[„›ƒýg„$…À…‘‹G…Àu‹T$1ÉÒƒ|$Á É)Ê…Ò†‹Súš„:…À„:‹ƒˆƒø„òƒø„g‹ƒ„ÇD$‰$@ÿ…hPþƒú†0ƒøt…À…ƒ‹G…À„ ‹“„1Àémþÿÿƒ{„E‹C0Áà ¨ˆÿÿ1Àƒ|$Žx‰Áº…B é‹kl‰ÈƒÈ ÇCq…í‹kEȉÈ÷â)ÑÑéÊÁê‰ÐÁà)ÐP‹C‰ÑÁéˆL‹KˆTP‰S‹Sl…Òt6‹W0‹k‰ÑÁêˆT‹SÁéˆL·W0‹k‰ÑÁéˆL‹KˆTƒÀ‰CÇD$ÇD$Ç$è‹k‰G0é[þÿÿt&‹C‰D$‹C‹T$‹J…É„ ‹K ·j‰D$9郉t$‰Å‰Öë)‹V¶ ‹Sˆ ‹SƒÀ‹K ‰C·rƒÁ‰K 9ñsH‰Ö9C uÒ‹R,…Òt9Å‚‰øèvèÿÿ‹k;k „‹s‰è‹K 릃ø…þÿÿ‰øèPèÿÿéhþÿÿ‹t$‰l$‹j,…ít,9D$s&+D$‰D$‹D$C‰D$‹G0‰$è‹S‰G0f‹J9K t`‹k‹Cépýÿÿ…À…ë‹Ct…À…»ýÿÿúš…¯ýÿÿéþÿÿ‰øèÒçÿÿ‹G…ÀuÇC(ÿÿÿÿéçýÿÿ¸þÿÿÿé¢üÿÿt&‹Gébýÿÿ‹CÇC ÇCI‹J…Ʉ͉Áë$‹k ‹R¶*ƒÅ‰k ‹kˆT ƒÁ„Ò‰Kt}‹S9K u׋j,…ít9Á‡3‰øèIçÿÿ‹C;C „e‹S‰Áë®¶ƒúŽýÿÿƒú°@Žtýÿÿƒú°Àº€DÂébýÿÿ¡‹“„‰G‹CƒøÀ÷ЃàûéŒûÿÿ1í‹S‹R,…Òt9Ȃޅí„u‹k‹Cé?üÿÿvÇCšéÄüÿÿt&º‰Øèôòÿÿé£üÿÿ‹Séÿÿÿ´&‹G…À„¹ûÿÿt&¡‰G¸þÿÿÿéûÿÿ)è‰D$k‰l$‹G0‰$è‰G0éÑýÿÿ‹S‹R,…ÒtUP;S ‡¡¶O0‹kˆL‹O0‹kÁéˆL‰SÇD$ÇD$Ç$è‰G0‹CÇCqé}ûÿÿÇCqéqûÿÿv‹S‹J$…É„‰Áë$‹k ‹R$¶*ƒÅ‰k ‹kˆT ƒÁ„Ò‰Kt1‹S9K u׋j,…ít9Á‡™‰øèåÿÿ‹C;C „·‹S‰Áë®1í‹S‹R,…Òt9È‚P…ít$‹k‹CéÞúÿÿÇC ‹SÇC[‹CécÿÿÿÇCg‹S‹Céãþÿÿº‰ØèÒïÿÿé!ûÿÿ)Á‰L$C‰D$‹G0‰$è‰G0é­ýÿÿ)Á‰L$C‰D$‹G0‰$è‰G0éGÿÿÿ‰l$‹t$‰è‹SéˆüÿÿÇCIé(ýÿÿÇC[éÖþÿÿÇCgé\þÿÿ¡‰G‹Céžýÿÿ‰øèäÿÿ‹CP;S ‡úÿÿéDþÿÿÇD$ÇD$Ç$è‹S‰G0‹CÆ‹CÆD‹‹CÆD‹KB‰C…É„½C‰D$‹…À•Àƒy,‰ÅÀ÷ЃàŃyÀ÷ЃàŃyÀ÷ЃàŃy$‹L$À÷Ѓà舋C‹K‹@ˆD‹C‹K‹@ÁèˆD‹C‹K·@ˆD‹C‹K¶@ˆD‹«„J‰K¸Kƒý tƒ»ˆ¸Žˆ‹C‹K‹@ ˆD ‹KB ‰C‹i‰L$…ít+‰Í‹K‹EˆD ‹C‹K‹@ÁèˆD B ‹S‰C‰T$‰Ñ‹I,…É…€ÇC ÇCEé2úÿÿ)Á‰L$C‰D$‹G0‰$è‰G0éýÿÿ)Á‰L$C‰D$‹G0‰$è‰G0éüÿÿ‰Á½éäûÿÿ‰Á½éFýÿÿ¡‹“„‰G1ÀéM÷ÿÿ‰D$‹C‰D$‹G0‰$è‰G0‹C‰D$‹CéXÿÿÿƒýžÀÁàéñþÿÿ‹CjÆD‹CÆD‹CÆD‹CÆD‹CÆD‹‹„¸‰kkƒù tƒ»ˆ¸~ˆE‹CÆD B ‰CÇCqé—÷ÿÿƒéžÀÁàëØ´&¼'‹D$…Àt/‹@…Àt.‹T$‰Œ‹T$ ‰€‹T$‰‹T$‰P|1Àøþÿÿÿøþÿÿÿö¼'ƒì‹L$‰$‹\$‰t$‰|$q‰òA?ÁêÁèÐÈ…Û‰l$ „Í‹[…Û„‹Sƒú„¥ƒút'ƒúÒ÷Òƒâƒ{0tnD‹$‹t$‹|$‹l$ ƒÄË{º…ÿt׋o…ít‹WƒÂ‹o…ít)Õ´&ƒÂ€|ÿuö‹o$…ít )Ճ€|ÿuö‹,j…ÿEÕƒ{0u’ƒ{PuŒ‰È‰ËÁè ðÁëØÁéÈÐévÿÿÿfƒ{lÒƒâüƒÂ éYÿÿÿƒÀ é[ÿÿÿ´&UWVSƒì,‹t$@…ö„ ƒ|$D‹^ÿ…Û„÷‹D$D…Àˆë‹F …À„΋…À„¹ƒ|$D‹C•D$…S‹n…í„‹K(ƒø*‰3‰L$‹L$D‰K(„ƒøE„UƒøI‹S„úƒø[„ƒøg„È…Ò…0‹F…À„…‹Súš„Æ…À„‹ƒˆƒø„/ƒø„®‹ƒ„‹L$D‰$@‰L$ÿ…hPþƒú†žƒø„¦…À„žƒø„ 1À€|$„ˆƒÄ,[^_]Ël$D1Òíƒ|$D”Â1ÉÒ)Õ‹T$Òƒ|$Á‰Ï<ÿ)ú9ÕGÿÿÿ€|$„<ÿÿÿ¡‰F¸ûÿÿÿë©…Àuì‹{t…ÿ…3ÿÿÿ‹L$D1À…Étúš…ÿÿÿéqÿÿÿ¶‹n1À…í…kÿÿÿÇC(ÿÿÿÿƒÄ,[^_]Ãt&‰ðè©Þÿÿ‹n…í„Ò‹FéÁþÿÿ¶ƒ{„m‹C0Áà ˆˆÿÿ1Àƒ»ˆŽ!‹Sl Á‰È‹kƒÈ ÇCq…Òº…BEȉÈ÷â‹C)ÑÑéÑÁé‰ÊÁâ)ʃ‰×Áï‰ùˆL‹KˆT‹KlP‰S…Ét8‹V0‹{‰ÑÁêˆT‹SÁéˆL·V0‹k‰×Áï‰ùˆL‹KˆTƒÀ‰CÇD$ÇD$Ç$è‰F0‹CƒøE…«ýÿÿ‹{‹S‹G…À„ЋK ‰ø·o‰T$9ésc‰Õë)‹G¶ ‹Cˆ ‹CƒÂ‹K ‰S·xƒÁ‰K 9Ïv4‰Ç9S uÒ‹@,…Àt9ê‡Þ‰ðèGÝÿÿ‹k;k „K‹{‰ê‹K 릉l$‹x,…ÿt 9T$‚û‹P9S „T‹C‹SƒøI…ýÿÿ‹CéN‹T$D‰Øè=éÿÿPþƒú‡býÿÿÇCšéVýÿÿt&‹S°…ÒŽkýÿÿƒú„:‹V0‹C‹{‰ÑÁꈋSÁéˆL·V0‹k‰×Áï‰ùˆL‹KˆTƒÀ‰C‰ðèyÜÿÿ‹C…À~÷؉C‹S1À…Ò”ÀƒÄ,[^_]Ã|$D„Þƒ|$DtkÇD$ ÇD$ÇD$‰$èƒ|$DuD‹SL‹CDfÇDPþTþ‰T$ÇD$‰$è‹{t…ÿuÇClÇC\ǃ´‰ðè×Ûÿÿ‹N…É…güÿÿÇC(ÿÿÿÿƒÄ,1À[^_]ËSÇC ÇCI‹H…É„ï‰Ñë#‹{ ‹@¶8ƒÇ‰{ ‹{ˆƒÂ„À‰St]‹C9S uØ‹@,…Àt9Ñ‚$‰ðè]Ûÿÿ‹K;K „Ç‹C‰Ê믋“„ƒúŽÐüÿÿƒú°@ŽÅüÿÿƒú°€ºÀEÂé³üÿÿ1ÿ‹C‹h,…ít9Ñ‚`…ÿ„d‹C‹Sƒø[…ûÿÿv‹C‹H$…É„"‰Ñë#‹{ ‹@$¶8ƒÇ‰{ ‹{ˆƒÂ„À‰Stn‹C9S uØ‹@,…Àt9Ñ‚G‰ðè Úÿÿ‹K;K „‹C‰Ê믋F…À„<úÿÿ¡‰F¸þÿÿÿéûÿÿ)ê‰T$k‰l$‹F0‰$è‰F0éýÿÿ1ÿ‹C‹@,…Àt9Ñ‚r…ÿ„„‹C‹Sƒøg…=úÿÿt&‹C‹@,…ÀtXB;C ‡j‹~0‹k‰ùˆL‹~0‹kÁï‰ùˆL‰CÇD$ÇD$Ç$è‹S‰F0ÇCqéÖùÿÿÇCqéÊùÿÿfÇCg‹C‹SéÿÿÿÇC ‹CÇC[‹Sé˜þÿÿt&‹T$D‰Øè%äÿÿéåùÿÿ¸þÿÿÿéúÿÿ¶)ʉT$K‰L$‹F0‰$è‰F0é™þÿÿ)ʉT$K‰L$‹F0‰$è‰F0é¼ýÿÿ+T$‹D$‰T$C‰D$‹F0‰$è‰F0‹CéÜûÿÿ´&‰l$‹C‰êé¶ûÿÿf=š…¢øÿÿéNþÿÿÇCI‰øéýÿÿfÇCgé—þÿÿt&ÇC[é·ýÿÿt&‰ðè™Øÿÿ‹SB;C ‡¢øÿÿé{þÿÿt&‹C‹N0‹Sˆ ‹V0‹KÁêˆT·N2‹SˆL¶N3‹SˆL‹N‹SˆL‹V‹KÁêˆT·N ‹SˆL¶N ‹SˆLƒÀ‰Cé™ûÿÿÇD$ÇD$Ç$è‹S‰F0‹CÆ‹SHÆD‹‹SÆD‹S‰K…Ò„œ‹:‹kÍ…ÿ•Áƒz,‰ÏÉ÷уáσzÉ÷уáσzÉ÷уáùƒz$Ò÷ÒƒâʈU‹S‹K‹RˆT‹S‹K‹RÁêˆT‹S‹K·RˆT‹S‹K¶RˆT‹»„H‰KºKƒÿ tƒ»ˆºŽåˆ‹S‹K‹R ˆT ‹{P ‰S‹O…Ét#‹W‹KˆT ‹S‹K‹RÁêˆT ‹{P ‰S‹o,…íuxÇC ÇCEéùÿÿ)ʉT$K‰L$‹F0‰$è‰F0énüÿÿ)ʉT$K‰L$‹F0‰$è‰F0é€ûÿÿ‰Ê¿ébûÿÿ‰Ê¿é$üÿÿ‰$èé‡úÿÿ‰T$‹C‰D$‹F0‰$è‹{‹S‰F0édÿÿÿƒÿžÂÁâé ÿÿÿ‹SxÆD‹SÆD‹SÆD‹SÆD‹SÆD‹‹„º‰{{ƒù tƒ»ˆº~ˆ‹SÆD P ‰SÇCqéàõÿÿƒùžÂÁâëÙ¶¼'VSƒì‹\$ …Û„á‹S…Ò„Ö‹rƒþE…ˆ‹B…Àt‰D$‹C(‰$ÿS$‹S‹BD…Àt‰D$‹C(‰$ÿS$‹S‹B@…Àt‰D$‹C(‰$ÿS$‹S‹B8…Àt‰D$‹C(‰$ÿS$‹S‰T$‹C(‰$ÿS$1Àƒþq•ÀÇCD@ýƒÄ[^öƒþ*„oÿÿÿƒþ[„fÿÿÿƒþI„]ÿÿÿƒþqf„Rÿÿÿƒþg„Iÿÿÿþš¸þÿÿÿ„8ÿÿÿ벸þÿÿÿë«´&UWVSƒì,‹D$X‹t$@‹|$D‹l$L…À„¤ƒ|$\8…™€81……ö„U‹F ÇF…À„c‹^$…Û„Hƒÿÿ¸Dø…툃ýºé‹D$Pƒèƒø‡ƒ|$H…üƒýóƒýŽêƒÿ á‰øÁè„À…Ôƒ|$TÉ‹D$TÁè„À…ºƒý¸ DèÇD$ÄÇD$‹F(‰T$‰$ÿV ‹T$…À‰Ã„å‰F‰é‰Pº«ªªª‰h0‰0Ç@¸Óà‹L$P‰C,‰Å@ÿ‰C4¸ƒÁÓà‰KP‰Á‰CL‹D$Pƒé‰KTƒÀ ÷âÑê‰SXÇD$‰l$‹F(‰$ÿV ‰C8ÇD$‹C,‰D$‹F(‰$ÿV ‰C@ÇD$‹CL‰D$‹F(‰$ÿV ‹L$PǃÀƒÁ‰CD¸Óà‰ƒœÇD$‰D$‹F(‰$ÿV ‹“œ •‰K ‹K8‰C…É„Ћk@…í„Å‹KD…É„º…À„²‰ÑƒáþÁ‰‹¤‹L$TRЉƒ˜‰»„‰‹ˆÆC$‰4$è^äÿÿ…À‰ÃtƒÄ,‰Ø[^_]Ãí²é þÿÿt&‹FèˆÑÿÿƒÄ,‰Ø[^_]Ã÷Ý1Òéîýÿÿt&ƒÄ,»þÿÿÿ‰Ø[^_]ÃÇF$é¬ýÿÿt&ÇF ÇF(éŠýÿÿ»úÿÿÿ뎶¡ÇCš»üÿÿÿ‰F‰4$èüÿÿégÿÿÿ»üÿÿÿé]ÿÿÿt&WVSƒì‹D$(‹t$ ‹|$$…À„ùƒ|$,8…î€81…å…ö„ê‹F ÇF…À„¸‹^$…Û„Ÿƒÿÿ„Œƒÿ »‰øÁè„À…®ÇD$ÄÇD$‹F(‰$ÿV …À‰Ã„³‰F‰0Ç@Ç@Ç@0Ç@,€Ç@4ÿÇ@PÇ@L€Ç@TÿÇ@XÇD$ÇD$€‹F(‰$ÿV ‰C8ÇD$‹C,‰D$‹F(‰$ÿV ‰C@ÇD$‹CL‰D$‹F(‰$ÿV ǃÀǃœ@‰CDÇD$ÇD$@‹F(‰$ÿV ‹“œ •‰K ‹K8‰C…É„±‹K@…É„¦‹KD…É„›…À„“‰ÑƒáþRÁЉ‹¤‰ƒ˜‰»„ǃˆÆC$‰4$èèáÿÿ…À‰Ãt ƒÄ‰Ø[^_ËFè!ÏÿÿƒÄ‰Ø[^_ÿé€þÿÿÇF$éUþÿÿfÇF ÇF(é5þÿÿ»úÿÿÿë´¶»þÿÿÿë§¡ÇCš»üÿÿÿ‰F‰4$è½ùÿÿé†ÿÿÿ»üÿÿÿé|ÿÿÿ´&¼'UWVSƒì,‹D$D‹l$@…À„Ž…í„†‹P…Ò„{‹‰M‹H‰M‹H‰M‹H ‰M ‹H‰M‹H‰M‹H‰M‹H‰M‹H ‰M ‹X$‰]$‹X(‰](‹p,‰u,‹p0‰u0‹@4‰E4‰$‰T$ÇD$ÄÇD$ÿÑ‹T$…À‰Ã„öÉljE‰Ö¸Ä…×÷Ç…±‰ÁÁé¨ó¥…¨…y‰+ÇD$‹C,‰D$‹E(‰T$‰$ÿU ‰C8ÇD$‹C,‰D$‹E(‰$ÿU ‰C@ÇD$‹CL‰D$‹E(‰$ÿU ‰CDÇD$‹ƒœ‰D$‹E(‰$ÿU ‹T$‰Æ‰C‹C8…À„N‹{@…ÿ„C‹KD…É„8…ö„0‹{,‹J8‰T$‰$ÿ‰|$‰L$è‹T$‹{,‹C@‹J@ÿ‰|$‰$‰L$è‹T$‹{L‹CD‹JDÿ‰|$‰$‰L$è‹T$‹C‹{ ‹J‰$‰|$‰L$è‹T$‹K‹BÈ+B‰C‹ƒœ‰Â@ƒâþÁÖƒ”‰ƒ ƒˆ ‰ƒ$ ƒ| ‰ƒ0 1À‰³¤‰‹˜ƒÄ,[^_]öˆé{þÿÿ·¨f‰¹„hþÿÿëß·ƒèƒÆf‰ƒÇé;þÿÿ¶¶{rˆ¸Ãéþÿÿ¸þÿÿÿë¡t&‰,$èèöÿÿ¸üÿÿÿ뎸üÿÿÿéƒÿÿÿ deflate 1.2.8 Copyright 1995-2013 Jean-loup Gailly and Mark Adler p        €€ € € F'`'.(l()¯*ÿ(&!-!4!˜+Ò'ï$ %Ö,ê % ,ç ,w ,@ $d %€ ,z%ö,@,â,0,±,,,T,¢,Ü%µ$%,£,ù,/(c))-K*x+ÿ!.!;!B!Œ!€!})d*w& && *{ *w!*—!*Ú!&"*|#*œ#*Á#&ç#*ñ&!q'&¼()S*.*(ÿ+&$,*¬,*4-*T-*z-*.*Ê/*ê/*0/-0*s41ƒ40¡4&Å61Ó60ø6&È8'ç8'9'#9'ht€Œ˜¤°¼ÈÔ.fileþÿgdeflate.c À _lm_initÐ  `5€ D R   `p p0 ~Ð ‹0 ¡€ ³` Á  ÓÐ ã ñ  $  à$ _deflateð% Ð0 'Ð1 6Ð4 D07 .textú9Y.data.bss.rdataØ Qdr~_memcpy _memset _adler32 _crc32 ˆ ˜ © ³ Å _zcalloc _zcfree Ð_longest_match_fill_window_configuration_table_flush_pending_deflate_slow_deflate_fast_deflate_stored_deflate_huff_deflate_rle_deflateSetDictionary_deflateResetKeep_deflateReset_deflateSetHeader_deflatePending_deflatePrime_deflateParams_deflateTune_deflateBound_deflateEnd_deflateInit2__deflateInit__deflateCopy_deflate_copyright__length_code__dist_code_z_errmsg__tr_flush_bits__tr_flush_block__tr_init__tr_stored_block__tr_aligninfback.o/ 1437066063 1011 100 100644 9285 ` LB".text ´”  P`.data@0À.bss€0À.rdata@ T„!@`@WVSƒì‹D$,‹t$ ‹|$$‹\$(…À„Ƀ|$08…¾€81…µ…Û„¦…öt&„šƒÿ‘ƒÿŽˆ‹V ÇF…ÒtZ‹F$…ÀthÇD$ÌÇD$‹F(‰$ÿV …Àtdº‰ùÓâ‰FÇ@€‰x$‰P(‰X4Ç@0Ç@,1ÀƒÄ[^_Ãv‹F$ÇF ÇF(…Àu˜ÇF$ëf¸þÿÿÿëϸúÿÿÿëȸüÿÿÿëÁt&¼'UWVS윋œ$°…Û„p ‹”$°‹j…í„^ ‹1öÇBÇE ÇE…ÀÇE,‰„$Œt‹r‹U(¸ 1Û‹}4‰T$H•0‰|$@1ÿ‰T$Lƒè ƒøv#‹”$Œ¸þÿÿÿ‹¼$°‰‰wÄœ[^_]Ãÿ$…0t&‹”$Œ¸ýÿÿÿëÐf‹E(;D$H‡c‹”$Œ¸ë³ÇEƒþv|$H‡?‹EL‹MT‰D$,¸‹T$,Óàƒè!ø‰L$0 ‚¶A¶·If‰L$P¶È9ˉL$Xƒ ‰ð‰l$DëQv‹´$Œ‰ÙƒÃƒè¶ƒÆ‰´$Œ‹t$,Óâ¶L$0׺Óâƒê!ú –¶Q¶1·i¶Ê9Ù†2…Àu®‹´$¸Œ$Œ‰L$‰4$ÿ”$´…Àt{‹T$D‹t$D‹RL‹vT‰T$,‰t$0ésÿÿÿvƒû ‰ðv2éÖt&‹´$Œ‰ÙƒÃƒè¶ƒÆ‰´$ŒÓâ׃û ‡§…ÀuÓ‹”$¸´$Œ‰t$‰$ÿ”$´…Àu³‰Æ1Ò¸ûÿÿÿéSþÿÿt&‰ÙƒãøƒáÓïƒû‡‰ðë)‹´$Œ‰ÙƒÃƒè¶ƒÆ‰´$ŒÓâ׃û‡ð…ÀuÓ‹´$¸Œ$Œ‰L$‰4$ÿ”$´…Àu³‰Æ1Ò¸ûÿÿÿéÜýÿÿ‹M…Éu[ƒû‰ðv.é$‹´$Œ‰ÙƒÃƒè¶ƒÆ‰´$ŒÓâ׃û‡ù…ÀuÓ‹´$¸Œ$Œ‰L$‰4$ÿ”$´…Àu³ë‰Ù¸ƒáƒãøÓïÇEéKýÿÿ+D$H‹¼$À‰D$‹E4‰<$‰D$ÿ”$¼‹”$Œ…À„ð¸ûÿÿÿé%ýÿÿ´&‰Æ‰ø‰úÁèâÿÿ5ÿÿ9„¤‹”$°¸ÇBÇEéÏüÿÿt&‰Æ‰ø‰ù‰úƒàÁéÁê ƒáƒâƒÁƒÂƒëÁï=‰E`‰Md‰U\‡)ƒù‡ 1À‰Á‰ðÇEh‰þ‰T$Dƒûw2…À„`‹¼$Œ‰ÙƒèƒÃ¶ƒÇ‰¼$Œ‹}\Óâ‹MhÖ‰|$D·” ‰÷ƒÁƒçƒëÁî;L$Df‰|Up‰Mhr¥ƒù‰÷‰Æ‰Èwf·” ƒÀƒøfÇDUpvé‰Eh‹T$LÇET‰Ul‰UL•ð‰T$`UT‰T$pUl‰T$dUp‰T$t‹T$`ÇD$Ç$‰T$‹T$p‰T$‹T$d‰T$ ‹T$t‰T$è…À„¦‹”$°¸ÇBTÇEéeûÿÿ‹”$°¸ÇB0ÇEéFûÿÿ‹”$°‹D$H‹L$@‰r‰B‹„$Œ‰J ‰‹E(9E,‰}8‰] Ün. ¼ŽN ü`Qƒq1  a! ¢A âY ’;y9 Òi) ² ‰I òU+u5 Ê e% ª…E ê] šS}= Úm- º M úSÃ#s3 Æ c# ¦ƒC æ[ –C{; Ök+ ¶ ‹K öW@3w7 Îg' ®‡G î _ žc? Þo/ ¾O þ`Psp0 Á ` ¡€@ áX ‘;x8 Ñh( ±ˆH ñTã+t4 É d$ ©„D é\ ™S|< Ùl, ¹ ŒL ùR£#r2 Å b" ¥‚B åZ •Cz: Õj* µ ŠJ õV@3v6 Íf& ­†F í ^ c~> Ýn. ½ŽN ý`Qƒq1 à a! £A ãY “;y9 Ói) ³ ‰I óU+u5 Ë e% «…E ë] ›S}= Ûm- » M ûSÃ#s3 Ç c# §ƒC ç[ —C{; ×k+ · ‹K ÷W@3w7 Ïg' ¯‡G ï _ Ÿc? ßo/ ¿O ÿA@!  @a`10  Á@     ÆØ¨›Ctê${re û  2 Œ O¥¼Ü*E0 4 8 < @ D H L P T X \ ` d h l p t x .fileþÿginfback.c  # /€<€ J` .text›.data.bss.rdata& _zcalloc _zcfree _memcpy Z i w_inflateBackInit__inflateBack_order.3778_lenfix.3756_distfix.3757_inflateBackEnd_inflate_table_inflate_fast inffast.o/ 1437066063 1011 100 100644 2892 ` Lb .text@ ´D  P`.data@0À.bss€0À.rdataPô @0@UWVSì„‹„$˜‹œ$˜‹@‹‹s ‰D$‹Cƒê‰T$‰õƒíDû‰D$(‹C‹\$‰4$‹t$‰Â+”$œ‹[,„ÿþÿÿ‹v0|‰|$L‹|$‰\$P‹\$‰D$ ‹D$‰t$,‹4‰Þ‹@(‰|$8‹~L‰D$X‹C8‹[<‰|$‹|$‹vP$‹T‰t$<¾‰T$\‰|$¶L$‰÷Óç‹L$ƒï‰|$$‹yX‰ù‹|$,Óæƒî‰t$H‹t$8Áï‰|$DÁç‰|$@ƒî‰t$4þ‰t$`ƒûw'‹T$‰Ù¶r¶RÓæKƒÃÓâò‹t$ЃÆ‰t$‹T$$‹|$!—¶J·rÓè)˶ …Ét_öÁ…ÕöÁ@…‡‰l$‹l$ëöÁ…µöÁ@…gº·öÓâ‰Ñƒé!ÁÎTµ¶J·r¶ùÓè¶ )û…ÉuÁ‹l$‰òˆUƒÅ;l$ s‹t$(9t$‚9ÿÿÿ‹T$‰Ù¾Á鋼$˜)ÊÁá)ˉÙÓæƒî!ÆB‰E‰G ‹D$()ЃÀ‰G‹D$ )è‰G‹D$‰p8‰X<Ä„[^_]Ël$·ö‰t$‰Îƒæt29Þv‹|$‰ÙƒÃ¶WƒÇ‰|$ÓâЉñºÓâ)óƒê!ÂT$Óèƒû††‹T$H‹t$&.text@/´;< P`.data@0À.bss€0À.rdata ô/l=@`@ƒì,‰\$‹X‰|$$‰×‰t$ ‰Î‰l$(‹S4…Ò„ë‹C(…Àtd9ðv|‹S0‰õ)Ð9ðFè‰øS4)ð‰l$‰D$‰$è)î…‰‹C0‹S(è9ЉC0th‹K,1À9Êv͉k,‹\$‹t$ ‹|$$‹l$(ƒÄ,Ãt&‹K$°ÇC0ÇC,Óà9ð‰C(w„‹S4)ljD$‰|$‰$è‹C(ÇC0‰C,1À릋K,1ÀÇC09Êw‘딋C4)÷‰t$‰|$‰$è‹C(‰s0‰C,1Àéoÿÿÿ´&ÇD$‹K$ºÓâ‰T$‹P(‰$ÿP ‰Â…Ò‰C4¸…äþÿÿé2ÿÿÿv¼'‹T$…Ò„Š‹B…À„…‹HÇ@ÇBÇB…ÉÇBtƒá‰J00ÇÇ@Ç@ Ç@€Ç@ Ç@8Ç@<‰Pl‰PP‰PLÇ€ÀÇ€Äÿÿÿÿ1Àøþÿÿÿøþÿÿÿô&¼'‹T$…Ò„ª‹B…À„™‹HÇ@(Ç@,Ç@0…ÉÇ@ÇBÇBÇBtƒá‰J00ÇÇ@Ç@ Ç@€Ç@ Ç@8Ç@<‰Pl‰PP‰PLÇ€ÀÇ€Äÿÿÿÿ1ÀÃt&¸þÿÿÿøþÿÿÿÃt&ƒì,‰t$ ‹t$0‰\$‹\$4‰|$$‰l$(…ö„=‹~…ÿ„2…Ûˆ‰Ý‰ØÁýƒàƒÅƒû/NØCøƒø‡ü‹G4…Àt4;_$t/‰D$‹F(‰$ÿV$‹V¸þÿÿÿÇG4‰o‰_$…Òué™t&‰o‰ú‰_$‹BÇB(ÇB,ÇB0…ÀÇBÇFÇFÇFup‚0‰Bl‰BP‰BL1ÀÇÇBÇB ÇB€ÇB ÇB8ÇB<Ç‚ÀÇ‚Äÿÿÿÿ‹\$‹t$ ‹|$$‹l$(ƒÄ,ô&ƒà‰F0ëˆ÷Û1íéøþÿÿ…Û¸þÿÿÿ„÷þÿÿëŸþÿÿÿ뾉ö¼'VSƒì$‹D$8‹\$0…À„®ƒ|$<8…£€81…š…Û„¦‹s ÇC…ötq‹K$…Ét_ÇD$ÌÇD$‹C(‰$ÿS …À‰Ætk‰CÇ@4‹D$4‰$‰D$èþÿÿ…Àt‰t$‹S(‰D$‰$ÿS$‹D$ÇCƒÄ$[^ÃÇC$ë˜fÇC ÇC(é|ÿÿÿ¸úÿÿÿëÕ¶¸üÿÿÿëȸþÿÿÿëÁfSƒì‹D$$‹\$ …À„,ƒ|$(8…!€81……Û„‹C ÇC…À„Ö‹C$…À„äÇD$ÌÇD$‹C(‰$ÿS …À„Ù0‰CÇ@4Ç@Ç@$Ç@(Ç@,Ç@0Ç@ÇCÇCÇCÇC0ÇÇ@Ç@ Ç@€Ç@ Ç@8Ç@<‰Pl‰PP‰PLÇ€ÀÇ€Äÿÿÿÿ1ÀƒÄ[ËC$ÇC ÇC(…À…ÿÿÿÇC$éÿÿÿv¸úÿÿÿë̸üÿÿÿëŸþÿÿÿë¾t&¼'VS‹D$ ‹L$…ÀtU‹P…ÒtN…Éx7ƒù¸þÿÿÿ%‹r<1ƒû w¸Óà‰ñƒè#D$‰Z<ÓàB81À[^Ãt&ÇB81ÀÇB<[^øþÿÿÿëÞ¶UWVS쬋„$À…À„“‹œ$À‹k…í„‹S …Ò‰T$Ptv‹3…ö„‹[‰\$\‹Eƒø „¡‹œ$À‹Œ$Ä‹U8‹|$\‹[ƒé‰L$d‰l$<‰\$L‹L$L‹]<ÇD$T‰L$X0‰L$hð‰Õ‰L$lƒø†ÇD$Tþÿÿÿ‹D$TĬ[^_]ËT$<1À‹J…É„ƒûw+…ÿ„‰Ùë…ÿ„¶ƒïƒÆÓàƒÁŃùvã‰Ë‹D$X‹Œ$À‹T$<+D$LAB…Àt9‹J‰D$‹T$P…É„W‹L$<)‰T$‹A‰$è‹T$<‹Œ$À‰B‰A0‹R‰è…Òu#‰ê‰éÁâ%ÿÁéщêÁêâÿÁàÊЋL$<;A„M‹„$ÀÇ@£¸Ç‹L$L‰L$Xÿ$…Ðt&ƒûw*…ÿ„&‰Ùë…ÿ„&¶ƒïƒÆÓàƒÁŃùvã‰ê‰è‹\$<ÁèÁâ‰èÁèåÿ%ÿÁåÐè1í‰C‹œ$À‰C0‹\$<Ç 1Û‹D$<‹H …É„ÚÇD$ÇD$Ç$è‹T$<‹Œ$À‰B‰A0Ç ƒ|$d†u‹D$<‹P…Òuyƒûw…ÿ„¸¶‰ÙƒïƒÆƒÃÓàÅ‹T$<‰èƒà‰B‰êÑê‰Ðƒàƒø„ìƒø„8ƒø„ñ‹L$<¸ Ç ‰ÕƒëÁíé¯ýÿÿÇE ° éQýÿÿ‰ÙƒãøƒáÇÓí¸é˜þÿÿt&‹L$<‹QH…ÒtX9Ós/…ÿ„¼‰Ùë t&…ÿ„¸¶ƒïƒÆÓàƒÁÅ9Ñrä‰Ë‰Ñ¸Óà‹L$<)Óƒè!èAD‰Ñ‹D$<ÓíÄ‹T$<Ç‹L$L…É„Z‹L$<‹T$X+T$L‹AD9ƒ$)Ð;A,‡U‹L$<‹Q09І6)ЋQ()ÂQ4‹L$<‹I@9ȉL$@GÁéú‹D$<ƒ¼$ÄÇ„ò‹T$<ǃÿ‡ü‹L$<‹ALÇÄ‹IT‰D$D¸‹T$DÓàƒè‰D$H!è‚¶ˆT$@¶P·@f‰D$p¶Â9ÉD$`sT…ÿ„‰‰Ùë f…ÿ„ˆ¶ƒïƒÆ‹T$DÓàƒÁÅ‹D$H!è‚¶¶Pˆ\$@·X¶Â9ÈwÅf‰\$p‰Ë‰D$`€|$@…O¶Â‰Ñ‹T$<+\$`Ó퉂Ä·D$p‰B@‹L$<¸ÇéÂüÿÿ‹D$<‹PH…Ò…v‹T$<‹B@‰‚ÈÇ‹L$<‹D$<‹IP‰L$@‹HX¸Óà‹L$@ƒè‰D$H!趈D$D¶B·Rf‰T$`¶Ð9Óƒý…ÿ„‰Ùë…ÿ„¶ƒïƒÆ‹\$@ÓàƒÁÅ‹D$H!胶·ZˆD$D¶B¶Ð9ÊwÅf‰\$`‰Ë‰T$H¶L$D‰L$táð…}·L$`ÇD$D‰L$p¶È‰L$H‹L$tL$HÓd$D‹L$Dƒé‰L$t!é‰L$D‰ÁÓl$D‹D$D‹L$@D$p¶ˆL$D¶H·@ˆL$xf‰D$`¶Á‹L$HÁ9Ësi…ÿ„¹ ‰T$|ë…ÿ„« ¶‰ÙƒÃ‹T$@ƒïƒÆÓà¶L$HÅ‹D$t!èÓè‹L$HD$p‚¶ˆT$D¶P·@f‰D$`¶ÂÁ9Ùw­ˆT$x‹T$|¶L$H)Ó‹T$HÓí‹L$<‘ĶL$x‰L$H¶L$D‰L$té„ÇEÇD$Tüÿÿÿé×ùÿÿvƒûw*…ÿ„ ‰Ùë…ÿ„ ¶ƒïƒÆÓàƒÁŃùvã‹\$<‹C …Àt‹\$<‰höC…TÇ1í1Ûëƒûw)…ÿ„¯ ‰Ùë…ÿ„° ¶ƒïƒÆÓàƒÁŃùvã‹\$<‹C …Àt‰ê‹\$<âÿ‰P‰êÁê‰P ‹SöÆ…ôÇ1í1ÛöƉT$@„ƒûw.…ÿ„< ‰Ùë t&…ÿ„8 ¶ƒïƒÆÓàƒÁŃùvã‹\$<‹C ‰k@…Àt‰höÆ…W‰Ñ1Û‰T$@á1í‹D$<Çé}‰ÙƒãøƒáÓíƒûw+…ÿ„Æ ‰Ùë…ÿ„Ç ¶ƒïƒÆÓàƒÁŃùvã‰Ë‰è‰êÁèâÿÿ5ÿÿ9„l‹„$À‹T$<Ç@†¸Çé(ùÿÿt&‹T$<‹L$<‹D$<‹Rh‰T$H‹I`‰L$pHd‹D$H‰L$`9D$`†"‹T$<‹D$<‹RL‹HT‰T$@ºÓâ‰Ñ‹T$@ƒé‰È!肉L$D¶H·@¶Ñ9ÓsK…ÿ„ð ‰Ùë…ÿ„ñ ¶ƒïƒÆ‹T$@ÓàƒÁÅ‹D$D!è‚¶X·@¶Ó9Êẅ\$@‰Ë¶L$@fƒø†@¶Éfƒø‰L$@„/fƒø‰È„øƒÀ9Ãs0…ÿ„w ‰Ù‰Ó‰Âë…ÿ„t ¶ƒïƒÆÓàƒÁÅ9Ñrä‰Ú‰Ë¶L$@)ÓƒëÓí‰èƒàƒÀ ‰D$@‹T$@Áí1ÀT$H9T$`‰T$x‚ò‹T$@f‰D$t‹D$Hƒê‰T$D‹T$<ƒÀ8‰„$„ B‹D$HÁáÁé9L$@FL$@…Ét]‰t$|‰Ö‹T$D‰¬$ˆ·l$t‰¼$€‰Ç‰œ$Œ´&f‰lFpƒÀƒê‰Ã)û9Ùwí‹t$|‹¼$€‹¬$ˆ‹œ$Œ‰T$D‹T$@)ʉT$@Ñê‰T$HÒ‰T$|„|·T$tŒ$„‰´$„‹t$HÁ≔$ˆ·T$t‰”$€‹”$ˆ ”$€‹T$<‰¼$ˆ‹¼$€ J1Òf‰<‘ƒÂ9Öwö‹L$|)L$D‹´$„‹¼$ˆÈ9L$@t8‹T$D‹L$<‰t$@·t$tT‰T$DA‹L$D1Ò¶f‰tpƒÂ9Êuô‹t$@‹T$x‹D$<‰T$H‰Ph‰Ðé_ýÿÿ‹L$<‹QöƄŃûw+…ÿ„€‰Ùë…ÿ„¶ƒïƒÆÓàƒÁŃùvã‰Ë‹L$<·A9è„L ‹„$ÀÇ@_¸Çéðõÿÿ‹T$<‹B…À„Ò‹L$<‹A…À„Ãûw+…ÿ„a‰Ùë…ÿ„¶ƒïƒÆÓàƒÁŃùvã‰Ë‹D$<9h„k‹”$ÀÇB¸Ç¸éwõÿÿv‰ê‹l$<ÇD$Tf‹Œ$À‹D$P‰1‰A ‹D$L‰y‰A‰]<‹](‰U8…Ûu9D$Xt7‹Eƒøw/ƒ¼$Äuƒøw ‹L$X‹T$P‹„$À+L$Lètìÿÿ…À…úÿÿ‹´$À‹„$À‹\$\+^‹t$X+pXpu…öt7‹M…Ét0‹U‰t$…Ò„-‹@ )ð‰D$‹E‰$è‹”$À‰E‰B0ƒ}‹UÀ÷Ѓà@E<ƒú „âƒú… º‹Œ$ÀÐ Þ‰A,tƒ¼$Ä…Zóÿÿ‹D$T…À¸ûÿÿÿED$T‰D$T‹D$TĬ[^_]Ãv‹D$<‹P‰Ñ‰T$@á…Ét%‹T$<‹B@9ljÂF×…Ò…3…À…>‹D$<‹P‹L$<ÇA@ÇöƄʅÿ„1Ò‰t$`‰Ð‰|$@‰l$D‰\$H‹t$<‹\$`‹V ¶ ƒÀ…Ò¶ét‹z…ÿt‹^@;Z s ˆ ƒÃ‰^@…ít;D$@rʼn‹D$<‹|$@‹t$`‰l$@‹\$Hö@‹l$D…Q ‹D$@)×Ö…À…’‹D$<‹P‹D$<Ç@@ÇöÆ„þ…ÿ„i1Ò‰t$`‰Ð‰|$@‰l$D‰\$Hf‹T$`‹\$<¶ ƒÀ‹S ¶é…Òt‹z$…ÿt‰Þ‹[@;Z(s ˆ ƒÃ‰^@…ít;D$@rɋD$<‹|$@‹t$`‰l$@‹\$Hö@‹l$D…â‹D$@)×Ö…À…â‹D$<‹P‹D$<öÆÇ…;üÿÿ‹L$<‹A …ÀtÁú ƒâ‰P,Ç@0ÇD$ÇD$Ç$è‹T$<‹Œ$À‰B‰A0¸ Ç é1òÿÿ‹D$L…À„d‹T$<‹L$<ƒl$L‹B@‹T$PˆƒÂ¸‰T$PÇéøñÿÿt&‹D$<‹P@Ç…Ò„ë9×F×;T$LGT$L…Ò„‹L$P‰T$‰t$‰T$8‰ $è‹T$8‹D$<)T$LT$P)×Ö)P@‹é‚ðÿÿ‹L$<‹Q@룶ƒû w,…ÿ„¶‰Ùë…ÿ„¶¶ƒïƒÆÓàƒÁŃù vã‰Ë‹T$<‰é‰èÁéƒàƒáƒÁƒë‰Jd‰B`‰ê‰L$D‹L$<Áê ƒâƒÂÁí=‰T$@‰Q\‡%ƒ|$D‡‹L$<1Ò‰T$HÇAhljÙë‹L$<‹D$<‹I\‹Ph‰L$@9Ñv[‰Ù‰T$Hƒùw…ÿ„¶ƒïƒÆÓàƒÁÅ‹\$H‰èƒé‹T$<ƒàƒD$HÁí·œà f‰DZp‹\$H‹D$@‰Zh9Ãr¯‰Ú‰Ëƒúw*‹L$<„à ·ƒÀ= fÇDQpuì‹T$<ÇBh‹L$<‹D$h‹T$lÇAT‰Al‰AL‰ÈƒÀT‰D$ƒÀ‰D$ ƒÀ‰T$ÇD$‰D$Ç$è…À‰D$T„ú ‹D$<‹Œ$ÀÇAÈǸéÍïÿÿ‹L$<‹QéÚûÿÿ‹D$<‹Pézüÿÿ‰ê‹l$<ÇD$Týÿÿÿé=úÿÿ‹L$<‹Q…Ò„Þƒûw+…ÿ„! ‰Ùë…ÿ„ŶƒïƒÆÓàƒÁŃùvã‰Ëý‹„ ‹D$<Ç@‹@ …ÀtÇ@0ÿÿÿÿƒâ„¬‰é‰èÁẅBÁèáÿÿÁ‰È÷â‰È)ÐÑèÂÁê‰ÐÁà)Ð9Á…w‰èƒàƒø„Ò ‹„$À‹T$<Ç@¸ÇéÏîÿÿƒûw+…ÿ„‰Ùë…ÿ„¶ƒïƒÆÓàƒÁŃùvã‰Ë‹D$<‰ê€ú‰h„׋Œ$ÀÇAǸéoîÿÿ·D$p‰D$t¶ÂÁ‰D$H¸Óà‰Ñ‹T$Dƒè‰D$p!èÓèD$t‚¶ˆT$@¶P·@ˆT$|f‰D$x¶Â‹T$HÂ9ÓrTém¶‰ÙƒÃ‹T$DƒïƒÆÓà¶L$HÅ‹D$p!èÓèD$t‚¶¶H·@ˆT$@‹T$Hf‰D$x¶ÁÂ9Ú†…ÿu­‰ê‹l$<éRøÿÿf‰ê‰Ë‹l$<éCøÿÿvƒè€1Òé"ùÿÿ¶‹Œ$À‹A )ð‰D$‹E‰$èéÇøÿÿƒú„îøÿÿ1Òt&éçøÿÿ‹œ$ÀÇD$Tþÿÿÿ‹C…À…EìÿÿÇD$\éËëÿÿt&‹L$<‹A …À„‰úÿÿÇ@$é}úÿÿt&‹L$<‹A …À„¹ùÿÿÇ@é­ùÿÿt&‹L$<¸ Ç éàìÿÿ‹T$P)‹A@‰D$@‰Á;D$LGD$L)D$L)Á‰D$D‹D$<‰H@‹L$D‹D$PÁéƒÀ‰L$@Áá9‰L$HB—Á9D$P—À Á‹D$P Ш”Àƒ|$D —D$`"D$`„Á„ ‹D$H…À„ ‰t$`‹t$P1Àf‹ ‚‰ †ƒÀ9D$@wñ‹D$D+D$H‹L$PL$H‰D$@‹D$HT$H9D$D‹t$`t‰t$H1À‰Öv¶ˆƒÀ;D$@uð‹t$H‹T$<‹D$DD$P‹B@…Àt ‹éÕêÿÿfǸéÔëÿÿ‹L$<‹I …ɉL$Hte‹I…ɉL$DtZ‹L$H‹I)Á‰L$@‹L$H‹A‹L$@‰T$8‰t$щL$`‰Á+L$@9D$`‹D$D‰L$HFÊD$@‰L$‰$è‹D$<‹T$8‹@‰D$@÷D$@…Ç‹L$<)×Ö‹A@)ЉA@é6÷ÿÿ9Ós*…ÿ„pýÿÿ‰Ùë…ÿ„qýÿÿ¶ƒïƒÆÓàƒÁÅ9Ñrä‰Ë‰Ñ¸Óà‹L$<)Óƒè!èA@‰A@‰ÑÓí‹L$<‘ĉÊé4îÿÿ‹D$<‹Pé½ðÿÿ‹\$L1í‹A‹T$<‰\$X1ÛÇéÍôÿÿfÇ ¸ é¤êÿÿ‹‘À…Ò„ìÿÿ‹„$ÀÇ@…¸Çéxêÿÿt&‹L$<¶À‹‘ĉÁЋT$<Óí+\$HöD$t@‰‚Ä„û‹Œ$À¸ÇAoÇé*êÿÿ¶Óí)Ó‹L$<‹T$Hf‰DQpƒÂ‰T$H‰Ð‰Qhéñÿÿ‹L$<¸Çé!ëÿÿ‹L$<‹A 1É…À„0ðÿÿÇ@é$ðÿÿ‰T$‰t$‹H‰T$8‰ $è‹L$<‹T$8‰Aé÷öÿÿ¶|$L†öëÿÿ‹Œ$À‹T$P‹D$L‰1‹t$<‰Q ‰A‰y‰^<‹\$X‰n8‰ $‰\$苜$À‹´$À‹[‹v ‰\$L‹œ$À‰t$P‹{‹3‹\$<‰Ø‹k8‰Â‹‹[<ƒø …èÿÿÇ‚Äÿÿÿÿééÿÿ‰T$‰t$‹H‰T$8‰ $è‹L$<‹T$8‰Aéˆõÿÿ´&‹„$À‹T$<Ç@¤¸ÇéÂèÿÿ1Û1íé0öÿÿt&)ÂQ4éÎêÿÿ¶¶L$@öÁð„'úÿÿ¶Â‰Ñ‹T$<+\$`Ó퉂Ä·D$p‰B@¶T$@ö „ ‹D$<Ç€ÄÿÿÿÿÇ ¸ éMèÿÿ·D$`‰ÑljBD¶T$Dƒâ‰QHé éÿÿ‰èˆ„$œ‰èÁ舄$„$œÇD$‰D$‹C‰$è‹S‰C‹\$<éÊíÿÿ‹D$<ƒ¼$ÄÇ@L`Ç@T Ç@P` Ç@XÇ„½¸éàèÿÿ‹„$À‹L$<Ç@s¸Çé¾èÿÿ‹L$<‰T$‰t$‹A‰T$8‰$è‹L$<‹T$8‰AéüÿÿöÂ@„m‹”$À¸‹L$<ÇBSÇé5çÿÿ‰èˆ„$œ‰èÁ舄$‰èÁ舄$ž‰èÁ舄$Ÿ„$œÇD$‰D$‹C‰$è‰C‹\$<éUìÿÿ‹\$<ƒ¼$ĉS@Ç„õ1Û1í‹D$<éÉôÿÿ÷Åà„M‹„$À‹T$<Ç@F¸Çéˆæÿÿ‹”$À¸‹L$<ÇBÇéfæÿÿ‹\$<‰èˆ„$œ‰èÁ舄$„$œÇD$‰D$‹C‰$è‹S‰Cégìÿÿ‰ÈƒÀ9Ãs7…ÿ„Røÿÿ‰Ù‰Ó‰Âë´&…ÿ„Høÿÿ¶ƒïƒÆÓàƒÁÅ9Ñrä‰Ú‰Ë¶L$@)Ó‹D$HÓí…À„‘‹T$Hƒë‹L$<·DQn‰êƒâƒÂ‰T$@Áíé¼íÿÿˆL$|¶L$H+\$`Óí‰Á¶D$|Óí)ËD$<€|$@‰Ä·D$x‹T$<‰B@…÷üÿÿé•èÿÿ´&‰ê‰Íé÷ïÿÿ‰T$HvéIéÿÿƒÀ9Ãs4…ÿ„÷ÿÿ‰Ù‰Ó‰Âë t&…ÿ„x÷ÿÿ¶ƒïƒÆÓàƒÁÅ9Ñrä‰Ú‰Ë¶L$@Óí‰èƒàƒÀ‰D$@¸ýÿÿÿ)ЋT$@Ã1ÀÁíéûìÿÿ‹D$<ƒâ‰PHÇéèÿÿö„võÿÿÇD$f1íÇD$Ç$è‹\$<”$œÆ„$œÆ„$‹‰CÇD$‰T$‰$èljC¸1Ûéfäÿÿ‰ê‰Åéùîÿÿ‹\$<‹C …Àt ‰êÁêƒâ‰÷Å…Ó‹\$<1íÇ1ÛéZéÿÿ‹L$<)‰T$‹A‰$èé¤ãÿÿ‰ê‹l$<ÇEÇD$Té‘îÿÿ‹T$<ÇD$HÇBh‰Ñ‰ÐÇéÂêÿÿ‹L$<ƒ9„Eîÿÿfƒ¹p… ‹„$ÀÇ@ü¸Çéšãÿÿ‹Œ$À‰ê‰Å‹D$PÇD$T‰1‰A ‹D$L‰y‰A‰U8‰]<éiâÿÿ‹\$<‰èˆ„$œ‰èÁ舄$„$œÇD$‰D$‹C‰$è‰Céîþÿÿ‰Å1Û1Òéÿÿÿ‹T$<Áí‰éƒáƒÁ‹B$…À…Þ‰J$‹\$<¸åÓà‰CÇD$ÇD$Ç$èƒý‰C‹œ$À‰C0‹\$<Àƒà1íƒÀ ‰1Ûéšáÿÿ‹T$<‹L$h‹D$lÇBT ‰Jl‰JLƒÂl‰D$‹D$<‰T$ ‰T$8Ç$ƒÀT‰D$‹D$p‰D$‹D$<ƒÀp‰D$è‹T$8…À‰D$T„ˆ‹”$À¸‹L$<ÇB!Çé'âÿÿ9Á†ÿÿÿ‹D$<ƒë‹Œ$ÀÇA2Ǹéúáÿÿ‰êƒë‰ÅÁêé‡ìÿÿ‹Œ$À‹D$<ÇAáÇéMìÿÿ‹l$<1Û1Òé]ìÿÿ‹L$<‹AlÇAX‰AP‹D$l‰T$ ‰D$‰ÈƒÀX‰D$‹Ad‰D$‹A`Ç$DAp‰D$è…À‰D$T„¦ãÿÿ‹”$À¸‹L$<ÇB=ÇéOáÿÿ‹L$D‰L$@‹L$Péõÿÿ‹„$À‹T$<Ç@áÇé ëÿÿ¶¼'Sƒì‹\$ …ÛtD‹C…Àt=‹S$…Òt6‹H4…Ét‰L$‹C(‰$ÿÒ‹S$‹C‰D$‹C(‰$ÿÒ1ÀÇCƒÄ[Ãv¸þÿÿÿëñ‰ö¼'ƒì‹D$ ‰t$‹t$(‰|$‹|$$‰\$…Àtb‹X…Ût[…ÿ‹C,u1À…öt‹S,‰‹\$‹t$‹|$ƒÄÃ…Àtá‹S0)ÐS4‰<$‰D$‰T$è‹C0‹S4)Ç{,‰D$‰T$‰<$è문þÿÿÿë°´&ƒì,‰t$ ‹t$0‰|$$‹|$8‰l$(‹l$4‰\$…ö„š‹^…Û„‹C…Àu7ƒ; t Ün. ¼ŽN ü`Qƒq1  a! ¢A âY ’;y9 Òi) ² ‰I òU+u5 Ê e% ª…E ê] šS}= Úm- º M úSÃ#s3 Æ c# ¦ƒC æ[ –C{; Ök+ ¶ ‹K öW@3w7 Îg' ®‡G î _ žc? Þo/ ¾O þ`Psp0 Á ` ¡€@ áX ‘;x8 Ñh( ±ˆH ñTã+t4 É d$ ©„D é\ ™S|< Ùl, ¹ ŒL ùR£#r2 Å b" ¥‚B åZ •Cz: Õj* µ ŠJ õV@3v6 Íf& ­†F í ^ c~> Ýn. ½ŽN ý`Qƒq1 à a! £A ãY “;y9 Ói) ³ ‰I óU+u5 Ë e% «…E ë] ›S}= Ûm- » M ûSÃ#s3 Ç c# §ƒC ç[ —C{; ×k+ · ‹K ÷W@3w7 Ïg' ¯‡G ï _ Ÿc? ßo/ ¿O ÿA@!  @a`10  Á@     O½õØ!ã . D!%"}—8 #X ã">"ß.9•$³±#![Ö".%•"¾– "¸ Æ õ  !"P!¦!"ø!"a""ã#"$"|$#æ$^%"¾%#7&$^&†&·&'$6'd'@([()#)#¼-ÐÔØÜàäèìðôøü  $(,048<@DH.fileþÿginflate.c P $ 2À A0 P ^p _inflateà là x`…` “€' Ÿà' µp( Ë@) Ý€) ê, ü@,  À. ð. .text;/<.data.bss.rdata _memcpy _zcalloc _zcfree _crc32 _adler32 ( 7 E_updatewindow_inflateResetKeep_inflateReset_inflateReset2_inflateInit2__inflateInit__inflatePrime_order.3818_lenfix.3789_distfix.3790_inflateEnd_inflateGetDictionary_inflateSetDictionary_inflateGetHeader_inflateSync_inflateSyncPoint_inflateCopy_inflateUndermine_inflateMark_inflate_table_inflate_fast inftrees.o/ 1437066064 1011 100 100644 2946 ` Lü .textà´Ô  P`.data@0À.bss€0À.rdata@”@`@UWVSì„‹”$ ‹¬$¬ÇD$DÇD$H…ÒÇD$LÇD$PÇD$TÇD$XÇD$\ÇD$`t‹œ$œ1À· CƒÀfƒDLD9Ðuï‹„$¨·t$b‹f…ö‰D$…xfƒ|$`…'fƒ|$^…tfƒ|$\…^fƒ|$Z……fƒ|$X…ofƒ|$V…”fƒ|$T…{fƒ|$R…‰fƒ|$P…Šfƒ|$N…˜fƒ|$L…fƒ|$J…šfƒ|$H…fƒ|$FuC‹”$¤‹œ$¨‹Æ@Æ@fÇ@Æ@@Æ@fÇ@ƒÀ‰1ÀÇÄ„[^_]ÃÇD$(¿·L$F»¸ÿÿÿÿ)ËxÕ·L$HÛ¸ÿÿÿÿ)ËxÅ·L$JÛ)Ëxº·L$LÛ)Ëx¯·L$NÛ)Ëx¤·L$PÛ)Ëx™·L$RÛ)ËxŽ·L$TÛ)Ëxƒ·L$VÛ)ˈtÿÿÿ·L$XÛ)ˈeÿÿÿ·L$ZÛ)ˈVÿÿÿ·L$\Û)ˈGÿÿÿ·L$^Û)ˈ8ÿÿÿ·L$`Û)ˈ)ÿÿÿÛ·Î)˃ûŒÿÿÿtƒ|$(…g‹„$˜…À„X·D$FfÇD$ff‰D$hfD$Hf‰D$jfD$Jf‰D$lfD$Lf‰D$nfD$Nf‰D$pfD$Pf‰D$rfD$Rf‰D$tfD$Tf‰D$vfD$Vf‰D$xfD$Xf‰D$zfD$Zf‰D$|fD$\f‰D$~fD$^f‰„$€fD$`…Òf‰„$‚t?‰|$ ‹¼$œ1À¶· Gf…Ét·É·\Ld·óƒÃf‰Duf‰\LdƒÀ9ÐuØ‹|$ ‹´$˜…ö…¯‰l$<‰l$8ÇD$,‹D$9D$(FD$(ÇD$ ‹”$¤9ÇCljÁ‹Ód$ ‹\$ ‰D$$‰T$ƒëƒ¼$˜‰\$4”D$B|$ T‡—ƒ¼$˜”D$C|$ P‡‘‹D$$1Ò‰l$ÇD$0ÿÿÿÿÇD$‰û1ö*\$ˆ\$·]·Ë9L$,»¾`}‹\$<‹l$8¶4K·\M‰ù½+L$‰$Óå‰Á‰l$½Óå‹L$‰l$‰Õ‰ò‰Æ‰Ð¶T$÷ÙÁá‰L$ ¶L$Óí‹L$é‹l$+L$L‹l$ˆˆQf‰YL$ +l$uí‹$Oÿ»Óã‰ð‰Ù…Ót vÑé…Ñuú…É„EYÿ!Ó ·L|Dƒéf…Éf‰L|Du;|$(„¡‹l$‹œ$œ·M·þÿÿED$8‰D$8éýÿÿ€|$B¸„Yýÿÿéÿúÿÿ€|$C¸„_ýÿÿéêúÿÿ…Òt‹\$“¶T$Æ@fÇ@ˆP‹D$ ‹œ$¤‹L$$‹¬$¨Áà1À‰Mé©úÿÿÇD$(t&fƒ|$F¿‹D$(… úÿÿƒÇ9Ç„•úÿÿfƒ||Dtí·D$F»)ÃéúÿÿÇD$(ë½ÇD$( ë³ÇD$( ë©€|$B„mþÿÿ¸é1úÿÿÇD$( ëŠÇD$( 뀀|$C„RþÿÿëÕvÇD$(écÿÿÿÇD$( éVÿÿÿÇD$(éIÿÿÿÇD$(é<ÿÿÿÇD$(é/ÿÿÿÇD$(é"ÿÿÿÇD$(éÿÿÿÇD$(éÿÿÿ¸ÿÿÿÿé›ùÿÿ inflate 1.2.8 Copyright 1995-2013 Mark Adler  #+3;CScsƒ£Ãã !1AaÁ  0@`HN@@(09G.fileþÿginftrees.c €*À5@.textÒ.data.bss.rdata@AT_inflate_table_dext.3704_dbase.3703_lext.3702_lbase.3701_inflate_copyrighttrees.o/ 1437066065 1011 100 100644 11979 ` L+#.textд@* P`.data<„à*@0À.bss€0À.rdata€ À@`@UWVSƒì ‹¨P¹ÔɉT$ ‹T¸ 9é‰T$§‹\$ ‰l$‰|$“‰\$ëDf‹”ˆ\ ‹l$ ‰ $·t•‹|$f97‹|$rpt~‹ $‰T¸ É9L$Œ“‹<$ÇÔ‰|$9L$~¸Q‹\$ ‹¼ˆ\ ‰$‹”ˆ` ‰|$·4“·»f9Þr¢tn‹|$‰Þ‹T$‰ $f97‹|$s—´&‹l$‰l¸ ƒÄ [^_]Ë\$¶ŒX8ŒXvÛ‹ $‰T¸ É9L$mÿÿÿ‹$‹l$»Ô‰l¸ ƒÄ [^_]ö¬X‰ë:œ8XF $G׉ $éÿÿÿë UWVS‰ÃƒìL‹2‹B‰T$‰t$$‹p ‹(ǃPǃT=…öŽ2ÇD$(ÿÿÿÿ1À¹ÿÿÿÿ‹T$$ë+t&‹‹Py‰„‹` ‰Á‰»PÆ„XƒÀ9ðtfƒ<‚uÒfÇD‚ƒÀ9ðuë‰L$(‹‹P…í‹|$(u6éÖ‰”‹\ ‹L$$fÇ‹‹Pƒ«¨Æ„X·D)ƒ¬ƒù ƒÁ1À1Òƒÿ‰‹P¸ƒÇ½‰ú몉|$(‹T$‹l$$‰z‰ÏÑÿt&‰ù‰ê‰Øè•ýÿÿƒïuð‹ƒP‹|$$¶‹”ƒ\ ƒè¹‹«` ‰ƒP‰Ø‰“` ‰úèVýÿÿ‹ƒ` ‹“T‰¬“X Jþ‰„“T ¯‰$‹$‰‹T ‡‰L$ · f f‰ ·¶Œ+X¶¬X‰ÈˆL$‰êƒÀ8T$‰úM‹,$ˆL$BÁ‹L$ ˆ„3X‰Øf‰q¹f‰u‰³` ƒÆèÃüÿÿ‹ƒPƒø4ÿÿÿ‹ƒT‹t$‹L$Pÿ‰“T‹“` ‰”ƒX ‹D$‹I‹‰ $‰D$‹F‹t$‹8‹h‹H‰|$‹xǃ< ǃ@ ǃD ǃH ǃL ǃP ǃT ǃX fÇD–‹ƒT‰l$ ‰L$Pú<‹L$´ƒ` «P…É„‰l$ÇD$‰|$ ‹‹L$‹l$<•ù·A·D…ƒÀ9D$ } ƒD$‹D$ 9$f‰A|Mfƒ„C< 9T$ÇD$‹l$ +T$‹l•‰l$·D$‹L$¯Âƒ¨·D9D$¯Âƒ¬ƒÆ;t$…oÿÿÿ‹|$ ¸=‹T$…Ò„Áwÿ‰t$¯—·˜‰|$ ‹|$·Lk ‹T$f…Éuƒê·ŒS< f…Étðƒéƒïfƒ„S> f‰ŒS< fƒls …ÿÁ‹|$ …ÿt_t&·”{< …Òt;ƒè‹Œƒ\ 9 $|í‹t$ Ž·q9÷t‰ý)õ‰î·)¯õ³¨f‰yƒê…ÒuÅ‹|$…ÿt ‰úƒê‰T$릷ƒ< 1öÀf‰D$.fƒ> Àf‰D$0fƒ@ Àf‰D$2fƒB Àf‰D$4fƒD Àf‰D$6fƒF Àf‰D$8fƒH Àf‰D$:fƒJ Àf‰D$fƒN Àf‰D$@fƒP Àf‰D$BfƒR Àf‰D$DfƒT Àf‰D$FfƒV Àf‰D$HfƒX Àƒ|$(ÿf‰D$JtL‹l$(‹|$$v·T·…Òt1·DT,1۷ȃÀf‰DT,ƒêf‰Èƒêƒà ØÑéƒúÿuìÑëf‰·ƒÆ9î~¿ƒÄL[^_]ËT$(ë&‰„»\ ‹|$$fÇ‹‹Pƒ«¨Æ„Xƒù y1À1Ƀú‰»PÃB …‰Â뵉T$(‰×é(ûÿÿ‰l$‹l$ÇD$‰|$ë&t&ÇD$ ·D$ ¯Âƒ¨ƒÆ;t$tJ‹L•·A·D…ƒÀ9D$} ƒD$‹D$9$f‰A|Ífƒ„C< 9T$¦‹|$ +T$‹<—‰|$ ë‹|$¸=éýÿÿ1ÉÇD$(ÿÿÿÿéúÿÿ´&UWVSƒì‰L$·J‹\$‰T$ƒùíƒÅƒùÿ烃Ç…ÛfÇDšÿÿˆœ1Ò1ÛÇD$ ÿÿÿÿ‰,$ë4vf”ˆ| …öta9ñ„މL$ ¿1ÒÇ$ƒÃ9\$|Y‰ñ‹l$ƒÂ9ú·t}9ñtá;$|¶…Ét&t>9L$ t fƒ„ˆ| fƒ€¼ …öuŸ1ÒƒÃ9\$¿Š‰L$ Ç$}§ƒÄ[^_]Ãú +fƒ€À éfÿÿÿ‰t$ ¿1ÒÇ$émÿÿÿ´&fƒ€Ä é;ÿÿÿvUWVSƒì‰T$·R‰L$‹|$ƒúöƒÆƒúÉჃÁ…ÿ‰T$ˆº1Û¿ÿÿÿÿÇD$ ‹T$ ‹l$·T•‰T$S9Ê}‹l$9l$„‚9òë‹\$‰×‹ˆ¼·°¸«œëY‰\$Óã‰Ù‹X ñ‹pf‰ˆ¸ˆ ¶ˆ¹‹pˆLƒÃ‹t$‰X‹˜¼¹)ÙÓþƒï‰ñf‰ˆ¸Lð‰ˆ¼t-·T¨»)Ó9Ë·\¨ |’ÓãÑ Þƒïf‰°¸‰ˆ¼uÓ‹\$…Û„­‹\$9\$„Æ‹|$¾¹1ÛƒD$ ‹l$ 9l$ŒŸ‹l$‰l$éçþÿÿ‹t$…ö„“;|$„Ú‹T$¾‹ˆ¼œ·|·T )þ9ñŽ’‰T$Óâ‹p‰Ñ‹Pf ˆ¸f‰ˆ¸ˆ 2¶ˆ¹‹PˆL2‹¨¼¹‹T$ƒÆ‰p)éÓúL/ð‰Öf‰¸‰ˆ¼·¸¾ º)ú9Ê!·¨¼ ‹P‰l$Óå‰é ñ‹pf‰ˆ¸ˆ 2¶ˆ¹‹PˆL2‹¨¼¹‹T$ƒÆ‰p)éÓúL/ð‰Öf‰¸‰ˆ¼ƒùŽƒë·û‹X‰úÓâ‹H òf‰¸ˆ¶ˆ¹‹PˆLƒÃ‹¼‰X‹\$¹)уêÓÿ…Ûf‰¸¸‰¼…UþÿÿfƒD$ 1Û‹l$ ¾¹Š9l$‹|$aþÿÿƒÄ[^_]Ãt&ƒú G·¨Â ¾‹ˆ¼)î9ñ·°À Ž9·¸¸‰t$Óæ ÷‹pf‰¸¸‰ùf‰|$‹xˆ >¶ˆ¹‹pˆL>ƒÇ‹°¼‰x‹|$¹)ñÓÿ‰ùf‰ˆ¸L5ðƒù ‰ˆ¼Žóƒë·ë‹X‰êÓâ‰Ñ‹P ùf‰ˆ¸ˆ ‹H¶˜¹ˆ\ƒÂ¹‰P‹¼)уê Óýf‰¨¸‰¼é,ýÿÿt&‰ÓéJýÿÿ‰ß¾¹1Ûé7ýÿÿ¶Sý·ÒÓâƒÁ òf‰¸‰ˆ¼éèüÿÿ·¼ Óâù Öf‰°¸‰ˆ¼éþÿÿ·¨Æ ¾‹ˆ¼)î9ñ·°Ä ŽS·¸¸‰t$Óæ ÷‹pf‰¸¸‰ùf‰|$‹xˆ >¶ˆ¹‹pˆL>ƒÇ‹°¼‰x‹|$¹)ñÓÿ‰ùf‰ˆ¸L5ð‰ˆ¼ƒù ŽËƒë ·ë‹X‰êÓâ‰Ñ‹P ùf‰ˆ¸ˆ ‹H¶˜¹ˆ\ƒÂ¹‰P‹¼)уê Óýf‰¨¸‰¼éåûÿÿÓâù‰Öf °¸‰ˆ¼f‰°¸é¨üÿÿ‹ˆ¼‰Ó·°¸é”üÿÿÓæé‰÷f ¸¸ƒù ‰ˆ¼f‰¸¸ þÿÿƒê·òÓæƒÁ þf‰°¸‰ˆ¼épûÿÿƒê ·òÓæƒÁ þf‰°¸‰ˆ¼éQûÿÿÓæé‰÷f ¸¸‰ˆ¼f‰¸¸éîþÿÿt&¼'UWVSƒì‹¨ ‰T$1Ò·˜¸‰L$‹ˆ¼…í…º‹t$·–¾‰÷)×9ÏŒ8‹|$··ÓæÑ óf‰˜¸‰ˆ¼ƒÄ[^_]Ãf‹l$t½½·~·6)ý9Ín‰õÓå‹H ë‹hf‰˜¸ˆ)¶˜¹‹Hˆ\)ƒÅ¹‰h‹¨¼)éÓþL/ð‰óf‰°¸‰ˆ¼; ƒFÿÿÿ‹°¤‹¸˜·4V¶<ƒÂ…ö‰|$„gÿÿÿ¶¿‹l$‰|$¬½·}‰,$½)ý9Í‹,$‰|$ Ø·m‰ï‰l$Óç‹h‹H ߉ûf‰¸¸ˆ\ ¶¸¹‹h‰û‹|$ˆ\ ‹˜¼ƒÁ‰H‹l$ ¹)ÙÓÿ‰ùf‰ˆ¸Lð‰ˆ¼‹\$‹€…Û‰\$„‹l$‹\$+­ ½+l$‰\$ 9͉·ë‹X‰l$Óå ï‹h‰ùf‰¸¸ˆ +¶¸¹‹X‰ù‹|$ˆL+ƒÅ¹‰h‹¨¼‹\$)éÓÿ‰ùf‰ˆ¸L+ð‰ˆ¼ƒîþÿ‰t$‡¶¶‹l$\µ·k·‰l$½+l$9Í¿‰\$ Óã‹h ß‹X‰ùf‰¸¸ˆL¶¸¹‹h‰ùˆLƒÃ‹¸¼‰X‹\$ ¹‹l$)ùÓû‰Ùf‰ˆ¸L=ð‰ˆ¼‹<µ€…ÿ„ýýÿÿ‹l$+,µ  ‰î½)ý·ö9ÍŒ’ýÿÿÓæù óf‰˜¸‰ˆ¼éÆýÿÿ·}ÓçL$ ßf‰¸¸‰ˆ¼ékþÿÿÓãL$ ûf‰˜¸‰ˆ¼ë…´&‰óÁë¶³éîþÿÿ·l$ ÓåL$ ïf‰¸¸‰ˆ¼éµþÿÿ‹l$·½‰ýÓå‹H ë‹hf‰˜¸ˆ)¶˜¹‹Hˆ\)‹˜¼‰ñƒÅ‰h)ÙÓÿTðf‰¸¸‰¼ƒÄ[^_]ö‹T$‚”‰‚ ‚ˆ ‰‚$ ‚| ‰‚0 1ÀÇ‚ Ç‚, Ç‚8 (fÇ‚¸Ç‚¼t&fÇ„‚”ƒÀ=uìf1ÀfÇ„‚ˆ ƒÀƒøuî0Àt&fÇ„‚| ƒÀƒøuîfÇ‚”Ç‚¬Ç‚¨Ç‚°Ç‚ ö¿UWVS‹D$‹\$ ‹T$‹ˆ¼·Ûƒù ÎÓãƒÁf ˜¸‰ˆ¼f‰˜¸ƒùŽ’‹H‹pˆ¶°¹‹x‰óˆ\ƒÁ‰H‹X‰×‹HfÁïfÇ€¸Ç€¼ˆ‹p‰ùˆL‹p‰Ñ÷шL‹p‰Ñ÷ÑfÁé…ÒˆLK‰Ht‹|$)ß¶tü‹h‰óˆ\ ƒÁƒê‰Huç[^_]Ã…É~‰‹H‹pˆƒÁ‰Héuÿÿÿf‰Þ‹xÓæ‰ñ‹pf ˆ¸f‰ˆ¸ˆ 7¶¸¹‹h‰ùˆL5ƒÆ¹‰p‹°¼)ñÓû‰Ùf‰ˆ¸N󉈼éòþÿÿ´&S‹D$‹¼ƒút0ƒú~%‹P·˜¸‹HˆƒÂfÁ¨¸ƒ¨¼‰P[Ãt&‹P·˜¸‹Hˆ¶˜¹‹Hˆ\ƒÂ‰PfÇ€¸Ç€¼[ô&VºS‹D$ ‹ˆ¼ƒù Ž–‰Ó‹pÓã‰Ù‹Xf ˆ¸f‰ˆ¸ˆ 3¶˜¹‹Hˆ\1‹˜¼¹ƒÆ‰p)Ùƒë Óúƒû ‰Ñf‰ˆ¸‰˜¼]ƒÃƒû‰˜¼„‹ƒû~‹H‹Xˆ ƒÁfÁ¨¸ƒ¨¼‰H[^ô&Óâf ¸Yƒû f‰¸‰˜¼~£‹H‹Xˆ ¶˜¹‹Pˆ\ ‹˜¼ƒÁ1Ò‰HfÇ€¸ƒë ƒû‰˜¼…uÿÿÿ‹H‹Xˆ ¶˜¹‹Pˆ\ ƒÁ‰HfÇ€¸Ç€¼[^Ãë UWVSƒì‹\$0‹t$8‹ƒ„…ÀŽ‹ ƒy,„“ ‰ØèZêÿÿ“$ ‰ØèMêÿÿ‹‹ “”‰Øèºðÿÿ‹‹( “ˆ ‰Øè§ðÿÿ“0 ‰Øèêÿÿfƒ»º …¤fƒ»‚ …Œfƒ»¶ …tfƒ»† …\fƒ»² …Dfƒ»Š …,fƒ»® …fƒ»Ž …tfƒ»ª …îfƒ»’ …bfƒ»¦ …"fƒ»– …fƒ»¢ …fƒ»š …fƒ»ž …‡fƒ»~ ¸…y¹ ¿¸‹“¨T‹‹¬‰“¨ƒÂ ÁêƒÁ Áé9ÊCÑn9Õ†C9ф郻ˆ„Ü‹‹¼ƒù ö·T$<ƒÂ·ÒÓâƒÁf “¸‰‹¼f‰“¸‹«( ƒù ‹³ ‰l$‰t$Ž´‰õí·í‰îÓæ‹K ò‹sf‰“¸ˆ¶“¹‹sˆT‹³¼ƒÁ‰K¹)ñÓýNõ‰êf‰«¸‰‹¼ƒù Ž7·l$‰îÓæ‹K ò‹sf‰“¸ˆ¶“¹‹sˆTƒÁ‰ê‰K¹+‹¼Óú‹‹¼‰Öf‰“¸ƒé ‰‹¼ƒù ޹ƒè·è‹C‰êÓâ‹K òf‰“¸ˆ¶‹¹‹SˆLƒÀ¹‰C‹ƒ¼)ÁÓýHô‰êf‰«¸‰‹¼1ÀëR‰õƒÀÓå‹K ê‹kf‰“¸ˆ)¶‹¹‹SˆL*ƒÅ¹‰k‹«¼)éÓþ9øMó‰òf‰³¸‰‹¼}/¶°ôƒù ·´³~ šÓæƒÀ òƒÁ9øf‰“¸‰‹¼|Ñ‹L$»”‰Ø‰ú³ˆ è‚îÿÿ‹L$‰ò‰Øèuîÿÿ‰ñ‰ú‰ØèZôÿÿ1ÀfÇ„ƒ”ƒÀ=uìf1ÀfÇ„ƒˆ ƒÀƒøuî0ÀfÇ„ƒ| ƒÀƒøuî‹D$¾~þAÁ!¡aá‘QÑ1±qñ ‰IÉ)©ié™YÙ9¹yù…EÅ%¥eå•UÕ5µuõ MÍ-­mí]Ý=½}ý  “ “ S S Ó Ó 3 3 ³ ³ s s ó ó  ‹ ‹ K K Ë Ë + + « « k k ë ë   › › [ [ Û Û ; ; » » { { û û   ‡ ‡ G G Ç Ç ' ' § § g g ç ç   — — W W × × 7 7 · · w w ÷ ÷    O O Ï Ï / / ¯ ¯ o o ï ï   Ÿ Ÿ _ _ ß ß ? ? ¿ ¿   ÿ ÿ @ `P0pH(hX8xD$dT4tƒCÃ#£cã       (08@P`p€ Àà  0@`€À€  0@`섟+±Ä8ðú)zgŒ³,.fileþÿgtrees.c P Ð 'ð 2à B€O \€i  tÀ ~œ(¬  ¾ð Îp ÙÀ êôô0  .textË.data<.bss.rdatal )7C_pqdownheap_build_tree_scan_tree_send_tree_compress_block_extra_lbits_base_length_extra_dbits_base_dist__tr_init_static_l_desc_static_d_desc_static_bl_desc__tr_stored_block__tr_flush_bits__tr_align__tr_flush_block_bl_order_static_dtree_static_ltree__tr_tally_extra_blbits__length_code__dist_code zutil.o/ 1437066065 1011 100 100644 1011 ` Lp.textp´ä P`.data@0À.bss€0À.rdataÀ$  @`@¸Ãv¼'¸UÃv¼'¸+D$‹…€Ãë ‹D$ ¯D$‰D$é´&¼'‹D$‰D$é1.2.8need dictionarystream endfile errorstream errordata errorinsufficient memorybuffer errorincompatible version!"-:EYf!,Ni€„ˆŒ”˜œ ¤.fileþÿgzutil.c  _zError  _zcalloc@ _zcfree` .textm.data.bss.rdata¨ #€_malloc _free -_zlibVersion_zlibCompileFlags_z_errmsg compress.o/ 1437066065 1011 100 100644 1108 ` Là.textÀ´| P`.data@0À.bss€0À.rdatat@0@ƒì\‹D$h‰|$X‹|$d‰t$Tt$‰\$P‰D$‹D$lÇD$8ÇD$<ÇD$@‰D$‹D$`‰D$$‹ÇD$ 8ÇD$‰4$‰D$(‹D$p‰D$è…À‰Ãt‰Ø‹t$T‹\$P‹|$XƒÄ\ÃÇD$‰4$èƒø‰Ãt‰4$è…Û¸ûÿÿÿDØëËD$,‰‰4$è‰Ãë±´&¼'ƒì\‹D$h‰|$X‹|$d‰t$Tt$‰\$P‰D$‹D$lÇD$8ÇD$<ÇD$@‰D$‹D$`‰D$$‹ÇD$ 8ÇD$ÇD$ÿÿÿÿ‰D$(‰4$è…À‰Ãt‰Ø‹t$T‹\$P‹|$XƒÄ\ÃÇD$‰4$èƒø‰Ãt‰4$è…Û¸ûÿÿÿDØëËD$,‰‰4$è‰Ãë±´&¼'‹T$‰ÐÁè L ‰ÐÁèÈÁêÐÃ1.2.8U i‘ º% 9apŠ.fileþÿgcompress.c Ð   .textº .data.bss.rdata( _deflate 6 B_compress2_compress_compressBound_deflateInit__deflateEnduncompr.o/ 1437066065 1011 100 100644 758 ` L¾.textдŒ P`.data@0À.bss€0À.rdata„@0@ƒì\‹D$h‰|$X‹|$d‰t$Tt$‰\$P‰D$‹D$lÇD$8ÇD$<‰D$‹D$`‰D$$‹ÇD$8ÇD$‰4$‰D$(è…À‰Ãt‰Ø‹t$T‹\$P‹|$XƒÄ\ÃÇD$‰4$èƒø‰Ãt$‰4$èƒût)ƒûûuÅ‹D$…À¸ýÿÿÿDØëµf‹D$,‰‰4$è‰Ãë¡»ýÿÿÿëš1.2.8M Y  º.fileþÿguncompr.c .textÉ.data.bss.rdata _inflate  *_uncompress_inflateInit__inflateEndgzclose.o/ 1437066065 1011 100 100644 450 ` LÐ .text0Œ¼ P`.data@0À.bss€0À‹D$…Àtx Ot‰D$é¶é¸þÿÿÿà ! .fileþÿggzclose.c_gzclose .text+.data.bss  _gzclose_w_gzclose_rgzlib.o/ 1437066065 1011 100 100644 5257 ` Lh$.textà ´ô $ P`.data@0À.bss€0À.rdata`” \N@0@UW‰×V1öS‰Ãƒì,…À„=‰L$Ç$Œè‹L$…À‰Æ„Ç@Ç@ Ç@PÇ@ Ç@<ÿÿÿÿÇ@@Ç@(¶„À„ø1íë¾Àƒè0‰F<ƒÁ¶„À„ PЀú váƒè+out of memory: %s%s%s!Ÿ«·2cm´ Éx!½"ë!"#gâôù#+‚#·6#¦#F P ®  K U a r | ˆ ” ¤   $(,048<@DHLPTX\`dhlptx|€„ˆŒ”˜œ ¤¨¬°´¸¼ÀÄÈÌÐÔØÜàäèìðôøü  $(,048.fileþÿggzlib.c_gz_open _gzopen€   _gzdopenÀ @ ` "° , _gzseekp 6€ _gztellÀ @ Lp _gzeofà _gzerror  V€  bð  .textÙ $.data.bss.rdata]Nl_malloc z _free _strlen „ _open Ž ™_gzopen64_gzopen_w_gzbuffer_gzrewind_gzseek64_gztell64_gzoffset64_gzoffset_gzclearerr_gz_error__imp___wopen_snprintf_wcstombs__lseeki64 gzread.o/ 1437066065 1011 100 100644 5577 ` Lš$.text ´ˆ5 P`.data@0À.bss€0À.rdata´Ô@0@S‰Ãƒìÿ‹‰$è‰$ÇD$ÿÿÿÿ‰D$èƒÄ¸ÿÿÿÿ[ö¿UW1ÿV‰ÆSƒì,@T‰D$‹Fd‰D$ëSt&‹D$ÇD$‰$èƒø‰Ç„ƒøþ„øƒøü„ƒøý„0ƒÿ‹Fd„¥…À„‹VX…Òu«‹FLƒøû…7‹F4…Àuh‹F 1Û‹n‰|$‰÷‰Æë¶Ã9݆‡‰è)؉D$‰D$‹G‰$èƒø׉þ‹|$…øÇF4^X‹F …Û‰^X‰FT…0ÿÿÿÇD$ÇD$ûÿÿÿ‰4$è‹Fd‹T$)‹F`‰)ЉF1ÀƒÿuÇF,ƒÄ,[^_]Éþ‹|$룴&‰4$ÇD$0ÇD$þÿÿÿèƒÄ,¸ÿÿÿÿ[^_]É4$ÇD$WÇD$üÿÿÿèƒÄ,¸ÿÿÿÿ[^_]ËFlº‰4$ÇD$ýÿÿÿ…ÀD‰D$èƒÄ,¸ÿÿÿÿ[^_]Ã…À„ÁþÿÿƒÄ,¸ÿÿÿÿ[^_]Ãÿ‹‰$èÇD$ÿÿÿÿ‰4$‰D$è¸ÿÿÿÿé.ÿÿÿt&ƒì<‰\$,‰Ã‰l$8hT‹@‰t$0‰|$4…À„…‹sXƒþ†a‹CT€8„(‹K(…ÉtN‹C$‹ST‰t$‰C‰T$‰$è‹CXÇC,ÇCXÇC(‰1À‹\$,‹t$0‹|$4‹l$8ƒÄ<Ãt&ÇCX1ÀÇC4ÇëÏ‹s‰4$è‰Ç‰C 6‰$è…ÿ‰C$„V…À„i‰sÇCtÇCxÇC|ÇCXÇCTÇD$ 8ÇD$eÇD$‰,$è…À„ÿþÿÿ‹C$‰$è‹C ‰$èÇCÇD$WÇD$üÿÿÿ‰$è¸ÿÿÿÿéÿÿÿ€x‹…Îþÿÿ‰,$è1ÀÇC,ÇC(éíþÿÿ¶‹SLƒúû…°‹{4…ÿuQ…öuj‹{)÷s ‰t$1öëÆ9÷v+‰ø)ð‰D$‹D$ð‰D$‹C‰$èƒøØu}ÇC4‹C sX‰CT‰sX1À…ö„yþÿÿƒþ‡(þÿÿ¾é*þÿÿ‹ST‹C ¶ˆ‹sXéƒÿÿÿ…À„ÿÿÿ‰$è‹{ …ÿ„ÿÿÿ‰<$èéõþÿÿ…Ò¸ÿÿÿÿ„Cÿÿÿéþÿÿÿ‹‰$èÇD$ÿÿÿÿ‰$‰D$èƒÈÿéíýÿÿ¶WVS‰Ãƒì‹C,ƒøtUƒøt/…Àu‰ØèPýÿÿƒøÿt9‹C,…Àt‹…Àu‹C4…ÀtÏ‹CX…ÀuÈ1Àëj‹CÀ‰Cd‹C$‰C`‰ØèûÿÿƒøÿuθÿÿÿÿëI‹s1À‹{$Çöë9Ɖv'‰ò)Âø‰D$‹C‰T$‰$èƒøÚuÇC4‹C$‰C1ÀƒÄ[^_Ãÿ‹‰$èÇD$ÿÿÿÿ‰$‰D$è¸ÿÿÿÿëÎU‰ÕWVS‰Ãƒì,…Û¸ÿÿÿÿ„É{ O…¼‹SLƒúû…°‹CH…À…$‹3ÇD$¿ëYv‹S4…Òt ‹CX…À„‡‹C,…Àtg‹SÒ9×r^ƒø„…‰{d‰Ø‰k`èúÿÿƒøÿtO‹3Ç)÷õt$s…ÿtL‹3…öt¦‹C9þG÷‰,$)÷õ‰t$‰D$ès)3ëÌv‰ØèIþÿÿƒøÿuĸÿÿÿÿƒÄ,[^_]ÃÇC8‹D$ƒÄ,[^_]Ãt&‰Ú1ö‰û‰l$ët&Æ9󆶋|$‰Ý)õ‰l$÷‰|$‹B‰T$‰$è‹T$ƒø̉Ӊé‰ú…žÇC4‰Õ‰Ïé9ÿÿÿ‹{DÇCH‹3…ÿu(éÉþÿÿ|L9÷´&|A)÷‰ð1öCC‰3…ÿ„¦þÿÿƒþuØ‹C4…Àt ‹KX…É„þÿÿ‰Øèjýÿÿƒøÿ„ÿÿÿ‹3ë͉ø)þ1ÿë½t&‹l$‰ß‰Ó)÷õé¸þÿÿ…Ò„Hþÿÿéóþÿÿ‰Ø‰|$‰l$èSøÿÿ‹T$‹L$ƒøÿ„ÎþÿÿéDÿÿÿ¶¼'U¸ÿÿÿÿWVSƒì,‹\$@‹l$D‹|$H…Û„è{ O…Û‹SLƒúû…èƒÿŒ©¸„»‹sH…ö…H‹ÇD$ë^‹C4…Àt ‹CX…À„­‹C,…À„‹SÒ9ׂ‚ƒø„©‰{d‰Ø‰k`èÌ÷ÿÿƒøÿts‹3Ç)÷õt$s…ÿtp‹…Àtž9ø‰þFð‹C)÷‰,$õ‰t$‰D$ès)3ëÊÇD$lÇD$ýÿÿÿ‰$è¸ÿÿÿÿƒÄ,[^_]ÉØèéûÿÿƒøÿu ¸ÿÿÿÿëåÇC8¶‹D$ƒÄ,[^_]Ãt&‰Ú1ö‰l$‰ûët&Æ9󆶋|$‰Ý)õ‰l$÷‰|$‹B‰T$‰$è‹T$ƒø̉Ӊé‰ú…žÇC4‰Õ‰Ïéÿÿÿ‹sDÇCH‹…öu(é¥þÿÿ|L9Æ´&|A)ƉÂ1ÀSS‰…ö„‚þÿÿƒøuØ‹K4…Ét ‹SX…Ò„kþÿÿ‰Øè ûÿÿƒøÿ„ÿÿÿ‹ë͉ò)ð1öë½t&‹l$‰ß‰Ó)÷õé”þÿÿ…Ò„þÿÿéÚþÿÿ‰Ø‰|$‰l$èóõÿÿ‹T$‹L$ƒøÿ„ÎþÿÿéDÿÿÿ¶¼'ƒì¸ÿÿÿÿ‹L$ …Ét,y Ou#‹QLƒúûu?‹…Àt‹QƒèƒA‰¶ƒÂ‰QƒÄÃT$ ‰Èè5ûÿÿ¶T$ ‰Á¸ÿÿÿÿ…ÉOƒÄÃ…Òt½ëÖv¼'ƒì¸ÿÿÿÿ‹L$ …Ét,y Ou#‹QLƒúûu?‹…Àt‹QƒèƒA‰¶ƒÂ‰QƒÄÃT$ ‰ÈèÅúÿÿ¶T$ ‰Á¸ÿÿÿÿ…ÉOƒÄÃ…Òt½ëÖv¼'WVSƒì‹\$$‹|$ …Û„ú{ O…í‹CLƒøû…!‹CH…Àuz…ÿˆÒ‹…Òt=‹KÉ9Ê„‹s;s$„ËFÿƒÂ‰C‰ø‰ˆFÿƒkÇC8ƒÄ‰ø[^_ËC‰úÇDÿC$‰Cˆ‰øƒkÇC8ƒÄ[^_Ãt&‹sDÇCH¶…ö„nÿÿÿ‹ƒøt#|O9ðK)ƉÂ1ÀSS…ö‰„Kÿÿÿ‹ƒøuÝ‹C4…Àt ‹CX…À„2ÿÿÿ‰Øèµøÿÿƒøÿu°ƒÄ¿ÿÿÿÿ‰ø[^_Ãf‰ò)ð1öë³ñ9Æs)ƒèƒé¶ˆ9C$rð‹‰Îéÿÿÿ¶…À„×þÿÿ붉Ît&éøþÿÿÇD$”¿ÿÿÿÿÇD$ýÿÿÿ‰$èéñþÿÿ‰ö¼'U1ÀWVSƒì,‹T$D‹\$@‹|$H…Ò„Ã…Û„»…ÿ޳{ O…¦‹SLƒúû…*‹CH…À…¶1Àƒï„„‹T$D‹‰T$…Àt~‹k9ø‰þFð‰t$ÇD$ ‰,$è…À‰Ât‰Æ)îƒÆ‹D$‰T$‰t$‰l$‰$è‹sst$)ð)÷‹T$‰t…Òt‹T$D9T$„Š‰Ð‹T$ƃÄ,[^_]ÉØèA÷ÿÿƒøÿtm‹…À…lÿÿÿÇC8ë‹sDÇCH…ö„8ÿÿÿ‹ƒøt#|F9Æ|B)ƉÂ1ÀSS…ö‰„ÿÿÿ‹ƒøuÝ‹C4…Àt ‹CX…À„üþÿÿ‰ØèÔöÿÿƒøÿu°1Àéxÿÿÿ‰ò)ð1öë¼…Ò„ÎþÿÿécÿÿÿvS1Àƒì‹\$…Ût { Ot ‹C(ƒÄ[ËC,…Àuð‹ …Éuê‰Øèìóÿÿëáv¼'ƒì‰\$‹\$ ‰t$¾þÿÿÿ‰|$…Ûta{ OuX‹C…Àud1Àƒ{LûÇD$ÇD$•À‰Æ‰$t¶ûè‹C‰$è‹C‰$è‰$‰Çè…ÿ¸ÿÿÿÿEð‰ð‹\$‹t$‹|$ƒÄÃCT‰$è‹C$‰$è‹C ‰$èévÿÿÿcompressed data errorunexpected end of fileinternal error: inflate stream corruptout of memory1.2.8requested length does not fit in intout of room to push characters&p4D‡”¬¹Îç-—ïÿHXkv…•± pƒ ª¾d‡‘¥rç°¿ÏG y Ž $ !I ¯ºÅ"Ï÷# .fileþÿggzread.c @ _gz_look@ Ð )° _gzreadÐ _gzgetc0  _gzgetc_   =  _gzgets   G  Q` .text5.data.bss.rdata³\j t _inflate _read _memcpy _malloc ~ _free  _memchr _close › §_gz_load.part.0_gz_decomp_gz_fetch_gzread.constprop.2_gzungetc_gzdirect_gzclose_r__imp___errno_strerror_gz_error_inflateInit2__inflateReset_inflateEnd gzwrite.o/ 1437066065 1011 100 100644 4209 ` L '.text ´¨ # P`.data@0À.bss€0À.rdatadD @0@ƒì,‰|$(‹x‰\$ ‰Ã‰t$$‰<$è…À‰Æ‰C „Ê‹C(…Àt‰{1À‹\$ ‹t$$‹|$(ƒÄ,É<$è…À‰C$„½‹C@ÇCtÇCxÇC|‰D$‹C<ÇD$8ÇD$ÇD$‰D$CTÇD$ ÇD$‰$è…Àu+‹S(‹C…Ò‰Cu ‰Cd‹C$‰C`‰C1À‹\$ ‹t$$‹|$(ƒÄ,ËC$‰$è‹C ‰$èÇD$ÇD$üÿÿÿ‰$è¸ÿÿÿÿé ÿÿÿ‰4$ëÔ¶UWV‰ÖS‰Ãƒì‹HxT…É„G‹S(…Ò…T1À…ö‹Sd„’…Òt ƒø…Õ‹C‹k`)Å…ä…Ò„®‹C`‰Õ‰C‰t$‰<$èƒøþ„a‹Sd9êu¹1Ûƒþ„=ƒÄ‰Ø[^_]Ãv‹s‹C$‰sd‰C`‰CÇD$‰<$èƒøþ„‹Sd9ò„í…Ò‰ÖuÖ‹C‹s`)Æt½‰t$‰D$‹C‰$è…Àˆ9ð…þ‹sd…öt“‹C`ëš‹k‹C$‰kd‰C`éFÿÿÿƒþ‰Õ„>ÿÿÿ‹C‹k`)Å„ ÿÿÿt&‰l$‰D$‹C‰$è…Àˆ©9è…¡‹Sdéñþÿÿt&è{ýÿÿƒøÿ…«þÿÿ»ÿÿÿÿé ÿÿÿ‹CX‰D$‹CT‰D$‹C‰$è…Àx_;CXuZÇCXƒÄ1Û‰Ø[^_]ÃvƒÄ1Û‰Ø[^_]Ãt&‰<$èƒÄ‰Ø[^_]É$»ÿÿÿÿÇD$ÇD$þÿÿÿèéþÿÿÿ‹‰$è‰$»ÿÿÿÿÇD$ÿÿÿÿ‰D$èéaþÿÿ´&¼'W‰×V‰ÆSƒì‹XX…Ûud…ÿ¸tt¶‹^…Ûx/9û+…Àu-‹F 1Ò^‰^X‰FT‰ðèŒýÿÿƒøÿt91À)ßuуÄ[^_Ã…À‰ûtÓ‹F ‰\$ÇD$‰$èëº1ÒèTýÿÿƒøÿuƒÄ¸ÿÿÿÿ[^_Ã0Àë½´&¼'U‰ÍWV‰ÖS‰Ãƒì,‹@H…À…ª9kvs‰ï‹CX…Àt\‹ST‹K ЋS)ȉt$)Â9úG×ȉT$‰T$‰$è‹T$SXSÖ)×u‰êƒÄ,‰Ð[^_]Ãt&1Ò‰Øè·üÿÿƒøÿu¡1Òëà‹K ‰Ê‰KTë t&‹{X…ÿt1Ò‰Øèüÿÿ1Òƒøÿt»k1҉؉kX‰sTèwüÿÿ1Òƒøÿu ë ‹SD‰ØÇCHèþÿÿ1Òƒøÿ…:ÿÿÿéÿÿÿ¶¼'Sƒì(‹\$0‹T$4‹L$8…Ût { ±ytƒÄ(1À[ËCL…Àuòƒù|të‹C…Àt'ƒÄ(‰Ø[éÌþÿÿÇD$<ÇD$ýÿÿÿ‰$èë¿f‰Ø‰T$‰L$è±úÿÿ‹T$‹L$ƒøÿu½ëŸfƒì‰\$‹\$ ‰t$‹t$$‰|$¿ÿÿÿÿ…ÛtP{ ±yuG‹CL…Àu@‹KH…É…Œ‹C…Àt@‹KX‹S …Étt‹{Tù‰Ï)×9øv)‰ð‰÷ˆçÿƒCXƒCv‰ø‹\$‹t$‹|$ƒÄÃ{ ±y‰òˆT$ ¿ÿÿÿÿuÚ‹SL…ÒuÓ…ÀtB¹‰ØT$ èßýÿÿƒøuA‰÷çÿë°‰ST‰×눋SD‰ØÇCHèýÿÿƒøÿ…Zÿÿÿë‰Øè¶ùÿÿƒøÿvu¯éyÿÿÿƒÏÿéqÿÿÿƒì‰|$‹|$$‰\$‹\$ ‰t$‰<$è‰Æ1À…Ût { ±yt …öºÿÿÿÿE‹\$‹t$‹|$ƒÄö‹CL…Àu9ƒþ|8¸t׋C…ÀtF‰ñ‰ú‰Øèýÿÿ…Àt·‹\$‹t$‹|$ƒÄô&1ÀëœÇD$<ÇD$ýÿÿÿ‰$è1À뀉Øèéøÿÿ‰Â¸ÿÿÿÿƒúÿu§érÿÿÿ´&ƒì‰\$‹\$ ‰t$‰|$…Û„Ú1ö{ ±yt‰ð‹\$‹t$‹|$ƒÄËSL…Òuç‹C…Àto‹CH…Àuz‹CX…ÀuL‹{‹C ÆD8ÿ‹D$(‰|$‰D$ ‹D$$‰D$‹C ‰$ÿ9ø‰Æ}c…À~_‹C €|8ÿuU‰sX‰CTsëˆf1Ò‰ØèGùÿÿ1öƒøÿu¤éqÿÿÿ‰Øèøÿÿƒøÿu„é_ÿÿÿ‹SD‰Ø1öÇCHèFûÿÿƒøÿ…jÿÿÿé>ÿÿÿ1ö¶é1ÿÿÿ¾ÿÿÿÿé'ÿÿÿƒìD$(‰D$‹D$$‰D$‹D$ ‰$èáþÿÿƒÄö¼'VSƒì‹\$‹t$…ÛtI{ ±y¸þÿÿÿu‹SL…Òuƒþw‹KH…Éu‰ò‰Øè…øÿÿ‹CLƒÄ[^ËSD‰ØÇCHè›úÿÿƒøÿuظÿÿÿÿëÝë ƒì¸þÿÿÿ‰\$‹\$ ‰t$‹t$$‰|$‹|$(…ÛtV{ ±yuM‹SL…ÒuF9s $ö   $ %7 w &‚ .fileþÿggzwrite.c_gz_init _gz_comp  _gz_zeroP ð _gzwriteà _gzputc` _gzputs` 0 0 _gzflush` )Ð 6   .text‹ #.data.bss.rdataaAO_malloc a _free p _deflate _write z ˆ _memset _memcpy _strlen ’ _close ¡ ­_gzwrite.part.0_gzvprintf_gzprintf_gzsetparams_gzclose_w__imp___errno__imp___vsnprintf_deflateInit2__gz_error_deflateReset_strerror_deflateParams_deflateEnd cackey-0.7.10/build/cackey_win64_build/0000755000000000000000000000000013563537513016313 5ustar rootrootcackey-0.7.10/build/cackey_win64_build/build.sh0000755000000000000000000000043513563537513017753 0ustar rootroot#! /bin/bash make distclean ./configure --with-pcsc-headers="$(pwd)/build/cackey_win64_build/include" --with-pcsc-libs="-L$(pwd)/build/cackey_win64_build/lib -lwinscard" --host=x86_64-w64-mingw32 CPPFLAGS="-I$(pwd)/build/cackey_win64_build/include" || exit 1 make || exit 1 exit 0 cackey-0.7.10/build/cackey_win64_build/include/0000755000000000000000000000000013563537513017736 5ustar rootrootcackey-0.7.10/build/cackey_win64_build/include/pcsclite.h0000644000000000000000000000006013563537513021711 0ustar rootroot#define _WIN32_WINNT 0x500 #include cackey-0.7.10/build/cackey_win64_build/include/pthread.h0000644000000000000000000000510113563537513021533 0ustar rootroot/* Thread_emulation.h */ /* Author: Johnson M. Hart */ /* Emulate the Pthreads model for the Win32 platform */ /* The emulation is not complete, but it does provide a subset */ /* required for a first project */ /* Source: http://world.std.com/~jmhart/opensource.htm */ /* The emulation is not complete, but it does provide a subset */ /* that will work with many well-behaved programs */ /* IF YOU ARE REALLY SERIOUS ABOUT THIS, USE THE OPEN SOURCE */ /* PTHREAD LIBRARY. YOU'LL FIND IT ON THE RED HAT SITE */ #ifndef _THREAD_EMULATION # define _THREAD_EMULATION /* Thread management macros */ # ifdef _WIN32 # define _WIN32_WINNT 0x500 /* WINBASE.H - Enable SignalObjectAndWait */ # include # include # define THREAD_FUNCTION_PROTO THREAD_FUNCTION_RETURN (__stdcall *) (void *) # define THREAD_FUNCTION_RETURN unsigned int # define THREAD_SPECIFIC_INDEX DWORD # define pthread_t HANDLE # define pthread_attr_t DWORD # define pthread_create(thhandle, attr, thfunc, tharg) ((int) ((*thhandle = (HANDLE) _beginthreadex(NULL, 0, (THREAD_FUNCTION_PROTO) thfunc, tharg, 0, NULL)) == NULL)) # define pthread_join(thread, result) ((WaitForSingleObject((thread), INFINITE) != WAIT_OBJECT_0) || !CloseHandle(thread)) # define pthread_detach(thread) { if (((void *) thread) != NULL) { CloseHandle((void *) thread); }} # define thread_sleep(nms) Sleep(nms) # define pthread_cancel(thread) TerminateThread(thread, 0) # define ts_key_create(ts_key, destructor) {ts_key = TlsAlloc();} # define pthread_getspecific(ts_key) TlsGetValue(ts_key) # define pthread_setspecific(ts_key, value) TlsSetValue(ts_key, (void *)value) # define pthread_self() GetCurrentThreadId() # else # include # define THREAD_FUNCTION_RETURN void * # endif /* Syncrhronization macros: Win32->pthread */ # ifdef _WIN32 # define pthread_mutex_t HANDLE # define pthread_cond_t HANDLE # define pthread_mutex_lock(pobject) WaitForSingleObject(*pobject, INFINITE) # define pthread_mutex_unlock(pobject) (!ReleaseMutex(*pobject)) # define pthread_mutex_init(pobject,pattr) ((*pobject=CreateMutex(NULL, FALSE, NULL)) == NULL) # define pthread_cond_init(pobject,pattr) (*pobject=CreateEvent(NULL, FALSE, FALSE, NULL)) # define pthread_mutex_destroy(pobject) CloseHandle(*pobject) # define pthread_cond_destroy(pobject) CloseHandle(*pobject) # define pthread_cond_wait(pcv,pmutex) { SignalObjectAndWait(*pmutex, *pcv, INFINITE, FALSE); WaitForSingleObject(*pmutex, INFINITE); } # define pthread_cond_signal(pcv) SetEvent(*pcv) # endif #endif cackey-0.7.10/build/cackey_win64_build/include/zconf.h0000644000000000000000000003616013563537513021234 0ustar rootroot/* zconf.h -- configuration of the zlib compression library * Copyright (C) 1995-2013 Jean-loup Gailly. * For conditions of distribution and use, see copyright notice in zlib.h */ /* @(#) $Id$ */ #ifndef ZCONF_H #define ZCONF_H /* * If you *really* need a unique prefix for all types and library functions, * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. * Even better than compiling with -DZ_PREFIX would be to use configure to set * this permanently in zconf.h using "./configure --zprefix". */ #ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ # define Z_PREFIX_SET /* all linked symbols */ # define _dist_code z__dist_code # define _length_code z__length_code # define _tr_align z__tr_align # define _tr_flush_bits z__tr_flush_bits # define _tr_flush_block z__tr_flush_block # define _tr_init z__tr_init # define _tr_stored_block z__tr_stored_block # define _tr_tally z__tr_tally # define adler32 z_adler32 # define adler32_combine z_adler32_combine # define adler32_combine64 z_adler32_combine64 # ifndef Z_SOLO # define compress z_compress # define compress2 z_compress2 # define compressBound z_compressBound # endif # define crc32 z_crc32 # define crc32_combine z_crc32_combine # define crc32_combine64 z_crc32_combine64 # define deflate z_deflate # define deflateBound z_deflateBound # define deflateCopy z_deflateCopy # define deflateEnd z_deflateEnd # define deflateInit2_ z_deflateInit2_ # define deflateInit_ z_deflateInit_ # define deflateParams z_deflateParams # define deflatePending z_deflatePending # define deflatePrime z_deflatePrime # define deflateReset z_deflateReset # define deflateResetKeep z_deflateResetKeep # define deflateSetDictionary z_deflateSetDictionary # define deflateSetHeader z_deflateSetHeader # define deflateTune z_deflateTune # define deflate_copyright z_deflate_copyright # define get_crc_table z_get_crc_table # ifndef Z_SOLO # define gz_error z_gz_error # define gz_intmax z_gz_intmax # define gz_strwinerror z_gz_strwinerror # define gzbuffer z_gzbuffer # define gzclearerr z_gzclearerr # define gzclose z_gzclose # define gzclose_r z_gzclose_r # define gzclose_w z_gzclose_w # define gzdirect z_gzdirect # define gzdopen z_gzdopen # define gzeof z_gzeof # define gzerror z_gzerror # define gzflush z_gzflush # define gzgetc z_gzgetc # define gzgetc_ z_gzgetc_ # define gzgets z_gzgets # define gzoffset z_gzoffset # define gzoffset64 z_gzoffset64 # define gzopen z_gzopen # define gzopen64 z_gzopen64 # ifdef _WIN32 # define gzopen_w z_gzopen_w # endif # define gzprintf z_gzprintf # define gzvprintf z_gzvprintf # define gzputc z_gzputc # define gzputs z_gzputs # define gzread z_gzread # define gzrewind z_gzrewind # define gzseek z_gzseek # define gzseek64 z_gzseek64 # define gzsetparams z_gzsetparams # define gztell z_gztell # define gztell64 z_gztell64 # define gzungetc z_gzungetc # define gzwrite z_gzwrite # endif # define inflate z_inflate # define inflateBack z_inflateBack # define inflateBackEnd z_inflateBackEnd # define inflateBackInit_ z_inflateBackInit_ # define inflateCopy z_inflateCopy # define inflateEnd z_inflateEnd # define inflateGetHeader z_inflateGetHeader # define inflateInit2_ z_inflateInit2_ # define inflateInit_ z_inflateInit_ # define inflateMark z_inflateMark # define inflatePrime z_inflatePrime # define inflateReset z_inflateReset # define inflateReset2 z_inflateReset2 # define inflateSetDictionary z_inflateSetDictionary # define inflateGetDictionary z_inflateGetDictionary # define inflateSync z_inflateSync # define inflateSyncPoint z_inflateSyncPoint # define inflateUndermine z_inflateUndermine # define inflateResetKeep z_inflateResetKeep # define inflate_copyright z_inflate_copyright # define inflate_fast z_inflate_fast # define inflate_table z_inflate_table # ifndef Z_SOLO # define uncompress z_uncompress # endif # define zError z_zError # ifndef Z_SOLO # define zcalloc z_zcalloc # define zcfree z_zcfree # endif # define zlibCompileFlags z_zlibCompileFlags # define zlibVersion z_zlibVersion /* all zlib typedefs in zlib.h and zconf.h */ # define Byte z_Byte # define Bytef z_Bytef # define alloc_func z_alloc_func # define charf z_charf # define free_func z_free_func # ifndef Z_SOLO # define gzFile z_gzFile # endif # define gz_header z_gz_header # define gz_headerp z_gz_headerp # define in_func z_in_func # define intf z_intf # define out_func z_out_func # define uInt z_uInt # define uIntf z_uIntf # define uLong z_uLong # define uLongf z_uLongf # define voidp z_voidp # define voidpc z_voidpc # define voidpf z_voidpf /* all zlib structs in zlib.h and zconf.h */ # define gz_header_s z_gz_header_s # define internal_state z_internal_state #endif #if defined(__MSDOS__) && !defined(MSDOS) # define MSDOS #endif #if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) # define OS2 #endif #if defined(_WINDOWS) && !defined(WINDOWS) # define WINDOWS #endif #if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) # ifndef WIN32 # define WIN32 # endif #endif #if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) # if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) # ifndef SYS16BIT # define SYS16BIT # endif # endif #endif /* * Compile with -DMAXSEG_64K if the alloc function cannot allocate more * than 64k bytes at a time (needed on systems with 16-bit int). */ #ifdef SYS16BIT # define MAXSEG_64K #endif #ifdef MSDOS # define UNALIGNED_OK #endif #ifdef __STDC_VERSION__ # ifndef STDC # define STDC # endif # if __STDC_VERSION__ >= 199901L # ifndef STDC99 # define STDC99 # endif # endif #endif #if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) # define STDC #endif #if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) # define STDC #endif #if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) # define STDC #endif #if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) # define STDC #endif #if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ # define STDC #endif #ifndef STDC # ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ # define const /* note: need a more gentle solution here */ # endif #endif #if defined(ZLIB_CONST) && !defined(z_const) # define z_const const #else # define z_const #endif /* Some Mac compilers merge all .h files incorrectly: */ #if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) # define NO_DUMMY_DECL #endif /* Maximum value for memLevel in deflateInit2 */ #ifndef MAX_MEM_LEVEL # ifdef MAXSEG_64K # define MAX_MEM_LEVEL 8 # else # define MAX_MEM_LEVEL 9 # endif #endif /* Maximum value for windowBits in deflateInit2 and inflateInit2. * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files * created by gzip. (Files created by minigzip can still be extracted by * gzip.) */ #ifndef MAX_WBITS # define MAX_WBITS 15 /* 32K LZ77 window */ #endif /* The memory requirements for deflate are (in bytes): (1 << (windowBits+2)) + (1 << (memLevel+9)) that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) plus a few kilobytes for small objects. For example, if you want to reduce the default memory requirements from 256K to 128K, compile with make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" Of course this will generally degrade compression (there's no free lunch). The memory requirements for inflate are (in bytes) 1 << windowBits that is, 32K for windowBits=15 (default value) plus a few kilobytes for small objects. */ /* Type declarations */ #ifndef OF /* function prototypes */ # ifdef STDC # define OF(args) args # else # define OF(args) () # endif #endif #ifndef Z_ARG /* function prototypes for stdarg */ # if defined(STDC) || defined(Z_HAVE_STDARG_H) # define Z_ARG(args) args # else # define Z_ARG(args) () # endif #endif /* The following definitions for FAR are needed only for MSDOS mixed * model programming (small or medium model with some far allocations). * This was tested only with MSC; for other MSDOS compilers you may have * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, * just define FAR to be empty. */ #ifdef SYS16BIT # if defined(M_I86SM) || defined(M_I86MM) /* MSC small or medium model */ # define SMALL_MEDIUM # ifdef _MSC_VER # define FAR _far # else # define FAR far # endif # endif # if (defined(__SMALL__) || defined(__MEDIUM__)) /* Turbo C small or medium model */ # define SMALL_MEDIUM # ifdef __BORLANDC__ # define FAR _far # else # define FAR far # endif # endif #endif #if defined(WINDOWS) || defined(WIN32) /* If building or using zlib as a DLL, define ZLIB_DLL. * This is not mandatory, but it offers a little performance increase. */ # ifdef ZLIB_DLL # if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) # ifdef ZLIB_INTERNAL # define ZEXTERN extern __declspec(dllexport) # else # define ZEXTERN extern __declspec(dllimport) # endif # endif # endif /* ZLIB_DLL */ /* If building or using zlib with the WINAPI/WINAPIV calling convention, * define ZLIB_WINAPI. * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. */ # ifdef ZLIB_WINAPI # ifdef FAR # undef FAR # endif # include /* No need for _export, use ZLIB.DEF instead. */ /* For complete Windows compatibility, use WINAPI, not __stdcall. */ # define ZEXPORT WINAPI # ifdef WIN32 # define ZEXPORTVA WINAPIV # else # define ZEXPORTVA FAR CDECL # endif # endif #endif #if defined (__BEOS__) # ifdef ZLIB_DLL # ifdef ZLIB_INTERNAL # define ZEXPORT __declspec(dllexport) # define ZEXPORTVA __declspec(dllexport) # else # define ZEXPORT __declspec(dllimport) # define ZEXPORTVA __declspec(dllimport) # endif # endif #endif #ifndef ZEXTERN # define ZEXTERN extern #endif #ifndef ZEXPORT # define ZEXPORT #endif #ifndef ZEXPORTVA # define ZEXPORTVA #endif #ifndef FAR # define FAR #endif #if !defined(__MACTYPES__) typedef unsigned char Byte; /* 8 bits */ #endif typedef unsigned int uInt; /* 16 bits or more */ typedef unsigned long uLong; /* 32 bits or more */ #ifdef SMALL_MEDIUM /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ # define Bytef Byte FAR #else typedef Byte FAR Bytef; #endif typedef char FAR charf; typedef int FAR intf; typedef uInt FAR uIntf; typedef uLong FAR uLongf; #ifdef STDC typedef void const *voidpc; typedef void FAR *voidpf; typedef void *voidp; #else typedef Byte const *voidpc; typedef Byte FAR *voidpf; typedef Byte *voidp; #endif #if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) # include # if (UINT_MAX == 0xffffffffUL) # define Z_U4 unsigned # elif (ULONG_MAX == 0xffffffffUL) # define Z_U4 unsigned long # elif (USHRT_MAX == 0xffffffffUL) # define Z_U4 unsigned short # endif #endif #ifdef Z_U4 typedef Z_U4 z_crc_t; #else typedef unsigned long z_crc_t; #endif #if 1 /* was set to #if 1 by ./configure */ # define Z_HAVE_UNISTD_H #endif #if 1 /* was set to #if 1 by ./configure */ # define Z_HAVE_STDARG_H #endif #ifdef STDC # ifndef Z_SOLO # include /* for off_t */ # endif #endif #if defined(STDC) || defined(Z_HAVE_STDARG_H) # ifndef Z_SOLO # include /* for va_list */ # endif #endif #ifdef _WIN32 # ifndef Z_SOLO # include /* for wchar_t */ # endif #endif /* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even * though the former does not conform to the LFS document), but considering * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as * equivalently requesting no 64-bit operations */ #if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 # undef _LARGEFILE64_SOURCE #endif #if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) # define Z_HAVE_UNISTD_H #endif #ifndef Z_SOLO # if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) # include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ # ifdef VMS # include /* for off_t */ # endif # ifndef z_off_t # define z_off_t off_t # endif # endif #endif #if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 # define Z_LFS64 #endif #if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) # define Z_LARGE64 #endif #if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) # define Z_WANT64 #endif #if !defined(SEEK_SET) && !defined(Z_SOLO) # define SEEK_SET 0 /* Seek from beginning of file. */ # define SEEK_CUR 1 /* Seek from current position. */ # define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ #endif #ifndef z_off_t # define z_off_t long #endif #if !defined(_WIN32) && defined(Z_LARGE64) # define z_off64_t off64_t #else # if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) # define z_off64_t __int64 # else # define z_off64_t z_off_t # endif #endif /* MVS linker does not support external names larger than 8 bytes */ #if defined(__MVS__) #pragma map(deflateInit_,"DEIN") #pragma map(deflateInit2_,"DEIN2") #pragma map(deflateEnd,"DEEND") #pragma map(deflateBound,"DEBND") #pragma map(inflateInit_,"ININ") #pragma map(inflateInit2_,"ININ2") #pragma map(inflateEnd,"INEND") #pragma map(inflateSync,"INSY") #pragma map(inflateSetDictionary,"INSEDI") #pragma map(compressBound,"CMBND") #pragma map(inflate_table,"INTABL") #pragma map(inflate_fast,"INFA") #pragma map(inflate_copyright,"INCOPY") #endif #endif /* ZCONF_H */ cackey-0.7.10/build/cackey_win64_build/include/zlib.h0000644000000000000000000025351313563537513021060 0ustar rootroot/* zlib.h -- interface of the 'zlib' general purpose compression library version 1.2.8, April 28th, 2013 Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. Jean-loup Gailly Mark Adler jloup@gzip.org madler@alumni.caltech.edu The data format used by the zlib library is described by RFCs (Request for Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). */ #ifndef ZLIB_H #define ZLIB_H #include "zconf.h" #ifdef __cplusplus extern "C" { #endif #define ZLIB_VERSION "1.2.8" #define ZLIB_VERNUM 0x1280 #define ZLIB_VER_MAJOR 1 #define ZLIB_VER_MINOR 2 #define ZLIB_VER_REVISION 8 #define ZLIB_VER_SUBREVISION 0 /* The 'zlib' compression library provides in-memory compression and decompression functions, including integrity checks of the uncompressed data. This version of the library supports only one compression method (deflation) but other algorithms will be added later and will have the same stream interface. Compression can be done in a single step if the buffers are large enough, or can be done by repeated calls of the compression function. In the latter case, the application must provide more input and/or consume the output (providing more output space) before each call. The compressed data format used by default by the in-memory functions is the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped around a deflate stream, which is itself documented in RFC 1951. The library also supports reading and writing files in gzip (.gz) format with an interface similar to that of stdio using the functions that start with "gz". The gzip format is different from the zlib format. gzip is a gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. This library can optionally read and write gzip streams in memory as well. The zlib format was designed to be compact and fast for use in memory and on communications channels. The gzip format was designed for single- file compression on file systems, has a larger header than zlib to maintain directory information, and uses a different, slower check method than zlib. The library does not install any signal handler. The decoder checks the consistency of the compressed data, so the library should never crash even in case of corrupted input. */ typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); typedef void (*free_func) OF((voidpf opaque, voidpf address)); struct internal_state; typedef struct z_stream_s { z_const Bytef *next_in; /* next input byte */ uInt avail_in; /* number of bytes available at next_in */ uLong total_in; /* total number of input bytes read so far */ Bytef *next_out; /* next output byte should be put there */ uInt avail_out; /* remaining free space at next_out */ uLong total_out; /* total number of bytes output so far */ z_const char *msg; /* last error message, NULL if no error */ struct internal_state FAR *state; /* not visible by applications */ alloc_func zalloc; /* used to allocate the internal state */ free_func zfree; /* used to free the internal state */ voidpf opaque; /* private data object passed to zalloc and zfree */ int data_type; /* best guess about the data type: binary or text */ uLong adler; /* adler32 value of the uncompressed data */ uLong reserved; /* reserved for future use */ } z_stream; typedef z_stream FAR *z_streamp; /* gzip header information passed to and from zlib routines. See RFC 1952 for more details on the meanings of these fields. */ typedef struct gz_header_s { int text; /* true if compressed data believed to be text */ uLong time; /* modification time */ int xflags; /* extra flags (not used when writing a gzip file) */ int os; /* operating system */ Bytef *extra; /* pointer to extra field or Z_NULL if none */ uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ uInt extra_max; /* space at extra (only when reading header) */ Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ uInt name_max; /* space at name (only when reading header) */ Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ uInt comm_max; /* space at comment (only when reading header) */ int hcrc; /* true if there was or will be a header crc */ int done; /* true when done reading gzip header (not used when writing a gzip file) */ } gz_header; typedef gz_header FAR *gz_headerp; /* The application must update next_in and avail_in when avail_in has dropped to zero. It must update next_out and avail_out when avail_out has dropped to zero. The application must initialize zalloc, zfree and opaque before calling the init function. All other fields are set by the compression library and must not be updated by the application. The opaque value provided by the application will be passed as the first parameter for calls of zalloc and zfree. This can be useful for custom memory management. The compression library attaches no meaning to the opaque value. zalloc must return Z_NULL if there is not enough memory for the object. If zlib is used in a multi-threaded application, zalloc and zfree must be thread safe. On 16-bit systems, the functions zalloc and zfree must be able to allocate exactly 65536 bytes, but will not be required to allocate more than this if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers returned by zalloc for objects of exactly 65536 bytes *must* have their offset normalized to zero. The default allocation function provided by this library ensures this (see zutil.c). To reduce memory requirements and avoid any allocation of 64K objects, at the expense of compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h). The fields total_in and total_out can be used for statistics or progress reports. After compression, total_in holds the total size of the uncompressed data and may be saved for use in the decompressor (particularly if the decompressor wants to decompress everything in a single step). */ /* constants */ #define Z_NO_FLUSH 0 #define Z_PARTIAL_FLUSH 1 #define Z_SYNC_FLUSH 2 #define Z_FULL_FLUSH 3 #define Z_FINISH 4 #define Z_BLOCK 5 #define Z_TREES 6 /* Allowed flush values; see deflate() and inflate() below for details */ #define Z_OK 0 #define Z_STREAM_END 1 #define Z_NEED_DICT 2 #define Z_ERRNO (-1) #define Z_STREAM_ERROR (-2) #define Z_DATA_ERROR (-3) #define Z_MEM_ERROR (-4) #define Z_BUF_ERROR (-5) #define Z_VERSION_ERROR (-6) /* Return codes for the compression/decompression functions. Negative values * are errors, positive values are used for special but normal events. */ #define Z_NO_COMPRESSION 0 #define Z_BEST_SPEED 1 #define Z_BEST_COMPRESSION 9 #define Z_DEFAULT_COMPRESSION (-1) /* compression levels */ #define Z_FILTERED 1 #define Z_HUFFMAN_ONLY 2 #define Z_RLE 3 #define Z_FIXED 4 #define Z_DEFAULT_STRATEGY 0 /* compression strategy; see deflateInit2() below for details */ #define Z_BINARY 0 #define Z_TEXT 1 #define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ #define Z_UNKNOWN 2 /* Possible values of the data_type field (though see inflate()) */ #define Z_DEFLATED 8 /* The deflate compression method (the only one supported in this version) */ #define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ #define zlib_version zlibVersion() /* for compatibility with versions < 1.0.2 */ /* basic functions */ ZEXTERN const char * ZEXPORT zlibVersion OF((void)); /* The application can compare zlibVersion and ZLIB_VERSION for consistency. If the first character differs, the library code actually used is not compatible with the zlib.h header file used by the application. This check is automatically made by deflateInit and inflateInit. */ /* ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); Initializes the internal stream state for compression. The fields zalloc, zfree and opaque must be initialized before by the caller. If zalloc and zfree are set to Z_NULL, deflateInit updates them to use default allocation functions. The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: 1 gives best speed, 9 gives best compression, 0 gives no compression at all (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION requests a default compromise between speed and compression (currently equivalent to level 6). deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_STREAM_ERROR if level is not a valid compression level, or Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible with the version assumed by the caller (ZLIB_VERSION). msg is set to null if there is no error message. deflateInit does not perform any compression: this will be done by deflate(). */ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); /* deflate compresses as much data as possible, and stops when the input buffer becomes empty or the output buffer becomes full. It may introduce some output latency (reading input without producing any output) except when forced to flush. The detailed semantics are as follows. deflate performs one or both of the following actions: - Compress more input starting at next_in and update next_in and avail_in accordingly. If not all input can be processed (because there is not enough room in the output buffer), next_in and avail_in are updated and processing will resume at this point for the next call of deflate(). - Provide more output starting at next_out and update next_out and avail_out accordingly. This action is forced if the parameter flush is non zero. Forcing flush frequently degrades the compression ratio, so this parameter should be set only when necessary (in interactive applications). Some output may be provided even if flush is not set. Before the call of deflate(), the application should ensure that at least one of the actions is possible, by providing more input and/or consuming more output, and updating avail_in or avail_out accordingly; avail_out should never be zero before the call. The application can consume the compressed output when it wants, for example when the output buffer is full (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK and with zero avail_out, it must be called again after making room in the output buffer because there might be more output pending. Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to decide how much data to accumulate before producing output, in order to maximize compression. If the parameter flush is set to Z_SYNC_FLUSH, all pending output is flushed to the output buffer and the output is aligned on a byte boundary, so that the decompressor can get all input data available so far. (In particular avail_in is zero after the call if enough output space has been provided before the call.) Flushing may degrade compression for some compression algorithms and so it should be used only when necessary. This completes the current deflate block and follows it with an empty stored block that is three bits plus filler bits to the next byte, followed by four bytes (00 00 ff ff). If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the output buffer, but the output is not aligned to a byte boundary. All of the input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. This completes the current deflate block and follows it with an empty fixed codes block that is 10 bits long. This assures that enough bytes are output in order for the decompressor to finish the block before the empty fixed code block. If flush is set to Z_BLOCK, a deflate block is completed and emitted, as for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to seven bits of the current block are held to be written as the next byte after the next deflate block is completed. In this case, the decompressor may not be provided enough bits at this point in order to complete decompression of the data provided so far to the compressor. It may need to wait for the next block to be emitted. This is for advanced applications that need to control the emission of deflate blocks. If flush is set to Z_FULL_FLUSH, all output is flushed as with Z_SYNC_FLUSH, and the compression state is reset so that decompression can restart from this point if previous compressed data has been damaged or if random access is desired. Using Z_FULL_FLUSH too often can seriously degrade compression. If deflate returns with avail_out == 0, this function must be called again with the same value of the flush parameter and more output space (updated avail_out), until the flush is complete (deflate returns with non-zero avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that avail_out is greater than six to avoid repeated flush markers due to avail_out == 0 on return. If the parameter flush is set to Z_FINISH, pending input is processed, pending output is flushed and deflate returns with Z_STREAM_END if there was enough output space; if deflate returns with Z_OK, this function must be called again with Z_FINISH and more output space (updated avail_out) but no more input data, until it returns with Z_STREAM_END or an error. After deflate has returned Z_STREAM_END, the only possible operations on the stream are deflateReset or deflateEnd. Z_FINISH can be used immediately after deflateInit if all the compression is to be done in a single step. In this case, avail_out must be at least the value returned by deflateBound (see below). Then deflate is guaranteed to return Z_STREAM_END. If not enough output space is provided, deflate will not return Z_STREAM_END, and it must be called again as described above. deflate() sets strm->adler to the adler32 checksum of all input read so far (that is, total_in bytes). deflate() may update strm->data_type if it can make a good guess about the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered binary. This field is only for information purposes and does not affect the compression algorithm in any manner. deflate() returns Z_OK if some progress has been made (more input processed or more output produced), Z_STREAM_END if all input has been consumed and all output has been produced (only when flush is set to Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not fatal, and deflate() can be called again with more input and more output space to continue compressing. */ ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); /* All dynamically allocated data structures for this stream are freed. This function discards any unprocessed input and does not flush any pending output. deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state was inconsistent, Z_DATA_ERROR if the stream was freed prematurely (some input or output was discarded). In the error case, msg may be set but then points to a static string (which must not be deallocated). */ /* ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); Initializes the internal stream state for decompression. The fields next_in, avail_in, zalloc, zfree and opaque must be initialized before by the caller. If next_in is not Z_NULL and avail_in is large enough (the exact value depends on the compression method), inflateInit determines the compression method from the zlib header and allocates all data structures accordingly; otherwise the allocation will be deferred to the first call of inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to use default allocation functions. inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_VERSION_ERROR if the zlib library version is incompatible with the version assumed by the caller, or Z_STREAM_ERROR if the parameters are invalid, such as a null pointer to the structure. msg is set to null if there is no error message. inflateInit does not perform any decompression apart from possibly reading the zlib header if present: actual decompression will be done by inflate(). (So next_in and avail_in may be modified, but next_out and avail_out are unused and unchanged.) The current implementation of inflateInit() does not process any header information -- that is deferred until inflate() is called. */ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); /* inflate decompresses as much data as possible, and stops when the input buffer becomes empty or the output buffer becomes full. It may introduce some output latency (reading input without producing any output) except when forced to flush. The detailed semantics are as follows. inflate performs one or both of the following actions: - Decompress more input starting at next_in and update next_in and avail_in accordingly. If not all input can be processed (because there is not enough room in the output buffer), next_in is updated and processing will resume at this point for the next call of inflate(). - Provide more output starting at next_out and update next_out and avail_out accordingly. inflate() provides as much output as possible, until there is no more input data or no more space in the output buffer (see below about the flush parameter). Before the call of inflate(), the application should ensure that at least one of the actions is possible, by providing more input and/or consuming more output, and updating the next_* and avail_* values accordingly. The application can consume the uncompressed output when it wants, for example when the output buffer is full (avail_out == 0), or after each call of inflate(). If inflate returns Z_OK and with zero avail_out, it must be called again after making room in the output buffer because there might be more output pending. The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much output as possible to the output buffer. Z_BLOCK requests that inflate() stop if and when it gets to the next deflate block boundary. When decoding the zlib or gzip format, this will cause inflate() to return immediately after the header and before the first block. When doing a raw inflate, inflate() will go ahead and process the first block, and will return when it gets to the end of that block, or when it runs out of data. The Z_BLOCK option assists in appending to or combining deflate streams. Also to assist in this, on return inflate() will set strm->data_type to the number of unused bits in the last byte taken from strm->next_in, plus 64 if inflate() is currently decoding the last block in the deflate stream, plus 128 if inflate() returned immediately after decoding an end-of-block code or decoding the complete header up to just before the first byte of the deflate stream. The end-of-block will not be indicated until all of the uncompressed data from that block has been written to strm->next_out. The number of unused bits may in general be greater than seven, except when bit 7 of data_type is set, in which case the number of unused bits will be less than eight. data_type is set as noted here every time inflate() returns for all flush options, and so can be used to determine the amount of currently consumed input in bits. The Z_TREES option behaves as Z_BLOCK does, but it also returns when the end of each deflate block header is reached, before any actual data in that block is decoded. This allows the caller to determine the length of the deflate block header for later use in random access within a deflate block. 256 is added to the value of strm->data_type when inflate() returns immediately after reaching the end of the deflate block header. inflate() should normally be called until it returns Z_STREAM_END or an error. However if all decompression is to be performed in a single step (a single call of inflate), the parameter flush should be set to Z_FINISH. In this case all pending input is processed and all pending output is flushed; avail_out must be large enough to hold all of the uncompressed data for the operation to complete. (The size of the uncompressed data may have been saved by the compressor for this purpose.) The use of Z_FINISH is not required to perform an inflation in one step. However it may be used to inform inflate that a faster approach can be used for the single inflate() call. Z_FINISH also informs inflate to not maintain a sliding window if the stream completes, which reduces inflate's memory footprint. If the stream does not complete, either because not all of the stream is provided or not enough output space is provided, then a sliding window will be allocated and inflate() can be called again to continue the operation as if Z_NO_FLUSH had been used. In this implementation, inflate() always flushes as much output as possible to the output buffer, and always uses the faster approach on the first call. So the effects of the flush parameter in this implementation are on the return value of inflate() as noted below, when inflate() returns early when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of memory for a sliding window when Z_FINISH is used. If a preset dictionary is needed after this call (see inflateSetDictionary below), inflate sets strm->adler to the Adler-32 checksum of the dictionary chosen by the compressor and returns Z_NEED_DICT; otherwise it sets strm->adler to the Adler-32 checksum of all output produced so far (that is, total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described below. At the end of the stream, inflate() checks that its computed adler32 checksum is equal to that saved by the compressor and returns Z_STREAM_END only if the checksum is correct. inflate() can decompress and check either zlib-wrapped or gzip-wrapped deflate data. The header type is detected automatically, if requested when initializing with inflateInit2(). Any information contained in the gzip header is not retained, so applications that need that information should instead use raw inflate, see inflateInit2() below, or inflateBack() and perform their own processing of the gzip header and trailer. When processing gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output producted so far. The CRC-32 is checked against the gzip trailer. inflate() returns Z_OK if some progress has been made (more input processed or more output produced), Z_STREAM_END if the end of the compressed data has been reached and all uncompressed output has been produced, Z_NEED_DICT if a preset dictionary is needed at this point, Z_DATA_ERROR if the input data was corrupted (input stream not conforming to the zlib format or incorrect check value), Z_STREAM_ERROR if the stream structure was inconsistent (for example next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if no progress is possible or if there was not enough room in the output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and inflate() can be called again with more input and more output space to continue decompressing. If Z_DATA_ERROR is returned, the application may then call inflateSync() to look for a good compression block if a partial recovery of the data is desired. */ ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); /* All dynamically allocated data structures for this stream are freed. This function discards any unprocessed input and does not flush any pending output. inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state was inconsistent. In the error case, msg may be set but then points to a static string (which must not be deallocated). */ /* Advanced functions */ /* The following functions are needed only in some special applications. */ /* ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, int level, int method, int windowBits, int memLevel, int strategy)); This is another version of deflateInit with more compression options. The fields next_in, zalloc, zfree and opaque must be initialized before by the caller. The method parameter is the compression method. It must be Z_DEFLATED in this version of the library. The windowBits parameter is the base two logarithm of the window size (the size of the history buffer). It should be in the range 8..15 for this version of the library. Larger values of this parameter result in better compression at the expense of memory usage. The default value is 15 if deflateInit is used instead. windowBits can also be -8..-15 for raw deflate. In this case, -windowBits determines the window size. deflate() will then generate raw deflate data with no zlib header or trailer, and will not compute an adler32 check value. windowBits can also be greater than 15 for optional gzip encoding. Add 16 to windowBits to write a simple gzip header and trailer around the compressed data instead of a zlib wrapper. The gzip header will have no file name, no extra data, no comment, no modification time (set to zero), no header crc, and the operating system will be set to 255 (unknown). If a gzip stream is being written, strm->adler is a crc32 instead of an adler32. The memLevel parameter specifies how much memory should be allocated for the internal compression state. memLevel=1 uses minimum memory but is slow and reduces compression ratio; memLevel=9 uses maximum memory for optimal speed. The default value is 8. See zconf.h for total memory usage as a function of windowBits and memLevel. The strategy parameter is used to tune the compression algorithm. Use the value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no string match), or Z_RLE to limit match distances to one (run-length encoding). Filtered data consists mostly of small values with a somewhat random distribution. In this case, the compression algorithm is tuned to compress them better. The effect of Z_FILTERED is to force more Huffman coding and less string matching; it is somewhat intermediate between Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy parameter only affects the compression ratio but not the correctness of the compressed output even if it is not set appropriately. Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler decoder for special applications. deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible with the version assumed by the caller (ZLIB_VERSION). msg is set to null if there is no error message. deflateInit2 does not perform any compression: this will be done by deflate(). */ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, const Bytef *dictionary, uInt dictLength)); /* Initializes the compression dictionary from the given byte sequence without producing any compressed output. When using the zlib format, this function must be called immediately after deflateInit, deflateInit2 or deflateReset, and before any call of deflate. When doing raw deflate, this function must be called either before any call of deflate, or immediately after the completion of a deflate block, i.e. after all input has been consumed and all output has been delivered when using any of the flush options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The compressor and decompressor must use exactly the same dictionary (see inflateSetDictionary). The dictionary should consist of strings (byte sequences) that are likely to be encountered later in the data to be compressed, with the most commonly used strings preferably put towards the end of the dictionary. Using a dictionary is most useful when the data to be compressed is short and can be predicted with good accuracy; the data can then be compressed better than with the default empty dictionary. Depending on the size of the compression data structures selected by deflateInit or deflateInit2, a part of the dictionary may in effect be discarded, for example if the dictionary is larger than the window size provided in deflateInit or deflateInit2. Thus the strings most likely to be useful should be put at the end of the dictionary, not at the front. In addition, the current implementation of deflate will use at most the window size minus 262 bytes of the provided dictionary. Upon return of this function, strm->adler is set to the adler32 value of the dictionary; the decompressor may later use this value to determine which dictionary has been used by the compressor. (The adler32 value applies to the whole dictionary even if only a subset of the dictionary is actually used by the compressor.) If a raw deflate was requested, then the adler32 value is not computed and strm->adler is not set. deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is inconsistent (for example if deflate has already been called for this stream or if not at a block boundary for raw deflate). deflateSetDictionary does not perform any compression: this will be done by deflate(). */ ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, z_streamp source)); /* Sets the destination stream as a complete copy of the source stream. This function can be useful when several compression strategies will be tried, for example when there are several ways of pre-processing the input data with a filter. The streams that will be discarded should then be freed by calling deflateEnd. Note that deflateCopy duplicates the internal compression state which can be quite large, so this strategy is slow and can consume lots of memory. deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_STREAM_ERROR if the source stream state was inconsistent (such as zalloc being Z_NULL). msg is left unchanged in both source and destination. */ ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); /* This function is equivalent to deflateEnd followed by deflateInit, but does not free and reallocate all the internal compression state. The stream will keep the same compression level and any other attributes that may have been set by deflateInit2. deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent (such as zalloc or state being Z_NULL). */ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, int level, int strategy)); /* Dynamically update the compression level and compression strategy. The interpretation of level and strategy is as in deflateInit2. This can be used to switch between compression and straight copy of the input data, or to switch to a different kind of input data requiring a different strategy. If the compression level is changed, the input available so far is compressed with the old level (and may be flushed); the new level will take effect only at the next call of deflate(). Before the call of deflateParams, the stream state must be set as for a call of deflate(), since the currently available input may have to be compressed and flushed. In particular, strm->avail_out must be non-zero. deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if strm->avail_out was zero. */ ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, int good_length, int max_lazy, int nice_length, int max_chain)); /* Fine tune deflate's internal compression parameters. This should only be used by someone who understands the algorithm used by zlib's deflate for searching for the best matching string, and even then only by the most fanatic optimizer trying to squeeze out the last compressed bit for their specific input data. Read the deflate.c source code for the meaning of the max_lazy, good_length, nice_length, and max_chain parameters. deflateTune() can be called after deflateInit() or deflateInit2(), and returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. */ ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, uLong sourceLen)); /* deflateBound() returns an upper bound on the compressed size after deflation of sourceLen bytes. It must be called after deflateInit() or deflateInit2(), and after deflateSetHeader(), if used. This would be used to allocate an output buffer for deflation in a single pass, and so would be called before deflate(). If that first deflate() call is provided the sourceLen input bytes, an output buffer allocated to the size returned by deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed to return Z_STREAM_END. Note that it is possible for the compressed size to be larger than the value returned by deflateBound() if flush options other than Z_FINISH or Z_NO_FLUSH are used. */ ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, unsigned *pending, int *bits)); /* deflatePending() returns the number of bytes and bits of output that have been generated, but not yet provided in the available output. The bytes not provided would be due to the available output space having being consumed. The number of bits of output not provided are between 0 and 7, where they await more bits to join them in order to fill out a full byte. If pending or bits are Z_NULL, then those values are not set. deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent. */ ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, int bits, int value)); /* deflatePrime() inserts bits in the deflate output stream. The intent is that this function is used to start off the deflate output with the bits leftover from a previous deflate stream when appending to it. As such, this function can only be used for raw deflate, and must be used before the first deflate() call after a deflateInit2() or deflateReset(). bits must be less than or equal to 16, and that many of the least significant bits of value will be inserted in the output. deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the source stream state was inconsistent. */ ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, gz_headerp head)); /* deflateSetHeader() provides gzip header information for when a gzip stream is requested by deflateInit2(). deflateSetHeader() may be called after deflateInit2() or deflateReset() and before the first call of deflate(). The text, time, os, extra field, name, and comment information in the provided gz_header structure are written to the gzip header (xflag is ignored -- the extra flags are set according to the compression level). The caller must assure that, if not Z_NULL, name and comment are terminated with a zero byte, and that if extra is not Z_NULL, that extra_len bytes are available there. If hcrc is true, a gzip header crc is included. Note that the current versions of the command-line version of gzip (up through version 1.3.x) do not support header crc's, and will report that it is a "multi-part gzip file" and give up. If deflateSetHeader is not used, the default gzip header has text false, the time set to zero, and os set to 255, with no extra, name, or comment fields. The gzip header is returned to the default state by deflateReset(). deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent. */ /* ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, int windowBits)); This is another version of inflateInit with an extra parameter. The fields next_in, avail_in, zalloc, zfree and opaque must be initialized before by the caller. The windowBits parameter is the base two logarithm of the maximum window size (the size of the history buffer). It should be in the range 8..15 for this version of the library. The default value is 15 if inflateInit is used instead. windowBits must be greater than or equal to the windowBits value provided to deflateInit2() while compressing, or it must be equal to 15 if deflateInit2() was not used. If a compressed stream with a larger window size is given as input, inflate() will return with the error code Z_DATA_ERROR instead of trying to allocate a larger window. windowBits can also be zero to request that inflate use the window size in the zlib header of the compressed stream. windowBits can also be -8..-15 for raw inflate. In this case, -windowBits determines the window size. inflate() will then process raw deflate data, not looking for a zlib or gzip header, not generating a check value, and not looking for any check values for comparison at the end of the stream. This is for use with other formats that use the deflate compressed data format such as zip. Those formats provide their own check values. If a custom format is developed using the raw deflate format for compressed data, it is recommended that a check value such as an adler32 or a crc32 be applied to the uncompressed data as is done in the zlib, gzip, and zip formats. For most applications, the zlib format should be used as is. Note that comments above on the use in deflateInit2() applies to the magnitude of windowBits. windowBits can also be greater than 15 for optional gzip decoding. Add 32 to windowBits to enable zlib and gzip decoding with automatic header detection, or add 16 to decode only the gzip format (the zlib format will return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a crc32 instead of an adler32. inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_VERSION_ERROR if the zlib library version is incompatible with the version assumed by the caller, or Z_STREAM_ERROR if the parameters are invalid, such as a null pointer to the structure. msg is set to null if there is no error message. inflateInit2 does not perform any decompression apart from possibly reading the zlib header if present: actual decompression will be done by inflate(). (So next_in and avail_in may be modified, but next_out and avail_out are unused and unchanged.) The current implementation of inflateInit2() does not process any header information -- that is deferred until inflate() is called. */ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, const Bytef *dictionary, uInt dictLength)); /* Initializes the decompression dictionary from the given uncompressed byte sequence. This function must be called immediately after a call of inflate, if that call returned Z_NEED_DICT. The dictionary chosen by the compressor can be determined from the adler32 value returned by that call of inflate. The compressor and decompressor must use exactly the same dictionary (see deflateSetDictionary). For raw inflate, this function can be called at any time to set the dictionary. If the provided dictionary is smaller than the window and there is already data in the window, then the provided dictionary will amend what's there. The application must insure that the dictionary that was used for compression is provided. inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the expected one (incorrect adler32 value). inflateSetDictionary does not perform any decompression: this will be done by subsequent calls of inflate(). */ ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm, Bytef *dictionary, uInt *dictLength)); /* Returns the sliding dictionary being maintained by inflate. dictLength is set to the number of bytes in the dictionary, and that many bytes are copied to dictionary. dictionary must have enough space, where 32768 bytes is always enough. If inflateGetDictionary() is called with dictionary equal to Z_NULL, then only the dictionary length is returned, and nothing is copied. Similary, if dictLength is Z_NULL, then it is not set. inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the stream state is inconsistent. */ ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); /* Skips invalid compressed data until a possible full flush point (see above for the description of deflate with Z_FULL_FLUSH) can be found, or until all available input is skipped. No output is provided. inflateSync searches for a 00 00 FF FF pattern in the compressed data. All full flush points have this pattern, but not all occurrences of this pattern are full flush points. inflateSync returns Z_OK if a possible full flush point has been found, Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. In the success case, the application may save the current current value of total_in which indicates where valid compressed data was found. In the error case, the application may repeatedly call inflateSync, providing more input each time, until success or end of the input data. */ ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, z_streamp source)); /* Sets the destination stream as a complete copy of the source stream. This function can be useful when randomly accessing a large stream. The first pass through the stream can periodically record the inflate state, allowing restarting inflate at those points when randomly accessing the stream. inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_STREAM_ERROR if the source stream state was inconsistent (such as zalloc being Z_NULL). msg is left unchanged in both source and destination. */ ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); /* This function is equivalent to inflateEnd followed by inflateInit, but does not free and reallocate all the internal decompression state. The stream will keep attributes that may have been set by inflateInit2. inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent (such as zalloc or state being Z_NULL). */ ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, int windowBits)); /* This function is the same as inflateReset, but it also permits changing the wrap and window size requests. The windowBits parameter is interpreted the same as it is for inflateInit2. inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent (such as zalloc or state being Z_NULL), or if the windowBits parameter is invalid. */ ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, int bits, int value)); /* This function inserts bits in the inflate input stream. The intent is that this function is used to start inflating at a bit position in the middle of a byte. The provided bits will be used before any bytes are used from next_in. This function should only be used with raw inflate, and should be used before the first inflate() call after inflateInit2() or inflateReset(). bits must be less than or equal to 16, and that many of the least significant bits of value will be inserted in the input. If bits is negative, then the input stream bit buffer is emptied. Then inflatePrime() can be called again to put bits in the buffer. This is used to clear out bits leftover after feeding inflate a block description prior to feeding inflate codes. inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent. */ ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); /* This function returns two values, one in the lower 16 bits of the return value, and the other in the remaining upper bits, obtained by shifting the return value down 16 bits. If the upper value is -1 and the lower value is zero, then inflate() is currently decoding information outside of a block. If the upper value is -1 and the lower value is non-zero, then inflate is in the middle of a stored block, with the lower value equaling the number of bytes from the input remaining to copy. If the upper value is not -1, then it is the number of bits back from the current bit position in the input of the code (literal or length/distance pair) currently being processed. In that case the lower value is the number of bytes already emitted for that code. A code is being processed if inflate is waiting for more input to complete decoding of the code, or if it has completed decoding but is waiting for more output space to write the literal or match data. inflateMark() is used to mark locations in the input data for random access, which may be at bit positions, and to note those cases where the output of a code may span boundaries of random access blocks. The current location in the input stream can be determined from avail_in and data_type as noted in the description for the Z_BLOCK flush parameter for inflate. inflateMark returns the value noted above or -1 << 16 if the provided source stream state was inconsistent. */ ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, gz_headerp head)); /* inflateGetHeader() requests that gzip header information be stored in the provided gz_header structure. inflateGetHeader() may be called after inflateInit2() or inflateReset(), and before the first call of inflate(). As inflate() processes the gzip stream, head->done is zero until the header is completed, at which time head->done is set to one. If a zlib stream is being decoded, then head->done is set to -1 to indicate that there will be no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be used to force inflate() to return immediately after header processing is complete and before any actual data is decompressed. The text, time, xflags, and os fields are filled in with the gzip header contents. hcrc is set to true if there is a header CRC. (The header CRC was valid if done is set to one.) If extra is not Z_NULL, then extra_max contains the maximum number of bytes to write to extra. Once done is true, extra_len contains the actual extra field length, and extra contains the extra field, or that field truncated if extra_max is less than extra_len. If name is not Z_NULL, then up to name_max characters are written there, terminated with a zero unless the length is greater than name_max. If comment is not Z_NULL, then up to comm_max characters are written there, terminated with a zero unless the length is greater than comm_max. When any of extra, name, or comment are not Z_NULL and the respective field is not present in the header, then that field is set to Z_NULL to signal its absence. This allows the use of deflateSetHeader() with the returned structure to duplicate the header. However if those fields are set to allocated memory, then the application will need to save those pointers elsewhere so that they can be eventually freed. If inflateGetHeader is not used, then the header information is simply discarded. The header is always checked for validity, including the header CRC if present. inflateReset() will reset the process to discard the header information. The application would need to call inflateGetHeader() again to retrieve the header from the next gzip stream. inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent. */ /* ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, unsigned char FAR *window)); Initialize the internal stream state for decompression using inflateBack() calls. The fields zalloc, zfree and opaque in strm must be initialized before the call. If zalloc and zfree are Z_NULL, then the default library- derived memory allocation routines are used. windowBits is the base two logarithm of the window size, in the range 8..15. window is a caller supplied buffer of that size. Except for special applications where it is assured that deflate was used with small window sizes, windowBits must be 15 and a 32K byte window must be supplied to be able to decompress general deflate streams. See inflateBack() for the usage of these routines. inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of the parameters are invalid, Z_MEM_ERROR if the internal state could not be allocated, or Z_VERSION_ERROR if the version of the library does not match the version of the header file. */ typedef unsigned (*in_func) OF((void FAR *, z_const unsigned char FAR * FAR *)); typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, in_func in, void FAR *in_desc, out_func out, void FAR *out_desc)); /* inflateBack() does a raw inflate with a single call using a call-back interface for input and output. This is potentially more efficient than inflate() for file i/o applications, in that it avoids copying between the output and the sliding window by simply making the window itself the output buffer. inflate() can be faster on modern CPUs when used with large buffers. inflateBack() trusts the application to not change the output buffer passed by the output function, at least until inflateBack() returns. inflateBackInit() must be called first to allocate the internal state and to initialize the state with the user-provided window buffer. inflateBack() may then be used multiple times to inflate a complete, raw deflate stream with each call. inflateBackEnd() is then called to free the allocated state. A raw deflate stream is one with no zlib or gzip header or trailer. This routine would normally be used in a utility that reads zip or gzip files and writes out uncompressed files. The utility would decode the header and process the trailer on its own, hence this routine expects only the raw deflate stream to decompress. This is different from the normal behavior of inflate(), which expects either a zlib or gzip header and trailer around the deflate stream. inflateBack() uses two subroutines supplied by the caller that are then called by inflateBack() for input and output. inflateBack() calls those routines until it reads a complete deflate stream and writes out all of the uncompressed data, or until it encounters an error. The function's parameters and return types are defined above in the in_func and out_func typedefs. inflateBack() will call in(in_desc, &buf) which should return the number of bytes of provided input, and a pointer to that input in buf. If there is no input available, in() must return zero--buf is ignored in that case--and inflateBack() will return a buffer error. inflateBack() will call out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() should return zero on success, or non-zero on failure. If out() returns non-zero, inflateBack() will return with an error. Neither in() nor out() are permitted to change the contents of the window provided to inflateBackInit(), which is also the buffer that out() uses to write from. The length written by out() will be at most the window size. Any non-zero amount of input may be provided by in(). For convenience, inflateBack() can be provided input on the first call by setting strm->next_in and strm->avail_in. If that input is exhausted, then in() will be called. Therefore strm->next_in must be initialized before calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in must also be initialized, and then if strm->avail_in is not zero, input will initially be taken from strm->next_in[0 .. strm->avail_in - 1]. The in_desc and out_desc parameters of inflateBack() is passed as the first parameter of in() and out() respectively when they are called. These descriptors can be optionally used to pass any information that the caller- supplied in() and out() functions need to do their job. On return, inflateBack() will set strm->next_in and strm->avail_in to pass back any unused input that was provided by the last in() call. The return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR if in() or out() returned an error, Z_DATA_ERROR if there was a format error in the deflate stream (in which case strm->msg is set to indicate the nature of the error), or Z_STREAM_ERROR if the stream was not properly initialized. In the case of Z_BUF_ERROR, an input or output error can be distinguished using strm->next_in which will be Z_NULL only if in() returned an error. If strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning non-zero. (in() will always be called before out(), so strm->next_in is assured to be defined if out() returns non-zero.) Note that inflateBack() cannot return Z_OK. */ ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); /* All memory allocated by inflateBackInit() is freed. inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream state was inconsistent. */ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); /* Return flags indicating compile-time options. Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: 1.0: size of uInt 3.2: size of uLong 5.4: size of voidpf (pointer) 7.6: size of z_off_t Compiler, assembler, and debug options: 8: DEBUG 9: ASMV or ASMINF -- use ASM code 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention 11: 0 (reserved) One-time table building (smaller code, but not thread-safe if true): 12: BUILDFIXED -- build static block decoding tables when needed 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed 14,15: 0 (reserved) Library content (indicates missing functionality): 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking deflate code when not needed) 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect and decode gzip streams (to avoid linking crc code) 18-19: 0 (reserved) Operation variations (changes in library functionality): 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate 21: FASTEST -- deflate algorithm with only one, lowest compression level 22,23: 0 (reserved) The sprintf variant used by gzprintf (zero is best): 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! 26: 0 = returns value, 1 = void -- 1 means inferred string length returned Remainder: 27-31: 0 (reserved) */ #ifndef Z_SOLO /* utility functions */ /* The following utility functions are implemented on top of the basic stream-oriented functions. To simplify the interface, some default options are assumed (compression level and memory usage, standard memory allocation functions). The source code of these utility functions can be modified if you need special options. */ ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen)); /* Compresses the source buffer into the destination buffer. sourceLen is the byte length of the source buffer. Upon entry, destLen is the total size of the destination buffer, which must be at least the value returned by compressBound(sourceLen). Upon exit, destLen is the actual size of the compressed buffer. compress returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if there was not enough room in the output buffer. */ ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen, int level)); /* Compresses the source buffer into the destination buffer. The level parameter has the same meaning as in deflateInit. sourceLen is the byte length of the source buffer. Upon entry, destLen is the total size of the destination buffer, which must be at least the value returned by compressBound(sourceLen). Upon exit, destLen is the actual size of the compressed buffer. compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if there was not enough room in the output buffer, Z_STREAM_ERROR if the level parameter is invalid. */ ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); /* compressBound() returns an upper bound on the compressed size after compress() or compress2() on sourceLen bytes. It would be used before a compress() or compress2() call to allocate the destination buffer. */ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen)); /* Decompresses the source buffer into the destination buffer. sourceLen is the byte length of the source buffer. Upon entry, destLen is the total size of the destination buffer, which must be large enough to hold the entire uncompressed data. (The size of the uncompressed data must have been saved previously by the compressor and transmitted to the decompressor by some mechanism outside the scope of this compression library.) Upon exit, destLen is the actual size of the uncompressed buffer. uncompress returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if there was not enough room in the output buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In the case where there is not enough room, uncompress() will fill the output buffer with the uncompressed data up to that point. */ /* gzip file access functions */ /* This library supports reading and writing files in gzip (.gz) format with an interface similar to that of stdio, using the functions that start with "gz". The gzip format is different from the zlib format. gzip is a gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. */ typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ /* ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); Opens a gzip (.gz) file for reading or writing. The mode parameter is as in fopen ("rb" or "wb") but can also include a compression level ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression as in "wb9F". (See the description of deflateInit2 for more information about the strategy parameter.) 'T' will request transparent writing or appending with no compression and not using the gzip format. "a" can be used instead of "w" to request that the gzip stream that will be written be appended to the file. "+" will result in an error, since reading and writing to the same gzip file is not supported. The addition of "x" when writing will create the file exclusively, which fails if the file already exists. On systems that support it, the addition of "e" when reading or writing will set the flag to close the file on an execve() call. These functions, as well as gzip, will read and decode a sequence of gzip streams in a file. The append function of gzopen() can be used to create such a file. (Also see gzflush() for another way to do this.) When appending, gzopen does not test whether the file begins with a gzip stream, nor does it look for the end of the gzip streams to begin appending. gzopen will simply append a gzip stream to the existing file. gzopen can be used to read a file which is not in gzip format; in this case gzread will directly read from the file without decompression. When reading, this will be detected automatically by looking for the magic two- byte gzip header. gzopen returns NULL if the file could not be opened, if there was insufficient memory to allocate the gzFile state, or if an invalid mode was specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). errno can be checked to determine if the reason gzopen failed was that the file could not be opened. */ ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); /* gzdopen associates a gzFile with the file descriptor fd. File descriptors are obtained from calls like open, dup, creat, pipe or fileno (if the file has been previously opened with fopen). The mode parameter is as in gzopen. The next call of gzclose on the returned gzFile will also close the file descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, mode);. The duplicated descriptor should be saved to avoid a leak, since gzdopen does not close fd if it fails. If you are using fileno() to get the file descriptor from a FILE *, then you will have to use dup() to avoid double-close()ing the file descriptor. Both gzclose() and fclose() will close the associated file descriptor, so they need to have different file descriptors. gzdopen returns NULL if there was insufficient memory to allocate the gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not provided, or '+' was provided), or if fd is -1. The file descriptor is not used until the next gz* read, write, seek, or close operation, so gzdopen will not detect if fd is invalid (unless fd is -1). */ ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); /* Set the internal buffer size used by this library's functions. The default buffer size is 8192 bytes. This function must be called after gzopen() or gzdopen(), and before any other calls that read or write the file. The buffer memory allocation is always deferred to the first read or write. Two buffers are allocated, either both of the specified size when writing, or one of the specified size and the other twice that size when reading. A larger buffer size of, for example, 64K or 128K bytes will noticeably increase the speed of decompression (reading). The new buffer size also affects the maximum length for gzprintf(). gzbuffer() returns 0 on success, or -1 on failure, such as being called too late. */ ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); /* Dynamically update the compression level or strategy. See the description of deflateInit2 for the meaning of these parameters. gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not opened for writing. */ ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); /* Reads the given number of uncompressed bytes from the compressed file. If the input file is not in gzip format, gzread copies the given number of bytes into the buffer directly from the file. After reaching the end of a gzip stream in the input, gzread will continue to read, looking for another gzip stream. Any number of gzip streams may be concatenated in the input file, and will all be decompressed by gzread(). If something other than a gzip stream is encountered after a gzip stream, that remaining trailing garbage is ignored (and no error is returned). gzread can be used to read a gzip file that is being concurrently written. Upon reaching the end of the input, gzread will return with the available data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then gzclearerr can be used to clear the end of file indicator in order to permit gzread to be tried again. Z_OK indicates that a gzip stream was completed on the last gzread. Z_BUF_ERROR indicates that the input file ended in the middle of a gzip stream. Note that gzread does not return -1 in the event of an incomplete gzip stream. This error is deferred until gzclose(), which will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip stream. Alternatively, gzerror can be used before gzclose to detect this case. gzread returns the number of uncompressed bytes actually read, less than len for end of file, or -1 for error. */ ZEXTERN int ZEXPORT gzwrite OF((gzFile file, voidpc buf, unsigned len)); /* Writes the given number of uncompressed bytes into the compressed file. gzwrite returns the number of uncompressed bytes written or 0 in case of error. */ ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); /* Converts, formats, and writes the arguments to the compressed file under control of the format string, as in fprintf. gzprintf returns the number of uncompressed bytes actually written, or 0 in case of error. The number of uncompressed bytes written is limited to 8191, or one less than the buffer size given to gzbuffer(). The caller should assure that this limit is not exceeded. If it is exceeded, then gzprintf() will return an error (0) with nothing written. In this case, there may also be a buffer overflow with unpredictable consequences, which is possible only if zlib was compiled with the insecure functions sprintf() or vsprintf() because the secure snprintf() or vsnprintf() functions were not available. This can be determined using zlibCompileFlags(). */ ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); /* Writes the given null-terminated string to the compressed file, excluding the terminating null character. gzputs returns the number of characters written, or -1 in case of error. */ ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); /* Reads bytes from the compressed file until len-1 characters are read, or a newline character is read and transferred to buf, or an end-of-file condition is encountered. If any characters are read or if len == 1, the string is terminated with a null character. If no characters are read due to an end-of-file or len < 1, then the buffer is left untouched. gzgets returns buf which is a null-terminated string, or it returns NULL for end-of-file or in case of error. If there was an error, the contents at buf are indeterminate. */ ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); /* Writes c, converted to an unsigned char, into the compressed file. gzputc returns the value that was written, or -1 in case of error. */ ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); /* Reads one byte from the compressed file. gzgetc returns this byte or -1 in case of end of file or error. This is implemented as a macro for speed. As such, it does not do all of the checking the other functions do. I.e. it does not check to see if file is NULL, nor whether the structure file points to has been clobbered or not. */ ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); /* Push one character back onto the stream to be read as the first character on the next read. At least one character of push-back is allowed. gzungetc() returns the character pushed, or -1 on failure. gzungetc() will fail if c is -1, and may fail if a character has been pushed but not read yet. If gzungetc is used immediately after gzopen or gzdopen, at least the output buffer size of pushed characters is allowed. (See gzbuffer above.) The pushed character will be discarded if the stream is repositioned with gzseek() or gzrewind(). */ ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); /* Flushes all pending output into the compressed file. The parameter flush is as in the deflate() function. The return value is the zlib error number (see function gzerror below). gzflush is only permitted when writing. If the flush parameter is Z_FINISH, the remaining data is written and the gzip stream is completed in the output. If gzwrite() is called again, a new gzip stream will be started in the output. gzread() is able to read such concatented gzip streams. gzflush should be called only when strictly necessary because it will degrade compression if called too often. */ /* ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, z_off_t offset, int whence)); Sets the starting position for the next gzread or gzwrite on the given compressed file. The offset represents a number of bytes in the uncompressed data stream. The whence parameter is defined as in lseek(2); the value SEEK_END is not supported. If the file is opened for reading, this function is emulated but can be extremely slow. If the file is opened for writing, only forward seeks are supported; gzseek then compresses a sequence of zeroes up to the new starting position. gzseek returns the resulting offset location as measured in bytes from the beginning of the uncompressed stream, or -1 in case of error, in particular if the file is opened for writing and the new starting position would be before the current position. */ ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); /* Rewinds the given file. This function is supported only for reading. gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) */ /* ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); Returns the starting position for the next gzread or gzwrite on the given compressed file. This position represents a number of bytes in the uncompressed data stream, and is zero when starting, even if appending or reading a gzip stream from the middle of a file using gzdopen(). gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) */ /* ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); Returns the current offset in the file being read or written. This offset includes the count of bytes that precede the gzip stream, for example when appending or when using gzdopen() for reading. When reading, the offset does not include as yet unused buffered input. This information can be used for a progress indicator. On error, gzoffset() returns -1. */ ZEXTERN int ZEXPORT gzeof OF((gzFile file)); /* Returns true (1) if the end-of-file indicator has been set while reading, false (0) otherwise. Note that the end-of-file indicator is set only if the read tried to go past the end of the input, but came up short. Therefore, just like feof(), gzeof() may return false even if there is no more data to read, in the event that the last read request was for the exact number of bytes remaining in the input file. This will happen if the input file size is an exact multiple of the buffer size. If gzeof() returns true, then the read functions will return no more data, unless the end-of-file indicator is reset by gzclearerr() and the input file has grown since the previous end of file was detected. */ ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); /* Returns true (1) if file is being copied directly while reading, or false (0) if file is a gzip stream being decompressed. If the input file is empty, gzdirect() will return true, since the input does not contain a gzip stream. If gzdirect() is used immediately after gzopen() or gzdopen() it will cause buffers to be allocated to allow reading the file to determine if it is a gzip file. Therefore if gzbuffer() is used, it should be called before gzdirect(). When writing, gzdirect() returns true (1) if transparent writing was requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: gzdirect() is not needed when writing. Transparent writing must be explicitly requested, so the application already knows the answer. When linking statically, using gzdirect() will include all of the zlib code for gzip file reading and decompression, which may not be desired.) */ ZEXTERN int ZEXPORT gzclose OF((gzFile file)); /* Flushes all pending output if necessary, closes the compressed file and deallocates the (de)compression state. Note that once file is closed, you cannot call gzerror with file, since its structures have been deallocated. gzclose must not be called more than once on the same file, just as free must not be called more than once on the same allocation. gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the last read ended in the middle of a gzip stream, or Z_OK on success. */ ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); /* Same as gzclose(), but gzclose_r() is only for use when reading, and gzclose_w() is only for use when writing or appending. The advantage to using these instead of gzclose() is that they avoid linking in zlib compression or decompression code that is not used when only reading or only writing respectively. If gzclose() is used, then both compression and decompression code will be included the application when linking to a static zlib library. */ ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); /* Returns the error message for the last error which occurred on the given compressed file. errnum is set to zlib error number. If an error occurred in the file system and not in the compression library, errnum is set to Z_ERRNO and the application may consult errno to get the exact error code. The application must not modify the returned string. Future calls to this function may invalidate the previously returned string. If file is closed, then the string previously returned by gzerror will no longer be available. gzerror() should be used to distinguish errors from end-of-file for those functions above that do not distinguish those cases in their return values. */ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); /* Clears the error and end-of-file flags for file. This is analogous to the clearerr() function in stdio. This is useful for continuing to read a gzip file that is being written concurrently. */ #endif /* !Z_SOLO */ /* checksum functions */ /* These functions are not related to compression but are exported anyway because they might be useful in applications using the compression library. */ ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); /* Update a running Adler-32 checksum with the bytes buf[0..len-1] and return the updated checksum. If buf is Z_NULL, this function returns the required initial value for the checksum. An Adler-32 checksum is almost as reliable as a CRC32 but can be computed much faster. Usage example: uLong adler = adler32(0L, Z_NULL, 0); while (read_buffer(buffer, length) != EOF) { adler = adler32(adler, buffer, length); } if (adler != original_adler) error(); */ /* ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, z_off_t len2)); Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note that the z_off_t type (like off_t) is a signed integer. If len2 is negative, the result has no meaning or utility. */ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); /* Update a running CRC-32 with the bytes buf[0..len-1] and return the updated CRC-32. If buf is Z_NULL, this function returns the required initial value for the crc. Pre- and post-conditioning (one's complement) is performed within this function so it shouldn't be done by the application. Usage example: uLong crc = crc32(0L, Z_NULL, 0); while (read_buffer(buffer, length) != EOF) { crc = crc32(crc, buffer, length); } if (crc != original_crc) error(); */ /* ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); Combine two CRC-32 check values into one. For two sequences of bytes, seq1 and seq2 with lengths len1 and len2, CRC-32 check values were calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and len2. */ /* various hacks, don't look :) */ /* deflateInit and inflateInit are macros to allow checking the zlib version * and the compiler's view of z_stream: */ ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, const char *version, int stream_size)); ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, const char *version, int stream_size)); ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, int windowBits, int memLevel, int strategy, const char *version, int stream_size)); ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, const char *version, int stream_size)); ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, unsigned char FAR *window, const char *version, int stream_size)); #define deflateInit(strm, level) \ deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) #define inflateInit(strm) \ inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) #define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) #define inflateInit2(strm, windowBits) \ inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ (int)sizeof(z_stream)) #define inflateBackInit(strm, windowBits, window) \ inflateBackInit_((strm), (windowBits), (window), \ ZLIB_VERSION, (int)sizeof(z_stream)) #ifndef Z_SOLO /* gzgetc() macro and its supporting function and exposed data structure. Note * that the real internal state is much larger than the exposed structure. * This abbreviated structure exposes just enough for the gzgetc() macro. The * user should not mess with these exposed elements, since their names or * behavior could change in the future, perhaps even capriciously. They can * only be used by the gzgetc() macro. You have been warned. */ struct gzFile_s { unsigned have; unsigned char *next; z_off64_t pos; }; ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ #ifdef Z_PREFIX_SET # undef z_gzgetc # define z_gzgetc(g) \ ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) #else # define gzgetc(g) \ ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) #endif /* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if * both are true, the application gets the *64 functions, and the regular * functions are changed to 64 bits) -- in case these are set on systems * without large file support, _LFS64_LARGEFILE must also be true */ #ifdef Z_LARGE64 ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); #endif #if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) # ifdef Z_PREFIX_SET # define z_gzopen z_gzopen64 # define z_gzseek z_gzseek64 # define z_gztell z_gztell64 # define z_gzoffset z_gzoffset64 # define z_adler32_combine z_adler32_combine64 # define z_crc32_combine z_crc32_combine64 # else # define gzopen gzopen64 # define gzseek gzseek64 # define gztell gztell64 # define gzoffset gzoffset64 # define adler32_combine adler32_combine64 # define crc32_combine crc32_combine64 # endif # ifndef Z_LARGE64 ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); # endif #else ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); #endif #else /* Z_SOLO */ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); #endif /* !Z_SOLO */ /* hack for buggy compilers */ #if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) struct internal_state {int dummy;}; #endif /* undocumented functions */ ZEXTERN const char * ZEXPORT zError OF((int)); ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void)); ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); #if defined(_WIN32) && !defined(Z_SOLO) ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, const char *mode)); #endif #if defined(STDC) || defined(Z_HAVE_STDARG_H) # ifndef Z_SOLO ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file, const char *format, va_list va)); # endif #endif #ifdef __cplusplus } #endif #endif /* ZLIB_H */ cackey-0.7.10/build/cackey_win64_build/lib/0000755000000000000000000000000013563537513017061 5ustar rootrootcackey-0.7.10/build/cackey_win64_build/lib/libz.a0000644000000000000000000031055013563537513020167 0ustar rootroot! / 1437066111 0 0 0 1482 ` ^ b b b b6n6n6n6n6n6n6n6n6n6n6n6n6n6n6n„˜„˜„˜¨€µ2µ2µ2µ2µ2µ2µ2µ2µ2µ2µ2µ2µ2µ2µ2µ2úpúprrrrrrrr:°:°:°:°:°:°@b@b@bFJLÆLÆLÆLÆLÆLÆLÆLÆLÆLÆLÆLÆLÆLÆLÆLÆdšdšdšdšdšdšdš}ª}ª}ª}ª}ª}ª}ª}ªadler32adler32_combineadler32_combine64get_crc_tablecrc32crc32_combinecrc32_combine64deflateSetDictionarydeflateResetKeepdeflateResetdeflateSetHeaderdeflatePendingdeflatePrimedeflateParamsdeflateTunedeflateBounddeflatedeflateEnddeflateInit2_deflateInit_deflateCopydeflate_copyrightinflateBackInit_inflateBackinflateBackEndinflate_fastinflateResetKeepinflateResetinflateReset2inflateInit2_inflateInit_inflatePrimeinflateinflateEndinflateGetDictionaryinflateSetDictionaryinflateGetHeaderinflateSyncinflateSyncPointinflateCopyinflateUndermineinflateMarkinflate_tableinflate_copyright_tr_init_tr_stored_block_tr_flush_bits_tr_align_tr_flush_block_tr_tally_length_code_dist_codezlibVersionzlibCompileFlagszErrorzcalloczcfreez_errmsgcompress2compresscompressBounduncompressgzclosegzopengzopen64gzdopengzopen_wgzbuffergzrewindgzseek64gzseekgztell64gztellgzoffset64gzoffsetgzeofgzerrorgzclearerrgz_errorgzreadgzgetcgzgetc_gzungetcgzgetsgzdirectgzclose_rgzwritegzputcgzputsgzvprintfgzprintfgzflushgzsetparamsgzclose_wadler32.o/ 1437066108 1011 100 100644 1816 ` d†Ò.text`Ü P`.data@PÀ.bss€PÀ.xdata<@0@.pdata$Tx @0@SA‰ÊáÿÿI‰ÑAÁêAƒø„„H…ÒA»t]Aƒøw\E…Àt$HBAƒèIÀëfHƒÀA¶I‰ÁÑAÊL9ÀuëD™ÿÿùñÿD‰Ðºq€€DBÙ÷âÁêiÒñÿA)ÒAÁâE ÓD‰Ø[ÃAø¯A»q€€†CI°Aè°€A¶ÑA¶QAÊÑA¶QAÊÑA¶QAÊÑA¶QAÊÑA¶QAÊÑA¶QAÊÑA¶QAÊÑA¶QAÊÑA¶Q AÊÑA¶Q AÊÑA¶Q AÊÑA¶Q AÊÑA¶Q AÊÑA¶QAÊÑA¶QIƒÁAÊÑAÊI9Á…Tÿÿÿ‰ÈA÷ãD‰ÐÁêiÒñÿ)ÑA÷ãÁêiÒñÿA)ÒAø¯‡ÿÿÿE…ÀuDE‰ÓAÁãA ËD‰Ø[öÁÿÿùñÿCÈAÊEšÿÿAúñÿEBÚAÁãA ËD‰Ø[ÃAƒø†ÃAXðÁëH‰ØHÁàM\L‰È¶Ñ¶PAÊʶHAÒʶHAÒʶHAÒʶHAÒʶHAÒʶHAÒʶHAÒʶH AÒʶH AÒʶH AÒʶH AÒʶH AÒʶHAÒʶHHƒÀAÒÑAÊL9Ø…dÿÿÿHƒÃHÁãIÙAƒàtAƒèKTA¶IƒÁÁAÊI9Ñuî‰ÈA¸q€€A÷àD‰ÐÁêiÒñÿ)ÑA÷àÁêiÒñÿA)ÒE‰ÓAÁãA Ëé§þÿÿffff.„S¸ÿÿÿÿE…ÀA‰Ñˆ—D‰À»q€€E·Ñ÷ëD‰ÀAÁéÁøDÂÁú)ÂiÒñÿA)ÐD‰ÂD·ÁÁéA‰ÓDÉE¯Ø)ÑD‰Ø÷ãÁêiÒñÿA)ÓºðÿDÙEÐñÿtAPÿúðÿvAÿÿéñÿ=âÿCÁˆÿÿ=ñÿCÁÁà Ð[ÃDS¸ÿÿÿÿE…ÀA‰Ñˆ—D‰À»q€€E·Ñ÷ëD‰ÀAÁéÁøDÂÁú)ÂiÒñÿA)ÐD‰ÂD·ÁÁéA‰ÓDÉE¯Ø)ÑD‰Ø÷ãÁêiÒñÿA)ÓºðÿDÙEÐñÿtAPÿúðÿvAÿÿéñÿ=âÿCÁˆÿÿ=ñÿCÁÁà Ð[Ã000ó«°[    .fileþÿgadler32.cadler32  ° .text[.data.bss.xdata.pdata$ &adler32_combineadler32_combine64crc32.o/ 1437066108 1011 100 100644 10447 ` d† '.textàD& P`.data@PÀ.bss€PÀ.xdata$ä@0@.pdata<v&@0@.rdata D@`@HìE…À‰ÈŽŽHŒ$„L”$Ç„$€ ƒ¸íA¹D‰ HƒÁEÉL9ÑuñE1ÛB‹Œ€E1Ò…ÉtLŒ$€@öÁtE3IƒÁÑéuðF‰IƒÃIû€uÄE0ÛB‹ E1Ò…ÉtI‰áöÁtE3IƒÁÑéuðF‰”€IƒÃIû€uÍE1ÛfDB‹Œ€E1Ò…Ét!LŒ$€f„öÁtE3IƒÁÑéuðF‰IƒÃIû€u¿AöÀt…ÀtE1ÉH‰á¨tD3 HƒÁÑèuñD‰ÈE‰ÃAÑûtsE1ÒfB‹ E1É…ÉtI‰àföÁtE3IƒÀÑéuðF‰Œ€IƒÂIú€uËAöÃt'…Àt#HŒ$€E1ÉfD¨tD3 HƒÁÑèuñD‰ÈE‰ØAÑø…ÿÿÿ1ÐHÄÄHÄUWVSHƒì1ÀH…ÒtCE…ÀÇD$ ÷Ñt0öÂt=L ë @öÂt+¶HƒÂ1ÈÁé¶ÀA3 Aƒèuâ‰È÷ÐHƒÄ[^_]ÃDAƒø†ÙAXàL I‰ÒÁëH‰ØHÁàL\ f„A3 ¶ý‰Î¶ÁÁéA‹„ ÁîA3‰@¶öA3BA3„¹A3„±¶ô¶è‰ÁÁèÁé‰ÇA‹„© ¶ÉA3¹A3BA3„±A3„‰¶ô¶è‰ÁÁèÁé‰ÇA‹„© ¶ÉA3¹A3B A3„±A3„‰¶ô¶è‰ÁÁèÁé‰ÇA‹„© ¶ÉA3¹A3BA3„±A3„‰¶ô¶è‰ÁÁèÁé‰ÇA‹„© ¶ÉA3¹A3BA3„±A3„‰¶ô¶è‰ÁÁèÁé‰ÇA‹„© ¶ÉA3¹A3BA3„±A3„‰¶ô‰Á¶èÁèÁé‰ÇA‹„© ¶ÉA3¹A3BIƒÂ A3„±A3„‰‰Á‰Æ¶øÁéÁî¶ÄA‹ ‰A3Œ¹ @¶öA3ŒA3Œ±M9Ó…\þÿÿHƒÃAƒàHÁãHÚAƒøvaA@üL I‰ÒÁè‰ÇHtºA‹IƒÂ1ȉÁA‰Ã¶ØÁéAÁë¶ÄA‹ ‰A3Œ™ E¶ÛA3ŒC3Œ™I9òuÀHTºAƒàE…À„›ýÿÿHBAƒèL IÀë f„HƒÀ¶1ÊÁé¶ÒA3 ‘L9ÀH‰Âuå‰È÷Ðé^ýÿÿfff.„é;ûÿÿff.„é+ûÿÿ!"0`pP¨°¸À´ ÀÅÐÕ –0w,aîºQ ™Ämôjp5¥c飕dž2ˆÛ¤¸ÜyéÕàˆÙÒ—+L¶ ½|±~-¸ç‘¿d·ò °jHq¹óÞA¾„}ÔÚëäÝmQµÔôÇ…ÓƒV˜lÀ¨kdzùbýìÉeŠO\Ùlcc=úõ È n;^iLäA`Õrqg¢Ñäjm ¨Zjz Ïäÿ “'® ±ž}D“ðÒ£‡hòþÂi]Wb÷Ëge€q6lçknvÔþà+Ó‰ZzÚÌJÝgoß¹ùùホC¾·Õް`è£ÖÖ~“Ñ¡ÄÂØ8RòßOñg»ÑgW¼¦Ýµ?K6²HÚ+ ØL ¯öJ6`zAÃï`ßUßg¨ïŽn1y¾iFŒ³a˃f¼ Òo%6âhR•w ÌG »¹"/&U¾;ºÅ( ½²’Z´+j³\§ÿ×Â1Ïе‹žÙ,®Þ[°Âd›&òc윣ju “m© œ?6ë…grW‚J¿•z¸â®+±{8¶ ›ŽÒ’ ¾Õå·ïÜ|!ßÛ ÔÒÓ†BâÔñø³ÝhnƒÚ;[&¹öáw°owG·æZˆpjÿÊ;f\ ÿžei®bøÓÿkaEÏlxâ  îÒ ×TƒN³9a&g§÷`ÐMGiIÛwn>JjÑ®ÜZÖÙf ß@ð;Ø7S®¼©Åž»ÞϲGéÿµ0ò½½ŠÂºÊ0“³S¦£´$6к“×Í)WÞT¿gÙ#.zf³¸JaÄh]”+o*7¾ ´¡Ž ÃßZï-A1‚b62ÃS-+ÅldEôw}†§ZVÇ–AOŠÙÈI»ÂÑŠèïúËÙôã Oµ¬M~®µŽ-ƒžÏ˜‡QÂJ#ÙSÓpôx’AïaU×®.æµ7×µ˜–„ƒY˜‚©›Ûú-°šË6©]]wællÿß?AÔžZÍ¢$„•㟌 F²§aw©¾¦áèñçÐóè$ƒÞÃe²ÅÚª®]]ëŸFD(Ìkoiýpv®k19ïZ* ,  m8ó6Fß²]ÆqTpí0ekô÷ó*»¶Â1¢u‘‰4 û¼Ÿº„yÞ©%8ï²<ÿyós¾Hèj}ÅA<*ÞXOyðD~bé‡-OÂÆTÛŠ”@»ƒè#¦ÂÙ8¿ Å 8Lô»!§– Ζ Ì\H1×E‹búnÊSáwT]»ºl £Ö?ˆ—–‘P˜×Þ©ÌÇÒúáì“Ëúõ\×bræykÞµT@Ÿ„OYX#Úp8$›A#=§kýeæZæ|% ËWd8ÐN£®‘⟊!̧3`ý¼*¯á$­îÐ?´-ƒŸl² †«$HÉêSÐ)F~ûhweâöy?/·H$6t 5*ò¼SK³HRpÞey1ï~`þóæç¿Âýþ|‘ÐÕ= ËÌú6Šƒ»‘šxT¼±9e§¨K˜ƒ; ©˜"Éúµ ˆË®O]ï_lôFÍ?ÙmŒÂtCZó#AêÁplÁ€AwØG×6—æ-ŽÅµ¥„„¼ŠAq[»Zh˜èwCÙÙlZO-_~6 œ-'Ý>˜¹S1ƒ b®‹ÑSµ’ÅôÝWôïÄ”§ÂïÕ–Ùöé¼®¨·kÞ1œ*ï*…íykʬHpÓo]ø.*Fáá6Þf ÅcTèT"eóMåó²¤Â©g‘„0& Ÿ)¸®ÅäùŸÞý:ÌóÖ{ýèϼk©€ýZ²™> Ÿ²8„«°$,ñ52F*sw1´ápHõÐkQ6ƒFzw²]cN×úËæáÒ̵Ìù„×àJ–¯ #¶Èp ‰A»„F]#l8Ä?1…(B˜Og©T~ÀúyUËbLÅ8^ô#˜§³Ü–ªTåZ1Oü™bbרSyÎOáIV~úP•-×{ÔÌbŠ-R»–4‘è»ÐÙ ìó~^­ÂeGn‘Hl/ Suè6:© #jT$+e?äy§–¥H¼f‘¤'*нà¼Ëò¡ÐëbÞýÀ#ïæÙ½á¼üЧ ?ƒŠ&~²‘?¹$ÐpøËi;FæBzwý[µkeÜôZ~Å7 Sîv8H÷±® ¸ðŸ¡3Ì?Šrý$“7jÂnÔ„Y¾Fܨ ëÂ˲|…O¸Q;ÑÖ…— áïU dù S“Ø -ž =G\ p£&GÉäw¢)`¬ /›aíÂß«õµiÈò5ÿ˜÷¦&±‘LsZ<#0þzޏMäzàFM8×,9Ž’É;¹ø :<îD? „†>R:À(ôq-Ãv³,šÈõ.­¢7/Àšp÷çXq®Ys™3Ür%“w+OQvrñtE›Õux܉~O¶K }!bÏ|¤t€y“BxÊ zýÊÆ{°.¼l‡D~mÞú8oéúnl†µk[ìwjR1h58ói¯b?mcf«+aQÁé`Ôצeã½ddº"fiàg Ë×H¡INSKyu‘JücÞOË N’·ZL¥Ý˜M˜šÄF¯ðGöN@EÁ$‚DD2ÍAsX@*æIBŒ‹CPhñTg3U>¼uW Ö·VŒÀøS»ª:Râ|PÕ~¾Qè9âZßS [†ífY±‡¤X4‘ë]û)\ZEo^m/­_€5á·q÷àîϱâÙ¥sã\³<ækÙþç2g¸å zä8J&ï äîVž¢ìaô`íäâ/èÓˆíéŠ6«ë½\iêð¸ýÇÒÑüžl—þ©Uÿ,úzØûBÄžùu®\øHéóƒÂò&=„ðWFñ”A ô£+Ëõú•÷ÍÿOö`]xÙW7ºØ‰üÚ9ã>Û¼õqÞ‹Ÿ³ßÒ!õÝåK7ÜØ k×ïf©Ö¶ØïÔ²-Õ¤bÐ3ΠÑjpæÓ]$Òþ^Å'”œÄ~*ÚÆI@ÇÌVWÂû<•â‚ÓÁ•èÀ¨¯MËŸÅÊÆ{ÉÈñ ÉtDÌCm†ÍÓÀÏ-¹Î@–¯‘wüm.B+’(铜>¦–«Td—òê"•Å€à”øÇ¼ŸÏ­~ž–8œ¡yú$oµ˜w™J»1›}Ñóš05‰_KŒ^á Ži‹Ï쀊Û÷B‹‚I‰µ#ƈˆdšƒ¿X‚æ°€ÑÚÜTÌ“„c¦Q…:‡ rÕ† Ðâ©—º ¨Îfªùn¤«|xë®K)¯¬o­%Æ­¬ñ§/ë3¦vUu¤A?·¥Ä)ø óC:¡ªý|£—¾¢Ðsĵç´¾§@¶‰Í‚· ÛͲ;±³bI±Ue‹°h"×»_HºöS¸1œ‘¹´ŠÞ¼ƒà½Ú^Z¿í4˜¾eg¼¸‹È ªî¯µW—b2ðÞ7Ü_k%¹8×ï(´ÅŠO}dà½o‡׸¿ÖJÝØjò3wßàVcXŸWPú0¥èŸúqø¬BÈÀ{ß­§ÇgCru&oÎÍp­•-û·¤?žÐ‡'èÏBs¢¬ ưÉGz>¯2 [ÈŽµg; Ї²i8P/ _ì—âðY…‡—å=ч†e´à:ÝZOÏ?(3w†äêãwXR Øí@h¿Qø¡ø+ðÄŸ—H*0"ZOWžâöoI“õÇ}§@ÕÀümNП5+·#Å–Ÿ *'Gýº| A’ô÷èH¨=X›X?¨#¶1Ó÷¡‰jÏv¨Ê¬á¾„`ÃÒp ^·æY¸©ô<ßL…çÂÑà€~i/Ë{kHwâ ËÇh±s)ÇaL ¸Ùõ˜oDÿÓü~Pfî7ÚVM'¹(@¶Æï°¤£ˆ °Û×g9‘xÒ+ôn“÷&;fšƒˆ?/‘íX“)T`D´1ø ߨMºÏñ¦ìß’þ‰¸.Fg›Tp'ì»HðqÞ/LÉ0€ùÛUçEcœ ?kùǃÓh6ÁrŠyË7]ä®Pá\@ÿTN%˜èösˆ‹®ï7ø@‚'>¼$é!AxU™¯×à‹Ê°\3;¶Yí^ÑåU°~PGÕìÿl!;b F‡Úçé2È‚ŽŽpÔží(±ùQ_Vä‚:1X:ƒ §æn3Á† m¦:µ¤á@½Á†ü/)IJNõ¯óv"2–žŠx¾+˜Ù— KÉôx.®HÀÀýÒ¥fAj^–÷y9*O—–Ÿ]òñ#åkM`~×õŽÑbçë¶Þ_RŽ Â7éµzÙFh¼!¼Ðê1߈Vc0aùÖ"žj𽦽ØÁ¿6n´­S šNrÿ)Î¥†{·táÇÍÙ’¨¾¬*F8#v¥€ufÆØz`þ®Ïr›ÉsÊ"ñ¤WG–ï©9­ýÌ^EîMvc‰ñÎ&DÜèAødQy/ù4“AÚ±&S¿ÖšëéÆù³Œ¡E bðiL¡¾Q›<Û6'„5™’–Pþ..™¹T&üÞèžq]Œwá4Î.6©«IŠEæ? ƒ»v‘àãö\[ýYéI˜>Uñ!‚lDa>Ԫ΋ÆÏ©7~8AÖ]&Ãn³‰v|ÖîÊÄoÖY ±¡áäóy¨K×i˲w«\¡Â¹9Æ~€þ©œå™$ 6 6nQާf†ÂqÚ>,Þo,I¹Ó”ð •渱{I £.±H>ÒC-YnûÃöÛ馑gQ©°ÌzÎ t”a¹fñÞw0–îa,™ QºmÄpjôéc¥5žd•£Ûˆ2yܸ¤àÕé—ÒÙˆ ¶L+~±|½ç¸-¿‘·dj° òó¹qH„¾AÞÚÔ}mÝäëôÔµQƒÓ…Çl˜Vdk¨ÀýbùzŠeÉì\OclÙú=c õ;n ÈLi^Õ`Aä¢gqr<äÑKÔGÒ …ý¥ µk5µ¨úB²˜lÛ»ÉÖ¬¼ù@2ØlãEß\uÜÖ Ï«Ñ=Y&Ù0¬QÞ:È×Q€¿Ða!´ôµV³Ä#Ϻ•™¸½¥(¸ž_ˆÆ Ù²± é$/o|‡XhLÁa«¶f-=vÜAÛq˜Ò ¼ïÕ*q±…‰¶µŸ¿ä¥è¸Ô3xÉ¢ù4– ¨Žá˜j »m=-‘dl—æc\kkQôlab…e0ØòbNl•í¥{‚ôÁõÄWe°ÙÆ·éP‹¾¸êü¹ˆ|bÝßÚ-IŒÓ|óûÔLeM²aX:µQΣ¼tÔ»0âJߥA=ؕפÑÄmÓÖôûCiéj4nÙü­gˆFÚ`¸ÐD-s3åª L_Ý |ÉPq<'Aª¾ É †Whµ% o…³¹fÔ ÎaäŸ^Þù)Ùɘ°Ð˜"Çר´Y³=.´ ·½\;Àºl­í¸ƒ š¿³¶¶â t±ÒšêÕG9Òw¯Û&s܃ãc ”d;„ mj>zjZ¨äÏ “ ÿ ®'}ž±ð“D‡£ÒòhiÂþ÷bW]€egËl6qnkçþÔv‰Ó+àÚzZgÝJÌù¹ßo޾ïù·¾C`°ŽÕÖÖ£è¡Ñ“~8ØÂÄOßòRÑ»gñ¦¼Wg?µÝH²6KØ +Ú¯ L6JöAz`ß`ïègßU1nŽïFi¾yËa³Œ¼fƒ%oÒ Rhâ6Ì w•» G"¹U&/ź;¾²½ (+´Z’\³jÂ×ÿ§µÐÏ1,Ùž‹[Þ®›d°ìcò&uj£œm“ œ ©ë6?rg…W•¿J‚â¸z{±+® ¶8’ÒŽ›åÕ¾ |Üï· Ûß!†ÓÒÔñÔâBhݳøÚƒn¾Íö¹&[o°wá·GwˆZæÿjpf;Ê \ežÿøb®iakÿÓlÏE  âx× ÒîNƒT9³Â§g&aÐ`÷IiGM>nwÛ®ÑjJÙÖZÜ@ß f7Ø;𩼮SÞ»žÅG²Ï0µÿé½½òʺŠS³“0$´£¦ºÐ6ÍדTÞW)#Ùg¿³fz.ÄaJ¸]h*o+”´ ¾7Ã Ž¡Zß-ï1A26b‚+-SÃdlÅ}wôEVZ§†OA–ÇÈÙŠÑ»IúïèŠãôÙˬµO µ®~Mžƒ-އ˜ÏJÂQSÙ#xôpÓaïA’.®×U7µæ˜µ×ƒ„–‚˜Y›©°-úÛ©6Ëšæw]]ÿllÔA?ßÍZž•„$¢ŒŸã§²F ¾©wañèá¦èóÐçÃÞƒ$ÚŲe]]®ªDFŸëokÌ(vpýi91k® *Zï  ,8mßF6óÆ]²ípTqôke0»*ó÷¢1¶‰‘u 4Ÿ¼û„º%©Þy<²ï8sóyÿjèH¾AÅ}XÞ*<ðyOéb~DÂO-‡ÛTÆ”Š»@¦#胿8ÙÂ8 Å !»ôL –§–Î\Ì E×1Hnúb‹wáSʺ»]T£ lˆ?Ö‘–—ÞטPÇÌ©ìáúÒõúË“rb×\kyæ@TµÞYO„ŸX#$8pÚ=#A›eýk§|æZæWË %NÐ8d‘®£ŠŸâ3§Ì!*¼ý`­$᯴?Ð-† ²lÉH$«ÐSêû~F)âewh/?yö6$H· t*5KS¼òRH³yeÞp`~ï1çæóþþý¿ÕБ|ÌË =ƒŠ6úš‘»±¼Tx¨§e9;ƒ˜K"˜© µúɮˈ_ï]OFôlmÙ?ÍtÂŒóZCêA#ÁlpÁØwA€—6×GŽ-極ż„„qAŠhZ»[Cwè˜ZlÙÙ-O 6~_'-œ>ݹ˜ ƒ1S‹®b’µSÑÝôÅÄïôWï§”öÙ–Õ®¼é·¨œ1Þk…*ï*ÊkyíÓpH¬ø]oáF*.fÞ6áÅ TèTcMóe"²óå©Â¤0„‘g)Ÿ &äÅ®¸ýÞŸùÖóÌ:Ïèý{€©k¼™²Zý²Ÿ >«„8,$°5ñ*F21wsHpá´QkÐõzFƒ6c]²wËú×NÒáæù̵Ìàׄ¯–J¶#  pÈ„»A‰#]F8l1?Ä(…gO˜B~T©UyúÀLbË8Ř#ô^³§ª–ÜåTüO1Z×bb™ÎySØIáOPú~V{×-•bÌÔ-Š4–»R»è‘ ÙÐ^~óìGe­lH‘nuS /:6è# ©$Tj?e+–§yä¼H¥¤‘f½Š*'ò˼àëСÀýÞbÙæï#¼á½ §Ðü&Šƒ??‘²~pÐ$¹iËøBæF;[ýwzÜekµÅ~ZôîS 7÷H8v¸ ®±¡ŸðŠ?Ì3“$ýrÂj7„ÔnF¾Y ¨ÜËÂë|²O…Q¸Ñ; —…Ö Uïá ùdØ“S ž- \G=&£päÉG¢w`)/ ¬ía›«ßÂiµõ5òÈ÷˜ÿ±&¦sL‘†„ <À:R=Pe6^X7œ}o5ÚÃ64©1W¿„0•Õ³2Ókê3Ý$kå%©§'ï1þ&-[É#bML" '{ æ™"!$ó*x´(+ºÞ)ü`F(> q-qô,³vÃ.õÈš/7¢­pšÀqXç÷sY®rÜ3™w“%vQO+tñruÕ›E~‰ÜxK¶O} |Ïb!y€t¤xB“z Ê{ÆÊýl¼.°m~D‡o8úÞnúékµ†ljwì[h1Rió85b¯cm?a+«f`éÁQe¦×Ôdd½ãf"ºgàiH×Ë I¡KSNJ‘uyOÞcüN ËLZ·’M˜Ý¥FÄš˜Gð¯E@NöD‚$ÁAÍ2D@XsBIæ*C‹ŒTñhPU3gWu¼>V·Ö SøÀŒR:ª»P|âQ¾~ÕZâ9è[ SßYfí†X¤‡±]ë‘4\)û^oEZ_­/má5€à÷q·â±Ïîãs¥Ùæ<³\çþÙkå¸g2äz ï&J8îä 좞Ví`ôaè/âäéíˆÓë«6Šêi\½ý¸ðüÑÒÇþ—lžÿU©ú,ûØzùžÄBø\®uóéHòƒð„=&ñFWô A”õË+£÷•úöOÿÍÙx]`غ7WÚü‰Û>ã9Þqõ¼ß³Ÿ‹Ýõ!ÒÜ7Kå×k ØÖ©fïÔïØ¶Õ-²Ðb¤Ñ Î3ÓæpjÒ$]Å^þÄœ”'ÆÚ*~Ç@IÂWVÌÕ<ûÁÓ‚¢Àè•ËM¯¨ÊÅŸÈÉ{ÆÉ ñÌDt͆mCÏÀÓι-‘¯–@müw’+B.“é(–¦>œ—dT«•"êò”à€ÅŸ¼Çøž~­Ïœ8–úy¡˜µo$™w›1»JšóÑ}‰50ŒK_Ž á^Ï‹iŠ€ì‹B÷Û‰I‚ˆÆ#µƒšdˆ‚X¿€°æÜÚÑ„“ÌT…Q¦c‡:†Õr ©âР¨ º—ªfΫ¤nù®ëx|¯)K­o¬¬­Æ%§ñ¦3ë/¤uUv¥·?A ø)Ä¡:Có£|ýª¢¾—µÄsдç¶@§¾·‚͉²ÍÛ ³±;±Ib°‹eU»×"hºH_¸Sö¹‘œ1¼ÞŠ´½àƒ¿Z^Ú¾˜4í¸¼geª È‹µ¯îb—W7Þð2%k_Ü×8¹Å´(ï}OŠo½àdׇJÖ¿¸òjØÝàßw3XcVPWŸè¥0úúŸB¬øqß{ÀÈgǧ­urCÍÎo&•­p-?¤·û‡ОÏè'¢sB°Æ ¬zGÉ 2¯>ŽÈ[ ;gµ²‡Ð/P8i—ì_ …Yðâ=å—‡e†‡ÑÝ:à´ÏOZw3(?êä†RXwã@íØ øQ¿hð+ø¡H—ŸÄZ"0*âžWOIoöÇõ“Õ@§}müÀ5ŸÐN#·+Ÿ–Å'* ºýGA |ô’¨Hè÷›X=#¨?X1¶‰¡÷ÓvÏj¬Ê¨¾áÃ`„^ pÒæ·ô©¸YLß<ÑÂç…i~€à{Ë/ÃwHkË ¢s±hÇaÇ)Ù¸ LDo˜õüÓÿîfP~VÚ7¹'M¶@(¤°ïÆ ˆ£Û°9g×+Òx‘“nô;&÷ƒšf‘/?ˆ)“Xí´D`T ø1M¨ß¦ñϺþ’ßìF.¸‰T›gì'pqðH»ÉL/ÞÛù€0cEçUk? œÓƒÇùÁ6hyŠrä]7Ë\áP®NTÿ@öè˜%®‹ˆs7ï‚@ø¼>'!é$™UxA‹àׯ3\°ÊíY¶;UåÑ^GP~°ÿìÕb;!lÚ‡F È2éçpŽŽ‚(ížÔQù±‚äV_:X1:§ ƒ3næ †Áµ:¦m½@á¤ü†ÁI)/¯õNJ2"vóŠž–˜+¾x —ÙxôÉKÀH®.ÒýÀjAf¥÷–^O*9y]Ÿ–—å#ñòMkõ×~`çbÑŽ_Þ¶ë ŽRzµé7hFÙм!¼ˆß1ê0cV"Öùašjž½¦½¿ÁØ­´n6 SrNš¥Î)ÿ·{†Çát’ÙÍ*¬¾¨8F€¥v#ØÆfu`zrÏ®þÊsÉ›W¤ñ"ï–Gý­9©E^ÌvMîÎñ‰cÜD&døAèù/yQA“4S&±ÚëšÖ¿³ùÆé E¡Œðb¡Li<›Q¾„'6Û–’™5..þP&T¹™žèÞüŒ]q4áw©6.ΊI«?æE»ƒ ãà‘v[\öIéYýñU>˜l‚!Ô>aDƋΪ~7©ÏÖA8nÃ&]|v‰³ÄÊîÖYÖoᡱ óäK¨yËi׫w²¹Â¡\~Æ9œ©þ€$™å6 6 ŽQn†f§>ÚqÂ,oÞ,”Ó¹I ð±¸æ•£ I{±.CÒ>HûnY-éÛöÃQg‘¦Ì°©t Îzf¹a”Þñ³æ1~       $ ( ,0 4 8.fileþÿgcrc32.c ° !crc32À +À 9Ð .textÕ.data.bss.xdata$.pdata<.rdata Icrc32_combine_get_crc_tablecrc_tablecrc32_combinecrc32_combine64 deflate.o/ 1437066109 1011 100 100644 19949 ` d†‚H6.textÐ=8BR P`.data Ô>lE @`À.bss€PÀ.xdataPt?@0@.pdataÄ@ÐEE@0@.rdata`ØA@`@AWAVAUATUWVSHƒì(‹yDD‹‘”1öH‹YPD‹‰ D‹¤D‹±¸¯úþÿÿE‰ÓN<D‰ÈA9êv A²)þNœMcÑD‹©œC¶<L‹a`L‰\$G¶\ÿE‰ÂAÁêD;‰´‹iLH‰L$Dˆ\$ECÂE9îEGõë!êA·T9Öƒ`Aƒè„VA‰ÑLcÐIÙG¶A8ûuÔG¶TÿD:T$uÇA¶A8 u¾A¶OA8Iu³H‹L$IƒÇIƒÁ‰D$A¶AIA8G…A¶AIA8G…A¶AIA8G…ðA¶AIA8G…ÝA¶AIA8G…ÊA¶AIA8G…·A¶AIA8G…¤IƒÁIƒÇA¶A8u L9|$‡_ÿÿÿ‹D$H‰L$L‹L$¹D‰ßDˆT$M)ùL‹|$D)ÉA‰ÉIï9ÈÉþÿÿH‹L$E9Ή‘˜~#IcÁH‹L$E¶\ÿ¶¼þþÿÿD‰ÈDˆ\$é–þÿÿD‰ÈfD9èAGÅHƒÄ([^_]A\A]A^A_ËD$H‰L$I‰ÿépÿÿÿ€AWAVAUATUWVSHƒìH‹qDD‹¡œ1íH‰ËVÿ‰ðD®úþÿÿH‰D$(HÀHÒH‰D$0‰ðH‰T$8D‹sX‹‹”DèE)æA)Î9ÁƒSH‹;D‹gE…ä„õ1ÒE9æL‹CP‹ƒœ‚A‰Ï‰WH‹IÇE‰æMÇM‰ðL‰ùèH‹G(‹@,ƒø„Aƒø„XL7Dg ‹ƒœ‹“ AÄD‰£œAƒø†D‹ƒ”L‹KP‹‹€D‹S|A)ÐD‰ÀE¶A@D‰[pA¶AÓãD1ØD!ЉCpD…ÒtNEXÓàH‹{hE‰ÆD#sLƒêG¶D1ØD!ÐA‰Ã‰CpN_H‹{`E·;fF‰„š‹C=š„œD‹nE…í„¢ƒø*D‹k@H‰3ÇC@„̓øE„¯D‹C(ƒøI„Dƒø[„ùƒøg„€E…À…·‹F…Àu1ÒAƒýCL-ÂÒ)Ñ…ÉC‹Súš„V…À„V‹ƒ°ƒø„ƒƒø„ÆHcƒ¬ºH‰ÙHÁàAÿTPþƒú†’ƒøt…À…åD‹nE…í„7‹“¬1Àébþÿÿƒ{,„å‹KH1ÀÁá éxAƒøŽÉD‹ƒ” Áº…B‰ÈÇCqƒÈ E…ÀL‹CEȉÈ÷â)ÑÑéÊÁê‰ÐÁà)ÐP‹C(A‰ÑAÁé‰ÁEˆ L‹CHAˆD‹‹”P‰S(E…ÉtG‹NLL‹KA‰ÈÁéAˆ H‹KPAÁèDˆ·VLHL‹CA‰ÑAÁéEˆ L‹CHƒÀAˆ‰C(E1À1Ò1Éè‰FL‹CéKþÿÿH‹K0D‹C(Hƒy„™‹S8D·QH‰ÈE‰ÁD9Ò‚©fD‹P<…ÒtE9ÁsD‰ÊHS‹NLE)Èè‰FLH‹C0‹P9S8„‹CD‹C(éèýÿÿ‹H<…Ét E9Á‚XH‰ñè æÿÿD‹K(D;K„ ‹S8H‹K0E‰ÈH‹A¶ H‹SD‰ÀAƒÀˆ H‹C0‹S8D‰C(·HƒÂ‰S89ʃ`ÿÿÿH‰ÁD9CuÄë’Dƒø…þÿÿH‰ñ@è›åÿÿéþÿÿfD…À…D‹³œE…ö…šýÿÿúš…Žýÿÿéßýÿÿ€H‰ñèXåÿÿ‹F…Àu!ÇC@ÿÿÿÿé½ýÿÿD¸þÿÿÿéfüÿÿfD‹Fé3ýÿÿ„D‹C(ÇC8ÇCIHƒx „:E‰Áë1‹S8H‹@ ‰ÑƒÂ¶H‹K‰S8D‰ÊAƒÁ„ÀˆD‰K(„‘H‹C0D9KuÉ‹@<…Àt E9Á‡§H‰ñè¯äÿÿD‹C(D;C„ÓH‹C0E‰Áëš„ƒúŽ.ýÿÿƒú°@Ž#ýÿÿƒú°Àº€DÂéýÿÿH‹8‹“¬H‰F ‹C(fDƒøÀ÷Ѓàûé(ûÿÿE1öH‹C0‹@<…Àt E9È‚!E…ö„ ‹CD‹C(éâûÿÿ@ÇCšébüÿÿ@ºH‰Ùè#òÿÿé@üÿÿH‹C0é×þÿÿDD‹vE…ö„YûÿÿH‹ H‰F ¸þÿÿÿé¢úÿÿD‰ÊHS‹NLE)Èè‰FLéŽýÿÿH‹C0‹@<…ÀtUA@;C‡ÞH‹KD‹NLD‰ÂAƒÀDˆ ‹VLH‹KÁêBˆE1À‰C(1Ò1ÉèD‹C(‰FLÇCqé%ûÿÿDÇCqéûÿÿ@H‹C0Hƒx0„LE‰Áë-‹S8H‹@0‰ÑƒÂ¶H‹K‰S8D‰ÊAƒÁ„ÀˆD‰K(tCH‹C0D9KuÍ‹@<…Àt E9Á‡©H‰ñèÑâÿÿD‹C(D;C„H‹C0E‰Áëžf.„E1öH‹C0‹@<…Àt E9È‚®E…öt4‹CD‹C(é_úÿÿ„ÇC8ÇC[H‹C0D‹C(é9ÿÿÿDÇCgH‹C0D‹C(é°þÿÿºH‰ÙèŸîÿÿéŒúÿÿf.„D‰ÂHS‹NLE)ÁE‰Èè‰FLé:ÿÿÿD‰ÂHS‹NLE)ÁE‰Èè‰FLé<ýÿÿH‹C0E‰Èé„ûÿÿÇCIH‰ÈéÇüÿÿÇCgé-þÿÿÇC[é‘þÿÿH‹8H‰F ‹C(éZýÿÿH‰ñè¢áÿÿD‹C(A@;C‡qùÿÿéþÿÿE1À1Ò1Éè‰FL‹C(H‹K‰ÂD@ÆH‹KPÆ‹H‹KPÆH‹S0D‰C(H…Ò„ÖD‹LCE…ÛA•Áƒz<É÷уáAÉHƒzÉ÷уáAÉHƒz É÷уáDÉHƒz0Ò÷ÒƒâÊAˆL‹C0PH‹KE‹@DˆH‹S0HL‹C‹RÁêAˆL‹C0PH‹KE·@DˆL‹C0PH‹KE¶@DˆD‹ƒ¬P¹‰S(HSAƒø tƒ»°¹Žþˆ L‹C0P H‹KE‹@ DˆH‹K0D@ D‰C(Hƒyt,‹IH‹SBˆ H‹S0H L‹C‹RÁêAˆD@ H‹K0D‰C(D‹Q Ün. ¼ŽN ü`Qƒq1  a! ¢A âY ’;y9 Òi) ² ‰I òU+u5 Ê e% ª…E ê] šS}= Úm- º M úSÃ#s3 Æ c# ¦ƒC æ[ –C{; Ök+ ¶ ‹K öW@3w7 Îg' ®‡G î _ žc? Þo/ ¾O þ`Psp0 Á ` ¡€@ áX ‘;x8 Ñh( ±ˆH ñTã+t4 É d$ ©„D é\ ™S|< Ùl, ¹ ŒL ùR£#r2 Å b" ¥‚B åZ •Cz: Õj* µ ŠJ õV@3v6 Íf& ­†F í ^ c~> Ýn. ½ŽN ý`Qƒq1 à a! £A ãY “;y9 Ói) ³ ‰I óU+u5 Ë e% «…E ë] ›S}= Ûm- » M ûSÃ#s3 Ç c# §ƒC ç[ —C{; ×k+ · ‹K ÷W@3w7 Ïg' ¯‡G ï _ Ÿc? ßo/ ¿O ÿA@!  @a`10  Á@     ¼ÓÔŒN3Š`9 Á Þ å  O_­hw       0 4 8 < @ D H L P T X \ ` d h l p t x .fileþÿginfback.c  ! ,€8€ E  .textÜ.data.bss.xdata,.pdata$ .rdata& zcalloc zcfree memcpy T b oinflateBackInit_inflateBackorder.4122lenfix.4100distfix.4101inflateBackEndinflate_tableinflate_fast inffast.o/ 1437066110 1011 100 100644 3189 ` d†D .text   P`.data@PÀ.bss€PÀ.rdataP” @P@.xdataä @0@.pdata ü & @0@AWAVAUATUWVSHì˜H‹Y(L‹!H‰È‹IL‹PIƒìL‹K8‹{,ƒéD‹{4D‹C0LáIƒêL‹[XH‰L$‹HL‰ÖL‰L$A¹‰|$(H‹|$D‰D$H)ÊéD‹CDLÑH)ÖL‹k`H‰ $‹KhHƒïH‰t$@D‰ÎH‰|$ H‹|$‹S@Óæ‰ñD‰þƒéÁîHƒÇ‰L$‹Kl‰t$,ÁæH‰|$X‰t$8AÓáD‰ÉD‹L$(ƒé‰L$ÿÿÿfÇB|¸1ÉéBþÿÿE1É1Àé¶þÿÿ¸þÿÿÿézÿÿÿf„H…Ét&H‹Q(H…Òt#1Àƒ: t óÃf„‹RD1À…Ò”ÀøþÿÿÿøþÿÿÿÃf„AUATUWVSHƒì(H…ÒH‰ËH‰Ö„uH…É„lH‹j(H…í„_H‹B0H…À„RHƒz8„GH‹J@A¸èºÿÐH…ÀI‰Ä„4Hƒ}8„‹M(ºA¸ÓâH‹N@ÿV0H…ÀI‰Å„H‹AöÄL‰çH‰H‹FH‰CH‹FH‰CH‹FH‰CH‹F H‰C H‹F(H‰C(H‹F0H‰C0H‹F8H‰C8H‹F@H‰C@H‹FHH‰CHH‹FPH‰îH‰CP¸è…U@öÇ…g@öÇ…-‰Á1ÒÁé¨óH¥…û¨…Ó¨…«H‹EXH•HH9Ðs[H‹…€H)ÐHÁøM…íI„„HI‰„$€t‹M(¸H‹U8A‰ÀAÓàL‰éèM‰l$81ÀL‰c(HƒÄ([^_]A\A]ÃfDHÔH9Èw™H)ÐHÁøI„„HI‰D$XH‹E`H)ÐHÁøI„„HI‰D$`éhÿÿÿ¶ˆH‹EXH•HH9ЂJÿÿÿ룷 f‰ HƒÂ¨„!ÿÿÿëÊf.„‹¨‰º„üþÿÿëÍE1íéYþÿÿD‹ƒèHƒÆ‰HƒÇé¿þÿÿ¶EI|$HuAˆ$¸çéþÿÿ·ƒèHƒÆf‰HƒÇéƒþÿÿf.„¸þÿÿÿéóþÿÿ¸üÿÿÿééþÿÿH‹N@L‰âÿV8¸üÿÿÿéÕþÿÿ„¸þÿÿÿH…ÉtH‹Q(H…Òt ǂذýóÃffffff.„H…ÉtJH‹Q(H…ÒtG‹‚Ü‹ ÁàƒùtE1ÀƒùtDÀÃfDD‹BHDÀÄD‹‚àD+BHDÀøÿÿøÿÿÃB0`pPB0`pPR0`p20  0 ` p PÀÐàð2020`pB0`pP"0`  B0`pPÀÐAPú¿À'0( Ž4û<‚%@%ç%Xð%h&`p&'l'H'|P''*€0*g*Œp*(-0-Q-¤`-»-¨incorrect header checkunknown compression methodinvalid window sizeunknown header flags setheader crc mismatchinvalid block typeinvalid stored block lengthstoo many length or distance symbolsinvalid code lengths setinvalid bit length repeatinvalid code -- missing end-of-blockinvalid literal/lengths setinvalid distances setinvalid literal/length codeinvalid distance codeinvalid distance too far backincorrect data checkincorrect length checkÄ™Á %DÈ úe ¨ · (  4ØìC O  ? € í X<&`Psp0 À `  €@ àX ;x8 Ðh( °ˆH ðTã+t4 È d$ ¨„D è\ ˜S|< Øl, ¸ ŒL øR£#r2 Ä b" ¤‚B äZ ”Cz: Ôj* ´ ŠJ ôV@3v6 Ìf& ¬†F ì ^ œc~> Ün. ¼ŽN ü`Qƒq1  a! ¢A âY ’;y9 Òi) ² ‰I òU+u5 Ê e% ª…E ê] šS}= Úm- º M úSÃ#s3 Æ c# ¦ƒC æ[ –C{; Ök+ ¶ ‹K öW@3w7 Îg' ®‡G î _ žc? Þo/ ¾O þ`Psp0 Á ` ¡€@ áX ‘;x8 Ñh( ±ˆH ñTã+t4 É d$ ©„D é\ ™S|< Ùl, ¹ ŒL ùR£#r2 Å b" ¥‚B åZ •Cz: Õj* µ ŠJ õV@3v6 Íf& ­†F í ^ c~> Ýn. ½ŽN ý`Qƒq1 à a! £A ãY “;y9 Ói) ³ ‰I óU+u5 Ë e% «…E ë] ›S}= Ûm- » M ûSÃ#s3 Ç c# §ƒC ç[ —C{; ×k+ · ‹K ÷W@3w7 Ïg' ¯‡G ï _ Ÿc? ßo/ ¿O ÿA@!  @a`10  Á@     E#«#ð#Ó%ã$H$c%N&¢!Ã!Y 'a!V&w!Ô!J!°#Â!û!o(†!~!4#á'0&†!Ë!M&£)þ&#! &!"!]!&î& !_ !| !É &*"&W"&Ä"'#!}#&â#'`$(s$!˜$!Æ$!.%(E%!b%!E&#[&#Ó&'à&'î+#  $(,048<@DHLPTX\`dhlptx|€„ˆŒ”˜œ ¤¨¬°´¸¼ÀÄÈÔØÜàäèìðôøü  $(,048<@DHL.fileþÿginflate.c P " /À =0 K  X inflate eà p`|` ‰% ”ð% ©p& ¾' ÏP' Û0* ìp* ø0-  `- .text»-;.data.bss.xdata¬.pdataÌ3.rdata memcpy zcalloc zcfree crc32 adler32  # 0updatewindowinflateResetKeepinflateResetinflateReset2inflateInit2_inflateInit_inflatePrimeorder.4162lenfix.4133distfix.4134inflateEndinflateGetDictionaryinflateSetDictionaryinflateGetHeaderinflateSyncinflateSyncPointinflateCopyinflateUndermineinflateMarkinflate_tableinflate_fastinftrees.o/ 1437066110 1011 100 100644 3014 ` d†þ .textP¸  P`.data@PÀ.bss€PÀ.xdataT@0@.pdata là @0@.rdata@x@`@AWAVAUATUWVSHƒìxfïÀE…ÀA‰ÊfD$0fD$@t1ÀfD· BHƒÀfƒDL0A9ÀwíD·\$NH‹„$à‹fE…Û…+fƒ|$L…Òfƒ|$J…#fƒ|$H…fƒ|$F…@fƒ|$D…)fƒ|$B…>fƒ|$@…'fƒ|$>…1fƒ|$<…0fƒ|$:…:fƒ|$8…#fƒ|$6…8fƒ|$4…!fƒ|$2uFI‹H‹”$àÆ@Æ@fÇ@Æ@@Æ@fÇ@HƒÀI‰Ç1ÀHƒÄx[^_]A\A]A^A_ÃA¼½·\$2¾¸ÿÿÿÿ)ÞxÑ·\$4ö¸ÿÿÿÿ)ÞxÁ·\$6ö)Þx¶·\$8ö)Þx«·\$:ö)Þx ·\$<ö)Þx•·\$>ö)ÞxŠ·\$@ö)Þˆ{ÿÿÿ·\$Bö)Þˆlÿÿÿ·\$Dö)Þˆ]ÿÿÿ·\$Fö)ÞˆNÿÿÿ·\$Hö)Þˆ?ÿÿÿ6·t$J)óˆ/ÿÿÿ·t$LÛ)óˆ ÿÿÿÛE·ÛD)ÛƒûŒÿÿÿtAƒü…E…Ò„ý·D$2fÇD$Rf‰D$TfD$4f‰D$VfD$6f‰D$XfD$8f‰D$ZfD$:f‰D$\fD$f‰D$`fD$@f‰D$bfD$Bf‰D$dfD$Df‰D$ffD$Ff‰D$hfD$Hf‰D$jfD$Jf‰D$lfD$LE…Àf‰D$nt9H‹¼$è1ÀD·BfE…ÛtE·ÛB·\\P·óƒÃf‰wfB‰\\PHƒÀA9ÀwÒE…Ò…wH‹„$èÇD$H‰D$ H‰D$A9ÌÇD$I‹AFÌ9ÍCÍÓd$D‹\$‰L$ AƒëAƒú”D$.|$TD‰\$(‡fAƒú”D$/|$P‡dD‹D$ ÇD$ÿÿÿÿ1ÀE1íÇ$‰éL‹œ$èD(é‰Î‹ $E·KE1ÛA·Ê9L$±L‹t$ E·ÒG¶VL‹t$G·V‰é¿A¾D)éA‰ÇÓçD‰ÁAÓæD‰éAÓïD‰t$D‰ñ)ùF49…ÉN4³EˆAˆvfE‰VuæMÿAºAÓâA…ÂD‰ÑtfÑé…Áuú…É„%DQÿA!ÂA A‰êƒ$B·LT0ƒéf…ÉfB‰LT0uD9儈‹ $L‹œ$èA· K·,J9l$ ƒ ÿÿÿD‹T$(A!ÂD;T$„÷þÿÿE…íDDl$ A‰èE)èD9ås@A‰ëD‰Á¾F·\\0ÓæD)ÞG\(…ö‰ñëD‰ÞÉAƒÃ·tt0)ñ…É~ AƒÀE9ÜwãA»D‰ÁAÓãD\$|$T‡|$P‡†‹L$I‹1D‰T$H‹D‰ÑLDˆŽ¶L$ I‹1BˆLI‹1H‰ÙH)ñHÁùfB‰Lé2þÿÿ1ÀéßþÿÿfDE1ÒA»`éYþÿÿAƒúÇD$ÿÿÿÿ¸ED$LL5€‰D$H¾þÿÿIEÃH‰D$ H>þÿÿIEÆH‰D$éVýÿÿ€|$.¸„ŠýÿÿéFûÿÿ€|$/¸„Œýÿÿé1ûÿÿ…ÀtHƒÆ@@ˆpfÇ@‹D$‹L$ L‹”$àHÁàIA‰ 1ÀéûúÿÿA¼fƒ|$2HD$4½…Ùf„ƒÅD9儿úÿÿHƒÀfƒxþté·D$2¾)ÆéÝúÿÿA¼ë±A¼ ë©A¼ ë¡€|$.„vþÿÿ¸éúÿÿ€|$/„oþÿÿëéA¼ étÿÿÿA¼ éiÿÿÿA¼é^ÿÿÿA¼ éSÿÿÿA¼éHÿÿÿA¼é=ÿÿÿA¼é2ÿÿÿA¼é'ÿÿÿA¼éÿÿÿA¼éÿÿÿ½éúÿÿ¸ÿÿÿÿéòùÿÿ â 0 ` p PÀÐàðD inflate 1.2.8 Copyright 1995-2013 Mark Adler  #+3;CScsƒ£Ãã !1AaÁ  0@`HN@@§®¹É.fileþÿginftrees.c €'À1@.textD.data.bss.xdata.pdata .rdata@<Ninflate_tabledext.4048dbase.4047lext.4046lbase.4045inflate_copyrighttrees.o/ 1437066111 1011 100 100644 13313 ` d†*0'.text !. P`.data`$"®.@`À.bss€PÀ.xdata„"@0@.pdata„#à.!@0@.rdata€ ˜#@`@AWAVAUATUWVSHƒì‹œMcØEÀF‹¼™¨ A9À‰D$ Mc÷N,²ë?fDIcÀD‹Œ¨ IcÁD·‚D‰ÀfE9Urc„}DD9D$ F‰Œ™¨ LcØ|GD9D$ ~ÀA@Icð‹´±¨ LcÈF‹Œ‰¨ Hcî·<ªMcáF·¢fA9úr¨tPA‰úfE9UA‰ñD‰ÀsF‰¼™¨ HƒÄ[^_]A\A]A^A_ÀMcÁB¶œ¤B8œ1¤‡iÿÿÿëÄ@B¶¼!¤@:¼)¤DGÎAGÀé8ÿÿÿfAWAVAUATUWVSHƒìXH‹BH‹2H‰ËI‰Ö‹hL‹ÇœÇ =…íŽAMÿ1À¿ÿÿÿÿHƒÁë-‹“œ‰ÇƒÂ‰“œHcÒ‰„“¨ Æ„¤HƒÀH9Ètfƒ<†uÍfÇD†HƒÀH9ÈuéD‹£œM…Àu;é‹McäB‰”£¨ fÇHcÒƒ«Æ„¤A·DD‹£œ)ƒAƒüwAƒÄ1À1ÒƒÿD‰£œ°ƒÇHcljúHÁàë¢1É1À1ÒMcäB‰„£¨ fǃ«D‹£œÆ„¤Aƒü"AƒÄƒÿD‰£œ½GHcЉÇH •ë±A‰~AÑüfE‰àH‰òH‰ÙèrýÿÿAƒìuìHcÕ‹ƒœL$–HcЃèLc«¬ ‹”“¨ ‰ƒœA¸H‰Ù‰“¬ H‰òè.ýÿÿ‹ƒ Lcƒ¬ PÿƒèJ †‰ƒ H˜HcÒD‰¬“¨ J®D‰„ƒ¨ ·ffA‰$F¶„¤F¶Œ+¤EPAAE8ÁLcÅABÂIƒÄBˆ„¤f‰iA¸f‰jH‰Ù‰«¬ H‰òƒÅè›üÿÿ‹ƒœƒø-ÿÿÿ‹ƒ Hc“¬ M‹ƒè‰ƒ H˜‰”ƒ¨ I‹FA‹NL‹8L‹`D‹p‹@fǃˆ fÇƒŠ fǃŒ fÇƒŽ fǃ fǃ’ fǃ” fǃ– fǃ˜ fǃš fǃœ fǃž fǃ  fǃ¢ fǃ¤ fǃ¦ fAÇD‹“ ƒÂú<E1íM…ÿ„µ‰|$,€LcÊF‹”‹¨ IcúHÁçM8E·KG·LˆAƒÁD9È}AƒÅA‰ÁD9ÑfE‰K|BIcéfƒ„kˆ 1íE9Ö E)òMcÒC‹,”E·AéE¯ÊD‹E·L?DÍA¯ê«ƒÂú=…tÿÿÿ‹|$,E…í„ßD`ÿHcèMcôM‰÷F·”sˆ E‰áM‰ûfE…ÒuDAƒéMcÙF·”[ˆ fE…ÒtêAƒÁAƒêAƒíMcÉfF‰”[ˆ fBƒ„Kˆ fƒ¬kˆ E…í …ÀtnfDD·”kˆ €E…ÒtIƒêLcÊF‹Œ‹¨ D9É|èMcÉO ˆE·YA9Ãt‰ÅD)ÝA‰ëA·)D¯ÝD›fA‰AAƒêE…Òu·ƒètHcè똷ƒˆ E1ÉÀf‰D$2fƒŠ Àf‰D$4fƒŒ Àf‰D$6fƒŽ Àf‰D$8fƒ Àf‰D$:fƒ’ Àf‰D$fƒ– Àf‰D$@fƒ˜ Àf‰D$Bfƒš Àf‰D$Dfƒœ Àf‰D$Ffƒž Àf‰D$Hfƒ  Àf‰D$Jfƒ¢ Àf‰D$Lfƒ¤ À…ÿf‰D$NxHB·TŽ…Òt5HcÂD·DD0A·ÈAƒÀfD‰DD0E1À‰ÈÑéƒàD ÀƒêDuíAÑèfF‰ŽIƒÁD9Ï}¸HƒÄX[^_]A\A]A^A_ÃL‰åë!E1ÒEÑE·E¯ÊD‹ƒÂú=tVLcÊF‹”‹¨ McÊOˆE·KG·LˆAƒÁD9È}AƒÅA‰ÁD9ÑfE‰K|¾McáfBƒ„cˆ E9Ö—E)òMcÒF‹T•ëº=é`ýÿÿE1ä¿ÿÿÿÿé úÿÿWVSD·J¿ÿÿÿÿIcÀfÇD‚ÿÿAƒùöƒÆAƒùÛE1Ò1ÀッÃE…Ày;éŠfIcÙf„™¤ E…Ût`E9Ù„‰D‰Ï¾»1ÀIƒÂE9Ð|WE‰ÙƒÀF·\’9Ø}E9Ùtâ9ð|¶E…Ét>D9Ït IcÁfƒ„¤ fƒä E…Ûu IƒÂ1ÀD‰ÏE9о»Š}©[^_Ã@ƒø +fƒè éiÿÿÿD‰ß¾»1Àérÿÿÿf.„fƒì é>ÿÿÿAWAVAUATUWVS·zH‰ÈƒÿEÛAƒÃƒÿÉჃÁE…ÀˆÙ1íE1Ò»ÿÿÿÿ¾EJD·dªA9É} D9ç„ÇE9Ùü‹ˆD·˜Lcïërf„D·t˜D‹x(D‰óÓãD‰ùA ÛH‹XfD‰˜Dˆ ¶˜AOL‹XAƒÇAˆ ‹˜‰ñD‰x()ÙAÓþALðAƒéE‰ófD‰°‰ˆt=I¨A‰öD·T˜E)ÖA9ÎŒ{ÿÿÿ·\˜ÓãDÑA ÛAƒé‰ˆfD‰˜uÃE…ä„ÁD9ç„ø‰ûA»¹E1ÒHƒÅA9茸D‰çéæþÿÿ…ÿ„¸9û„ALcß‹ˆ‰óIèF·L˜F·\˜D)Ë9ÙŽ÷E‰Ý‹X(L‹pAÓåD‰éf ˆA‰Ýf‰ˆCˆ .KD¶°L‹hƒÃEˆt ‰X(‰ñ‹˜)ÙAÓûD‰Ùf‰ˆALð‰ˆD·ˆæ ‰óD)Ë9ËaD·¨ä D‹p(D‰ëÓãD‰ñA ÛH‹XfD‰˜Dˆ ¶˜ANL‹XAƒÆAˆ ‹˜‰ñD‰p()ÙAÓýALðE‰ëfD‰¨‰ˆAƒêƒùE·ÒŽËE‰ÑD‹h(AÓáE ËL‹HD‰éfD‰˜Eˆ D¶˜AML‹HAƒÅEˆ D‹ˆ‰ñD‰h(D)ÉAƒéAÓúE…äD‰ˆfD‰…Cþÿÿ@HƒÅE1Ò‰ûA9èA»¹ŠHþÿÿ[^_]A\A]A^A_ÃfDAƒù hD·˜ê ‹ˆ‰óD)Û9Ù·˜è Ž„A‰ÝL‹xAÓåD‰éD‹h(f ˆE‰îf‰ˆCˆ 7AMD¶¸L‹pAƒÅEˆ<D‰h(‰ñD‹¨D)éÓû‰Ùf‰ˆCL+ðƒù ‰ˆŽ9AƒêL‹XE·ÒE‰ÑAÓáD ËD‹H(f‰˜D‰ÉAˆ ¶˜AIL‹XAƒÁAˆ D‰H(‰ñD‹ˆD)ÉAƒé AÓúD‰ˆfD‰éýÿÿE‰ÊéýÿÿfDD‰ãA»¹E1Òéýÿÿf.„AÓâƒÁE Ú‰ˆfD‰éºüÿÿ@·˜ä ÓãDÉA Û‰ˆfD‰˜éâýÿÿD·˜î ‹ˆ‰óD)Û9Ù·˜ì ŽA‰ÝL‹xAÓåD‰éD‹h(f ˆE‰îf‰ˆCˆ 7AMD¶¸L‹pAƒÅEˆ<D‰h(‰ñD‹¨D)éÓû‰Ùf‰ˆCL+ð‰ˆƒù ŽÿAƒê L‹XE·ÒE‰ÑAÓáD ËD‹H(f‰˜D‰ÉAˆ ¶˜AIL‹XAƒÁAˆ D‰H(‰ñD‹ˆD)ÉAƒé AÓúD‰ˆfD‰éœûÿÿfDAÓãfD ˜DɉˆfD‰˜éIüÿÿ‹ˆD·˜E‰Êé3üÿÿf„Óãf ˜DÙƒù ‰ˆf‰˜ÇýÿÿAƒéE·ÉAÓáƒÁA Ù‰ˆfD‰ˆéûÿÿf.„Aƒé E·ÉAÓáƒÁA Ù‰ˆfD‰ˆéâúÿÿÓãf ˜DÙ‰ˆf‰˜é¶þÿÿfffff.„AVAUATUWVSH‰È‹‰ôD·…É‹ˆ„÷E1ÉA»ë}HcöD‰ßH4²·^·6)ß9Ï4‰÷‹h(ÓçA úH‹x‰éfD‰Dˆ¶¸ML‹PƒÅAˆ< ‹¸D‰Ù‰h()ùÓþL;ðA‰òf‰°‰ˆD;ˆôƒoH‹˜øD‰ÎH‹¸èAƒÁ·s¶47…Û„^ÿÿÿH-HcþE‰Ý¶l=½H<ºD·gE)åA9ÍbD·/D‹p(D‰ïÓçD‰ñA úH‹xfD‰Dˆ¶¸ANL‹PAƒÆAˆ< ‹¸D‰ÙD‰p()ùAÓýAL<ðE‰êfD‰¨‰ˆ‰ïH-€‹l½…ítzL% A+4¼D‰ß)ï9Ï·öoD‹h(H‹xA‰ôAÓäE âD‰éfD‰Dˆ¶¸AML‹PAƒÅAˆ< D‹ D‰ÙD‰h(D)áÓþBL%ðA‰òf‰°‰ˆƒëûÿ‡ÁH=‰Þ¶47I,°E‰Ü·}·mA)üA9ÌyA‰ìD‹h(AÓäE âL‹`D‰éfD‰Eˆ D¶ AML‹PAƒÅEˆ$ D‹ D‰ÙD‰h(D)áÓýBL'ðA‰êf‰¨‰ˆH=€‹<·…ÿ„ þÿÿH-  +\µD‰Þ)þ9ηÛ,‰ÞH‹hÓæA ò‹p(fD‰‰ñDˆT ¶¨NL‹PƒÆAˆ, D‹ D‰Ù‰p(D)áÓûD;ˆôBL'ðA‰Úf‰˜‰ˆ‚—ýÿÿfDD·‚A¹E‰ËE)ÃA9ˌ㷒ÓâDÁA Ò‰ˆfD‰[^_]A\A]A^÷?ÓçDáA ú‰ˆfD‰éâýÿÿÓæÙA ò‰ˆfD‰éýÿÿÓåùA ꉈfD‰éÍþÿÿfD‰ÞH=ÁîÆ¶47é1þÿÿDÓãùA Ú‰ˆfD‰éªüÿÿfDÓæéA ò‰ˆfD‰éÖýÿÿfDD·š‹P(H‹XD‰ßÓç‰ÑA úfD‰Dˆ J¶˜L‹PƒÂAˆ ‰P(D‰É‹)ÑEDðAÓûfD‰˜D‰€[^_]A\A]A^ÃfDH¼fÇÇH‰@ HH‰P H° H‰X H H‰h H¤ H‰p H@H‰€ 1À€fÇ„¼HƒÀH=xuêf1À€fÇ„° HƒÀHƒøxuì0Àf.„fÇ„¤ HƒÀHƒøLuìfǼÇÇÇÇôÃf.„SH‰È‹‰E·Éƒù  AÓáfD ˆƒÁ‰ˆfD‰ˆƒùŽÆ‹H(L‹XA‰ÊGˆ D¶˜DIL‹PƒÁGˆ ‰H(‹H(L‹PD‰ÃfǀǀfÁëA‰ÉGˆ L‹XDQE‰ÁA÷ÑCˆL‹XDQD‰ÃfAÁé÷ÓCˆL‹XDQƒÁE…ÀGˆ ‰H(t5LJAƒèMÈë „IƒÁ¶L‹XA‰ÊƒÁM9ÁCˆ‰H(L‰Êuà[Ã…ÉŽZÿÿÿ‹H(L‹XA‰ÊƒÁGˆ ‰H(éAÿÿÿE‰ÊH‹XAÓâD‰ÑD‹P(f ˆE‰Óf‰ˆBˆ AJ¶˜L‹XAƒÂAˆ D‰P(¹D‹D)ÑAÓùD‰Éf‰ˆAJó‰ˆé¤þÿÿ‹ƒøt5ƒø~*‹A(D·‰L‹A‰ÂƒÀEˆ fÁ©ƒ©‰A(óÃ@‹A(D·‰L‹A‰ÂEˆ D¶‰PL‹AƒÀEˆ ‰A(fÇÇÃfffff.„ºH‰È‹‰ƒù Ž­A‰ÐD‹H(L‹PAÓàD‰Áf ˆE‰Èf‰ˆCˆ AID¶L‹@AƒÁEˆD‹€¹D‰H(D)ÁAƒè ÓúAƒø D‰€‰Ñf‰ˆaAƒÀAƒøD‰€„šAƒø~#‹H(L‹HA‰ÈƒÁCˆfÁ¨ƒ¨‰H(óÃÓâf DAAƒø D‰€f‰~Ÿ‹H(L‹HA‰ÈCˆD¶ˆQL‹@ƒÁEˆ D‹€1Ò‰H(fÇ€Aƒè AƒøD‰€…fÿÿÿ‹H(L‹HA‰ÈCˆD¶ˆQL‹@ƒÁEˆ ‰H(fǀǀÃfAUATUWVSHƒì(D‰ÇD‹¬H‰ËH‰ÕD‰ÎE…ÀŽ™H‹ ƒyH„žH“@ H‰ÙèŒèÿÿH“X H‰Ùè}èÿÿD‹ƒH H“¼H‰Ùè÷îÿÿD‹ƒ` H“° H‰ÙèáîÿÿH“p H‰ÙèBèÿÿfƒ»â …7fƒ»ª …fƒ»Þ …fƒ»® …ïfƒ»Ú …×fƒ»² …¿fƒ»Ö …§fƒ»¶ …éfƒ»Ò …fƒ»º …×fƒ»Î …çfƒ»¾ …Åfƒ»Ê …Áfƒ»Â …‹fƒ»Æ …fƒ»¦ ¸…ú¹ A»¸‹“T‹‹‰“ƒÂ ƒÁ ÁêÁé9ÊCÑDGA9ІÃ9Ñ„gƒ»°„Z‹‹V·Òƒù lÓâf “ƒÁ‰‹f‰“ƒù D‹£` D‹ƒH ŽEÿÿÿH‹{E·ÒE‰ÑAÓá‹K(D Êf‰“A‰ÉBˆ¶»QL‹KƒÁAˆ<D‹‹‰K(¹D)ÉAÓúAIõD‰ÒfD‰“ƒù ‰‹ŽÁE·ÔH‹{E‰ÑAÓá‹K(D Êf‰“A‰ÉBˆ¶»QL‹KƒÁAˆ<D‹‹‰K(¹D)ÉAÓúAIõD‰ÒfD‰“ƒù ‰‹ŽzƒèL‹SD·ÈD‰ÈÓà ‹C(f‰“‰ÁAˆ D¶“PH‹KƒÀDˆ‰C(¹‹ƒ)ÁAÓùHôD‰ÊfD‰‹‰‹1ÀH= ½ëwDF·”‹¦ L‹kHƒÀE‰ÑAÓáD ÊD‹K(f‰“D‰ÉAˆT D¶«AQH‹KAƒÁDˆ,D‰K(‰éD‹‹D)ÉAÓúAIóA9ÃD‰ÒfD‰“‰‹~2ƒù D¶ „F·Œ‹¦ HƒÀAÓáƒÁD ÊA9É‹f‰“ÎH»¼H«° H‰ÙH‰úèSìÿÿE‰àH‰êH‰ÙèEìÿÿI‰èH‰úH‰Ùè§òÿÿ1ÀDfÇ„¼HƒÀH=xuêf1À€fÇ„° HƒÀHƒøxuì0Àf.„fÇ„¤ HƒÀHƒøLuì…öfǃ¼ǃǃǃǃôtP‹ƒƒøŽÁ‹C(D·ƒH‹K‰ÂDˆD¶ƒPH‹KƒÀDˆ‰C(fǃǃHƒÄ([^_]A\A]Ë‹ƒù F·ÀÓàf ƒƒÁ‰‹LHH‰Ùè}ñÿÿéÑþÿÿ¸DXC [é üÿÿH…í„4üÿÿA‰ñA‰øH‰êH‰ÙèÜöÿÿé þÿÿ…ÀŽeÿÿÿ‹C(D·ƒH‹K‰ÂƒÀDˆ‰C(éEÿÿÿOA»1À‰Êé×ûÿÿ1ÀºÀÿófDöÂtfƒ¼¼…’HƒÀÑêH=€uÞHºÿÿÿÿH…“à°u.fƒ»ðu$1ÀëHƒÀH=€„äfƒ¼<t帉AHéèùÿÿA‰ÐL‹SAÓà‹K(fD ƒA‰ÉfD‰ƒGˆ DAD¶“L‹KƒÁGˆD‹ƒ‰K(¹D)ÁÓú‰Ñf‰‹AHó‰‹éFûÿÿVL‹K·Ò‰ÐÓà‰Á‹C(f ‹A‰Àf‰‹Cˆ HD¶‹L‹CƒÀEˆ ‰C(¹‹ƒ)Áƒè Óú‰ƒf‰“é4þÿÿEˆÿÿÿE·ÉAÓáƒÁD ʃù ‰‹f‰“?ûÿÿE·ÌAÓáƒÁD ʃù ‰‹f‰“†ûÿÿACü·ÀÓàƒÁ ‰‹f‰“éÅûÿÿ1Àé¸þÿÿ¸ éÖýÿÿ¸ éÌýÿÿ¸ éÂýÿÿ¸é¸ýÿÿ¸é®ýÿÿ¸é¤ýÿÿ¸éšýÿÿ¸éýÿÿ¸é†ýÿÿ¸ é|ýÿÿ¸ érýÿÿ¸éhýÿÿ¸é^ýÿÿ¸éTýÿÿf1Àé$þÿÿffffff.„‹ôL‹‘øA‰ÁƒÀ…ÒfC‰JL‹‘èGˆ ‰ôtcL E‰ÀƒƒêG¶fBƒ„Àúÿw*LA¶HcÒfƒ„‘° ‹‘ðƒê9ДÀ¶ÀÃÁêÂëËE‰ÀfBƒ„¼ëÑ€€  " 0 ` p PÀÐàð ¢ 0 ` p PÀÐàð0`p  0 ` p PÀÐàð  0 `pPÀÐà0  B0`pPÀÐ ­°½0À"<0ºPÀ¶dÀOhPÒpàNtPq x€ !Œ        ŒLÌ,¬lìœ\Ü<¼|ü‚BÂ"¢bâ’RÒ2²rò ŠJÊ*ªjêšZÚ:ºzú†FÆ&¦fæ–VÖ6¶vöŽNÎ.®nîž^Þ>¾~þAÁ!¡aá‘QÑ1±qñ ‰IÉ)©ié™YÙ9¹yù…EÅ%¥eå•UÕ5µuõ MÍ-­mí]Ý=½}ý  “ “ S S Ó Ó 3 3 ³ ³ s s ó ó  ‹ ‹ K K Ë Ë + + « « k k ë ë   › › [ [ Û Û ; ; » » { { û û   ‡ ‡ G G Ç Ç ' ' § § g g ç ç   — — W W × × 7 7 · · w w ÷ ÷    O O Ï Ï / / ¯ ¯ o o ï ï   Ÿ Ÿ _ _ ß ß ? ? ¿ ¿   ÿ ÿ @ `P0pH(hX8xD$dT4tƒCÃ#£cã       (08@P`p€ Àà  0@`€À€  0@` #š#©#2#º#Ì#õ#ä # #§#° #Û ### #(#H#  $(,048<@DHLPTX\`dhlptx|€.fileþÿgtrees.c   ° $À .0 =€I U€a  _tr_initÀ ky ‡@–À §P ¶à ÀP bl_order ÐÝê€  ô .text!.data`.bss.xdata.pdata„!.rdatal pqdownheapbuild_treescan_treesend_treecompress_blockextra_lbitsbase_lengthextra_dbitsbase_diststatic_l_descstatic_d_descstatic_bl_desc_tr_stored_block_tr_flush_bits_tr_align_tr_flush_blockstatic_dtreestatic_ltree_tr_tallyextra_blbits_length_code_dist_code zutil.o/ 1437066111 1011 100 100644 1397 ` d†¶.text`” P`.data`d¼ @`À.bss€PÀ.rdata€Ä@P@.xdataD@0@.pdata<X @0@HĸeÃf.„¸H)ÈH˜H‹ÂÃff.„D‰Á¯ÊéDH‰Ñé!"-:EYf!1.2.8need dictionarystream endfile errorstream errordata errorinsufficient memorybuffer errorincompatible version 5@K PX( GT (08@H  $(,048.fileþÿgzutil.c  zError  zcalloc@ zcfreeP .textX.dataP .bss.rdata{.xdata.pdata<z_errmsgmalloc free !zlibVersionzlibCompileFlags compress.o/ 1437066111 1011 100 100644 1408 ` d†Ò.textÀ P`.data@PÀ.bss€PÀ.rdataÄ@P@.xdataÔ@0@.pdata$ðx @0@VSH숋H‰Ó‹”$ÀL‰D$ H‰L$0LHL$ D‰L$(A¹X‰D$8HÇD$PHÇD$XHÇD$`è…À‰Æt‰ðHĈ[^Ã@HL$ ºèƒø‰Æt*HL$ è…ö¸ûÿÿÿDð‰ðHĈ[^Ãf.„‹D$.text Ü  P`.data@PÀ.bss€PÀ.xdataü@0@.pdata  @0@H…ÉtyOtéé¸þÿÿÿà .fileþÿggzclose.cgzclose .text.data.bss.xdata.pdata   gzclose_wgzclose_rgzlib.o/ 1437066111 1011 100 100644 6039 ` d†–(.textp $$ P`.data@PÀ.bss€PÀ.rdata`t ŒN@P@.xdata„Ô @0@.pdataÌX ˜3@0@AUATUWVSHƒì(1ÛH…ÉH‰Ï‰ÖM‰Ä„>¹ÈèH…ÀH‰Ã„(Ç@(Ç@, HÇ@hÇ@Ç@TÿÿÿÿÇ@XÇ@@A¶$„À„ 1íH ë¾Àƒè0‰CTIƒÄA¶$„À„&PЀú vÞƒè+out of memory%s%s%s:   B0`pPÀÐB0`pP2020`p202020b0`pP ­° -,0‚0J4P<H YL`™P Tv\€¶dÀ h — l  p t%!y¸Ã"<#r#†#ß$î!£%ó&%@'… Ê!Ùé"#Â'ò# 'C#Ä'4'ãðN #À #ê $õ $ÿ ! $ $% 1 F "  $(,048<@DHLPTX\`dhlptx|€„ˆŒ”˜œ ¤¨¬°´¸¼ÀÄÈÌÐÔØÜàäèìðôøü  $(,048  $(,048<@DHLPTX\`dhlptx|€„ˆŒ”˜œ ¤¨¬°´¸¼ÀÄÈ.fileþÿggzlib.cgz_open gzopen gzopen64  gzdopen° gzopen_w  gzbuffer0 gzrewind gzseek64P gzseek gztell64  gztell`   gzoffset gzeof€ gzerrorÀ   gz_error   .textp $.data.bss.rdata]N.xdata„.pdataÌ3malloc snprintf free strlen wcstombs open ' 1gzoffset64gzclearerr__imp__wopen_lseeki64 gzread.o/ 1437066111 1011 100 100644 6355 ` d†–(.text 5 P`.data@PÀ.bss€PÀ.xdata¨$@0@.pdataÌ.$@0@.rdataÀ\@P@SHƒì H‰Ëÿ‹èºÿÿÿÿI‰ÀH‰Ùè¸ÿÿÿÿHƒÄ [ÃAVAUATUWVSHƒì 1ÿD‹±ˆH‰ÎLipëG1ÒL‰éèƒø‰Ç„ëƒøþ„âƒøü„ƒøý„ƒÿ‹†ˆ„Œ…À„„‹Vx…Òu²‹Fdƒøû…&‹FL…ÀuP‹n(L‹f01Ûë @Ã9Ýv%‹N‰ÚA‰èLâA)Øèƒøâ…ÇFL^xH‹F0H‰Fp…Û‰^x…OÿÿÿLºûÿÿÿH‰ñ苆ˆA)ÆH‹†€D‰6L)ðH‰F1ÀƒÿuÇFDHƒÄ [^_]A\A]A^Ã@L0ºþÿÿÿH‰ñè¸ÿÿÿÿHƒÄ [^_]A\A]A^ÃLW‰ÂH‰ñè¸ÿÿÿÿHƒÄ [^_]A\A]A^ÃH‹†L‰úH‰ñH…ÀLEÀè¸ÿÿÿÿHƒÄ [^_]A\A]A^Ã…À„Òþÿÿ¸ÿÿÿÿHƒÄ [^_]A\A]A^Ãÿ‹èºÿÿÿÿI‰ÀH‰ñè¸ÿÿÿÿé*ÿÿÿffff.„ATUWVSHƒì D‹Q(H‰ËHqpE…Òt{D‹CxAƒø†XH‹Cp€8„‹K@…Ét8H‹K8H‹SpH‰Kè‹CxÇCDÇCxÇC@‰1ÀHƒÄ [^_]A\Ã1ÀÇCxÇCLÇHƒÄ [^_]A\Ëy,‰ùè ?H‰ÅH‰C0èH…íH‰C8„kH…À„€Le‰{(Hǃ Hǃ¨Hǃ°A¹XÇCxHÇCpºH‰ñè…À„ÿÿÿH‹K8èH‹K0èÇC(LWºüÿÿÿH‰Ùè¸ÿÿÿÿéÿÿÿ€x‹…ÛþÿÿH‰ñèÇCDÇC@1Àéòþÿÿf„‹Sdƒúû…ÅD‹KLE…ÉuYE…Àuv‹k(E‰Ä1ÿLc0D)Åë DÇ9ýv%‹K‰úA‰èLâA)øèƒøâ…‘ÇCLA‰øDCxH‹C0H‰CpD‰Cx1ÀE…À„pþÿÿAƒø‡%þÿÿA¸é'þÿÿfH‹SpH‹C0¶ˆD‹CxétÿÿÿH…À„ÿÿÿH‰ÁèH‹k0H…í„îþÿÿH‰éèéáþÿÿ…Ò¸ÿÿÿÿ„.ÿÿÿféþÿÿÿ‹èƒÊÿI‰ÀH‰ÙèƒÈÿéÞýÿÿDWVSHƒì H‰Ë‹CDƒøtcƒøt9…ÀuH‰ÙèMýÿÿƒøÿt‹CD…Àt‹;…ÿu‹sL…ötÎD‹[xE…ÛuÅ1ÀHƒÄ [^_ËC(H‰ÙÀ‰ƒˆH‹C8H‰ƒ€èûÿÿƒøÿu¼ëÒ‹s(H‹{81ÀÇöë„9Ɖv!‹K‰ÂA‰ðHúA)ÀèƒøàuÇCLH‹C8H‰C1ÀHƒÄ [^_Ãÿ‹èºÿÿÿÿI‰ÀH‰Ùè¸ÿÿÿÿéUÿÿÿfffff.„AVAUATUWVSHƒì ¸ÿÿÿÿH…ÉH‰ËH‰Õ„ÎyO…Á‹Qdƒúû…­‹C`…À…+‹3E1ö¿ë`‹CL…Àt ‹Cx…À„›‹CD…Àtu‹S(Ò9×rlƒø„¥‰»ˆH‰«€H‰ÙèîùÿÿƒøÿtY‹3ljð)÷HÅsAö…ÿt`‹3…ötœ9þH‹SH‰éG÷A‰ô)÷M‰àLåèLc)3ëÌfDH‰Ùèþÿÿƒøÿu¿HƒÄ [^_]A\A]A^ÃÇCPf.„D‰ðHƒÄ [^_]A\A]A^Ã1öëf.„Æ9÷†eÿÿÿA‰üA‰õ‹KA)ôIíE‰àL‰êèƒø×…–ÇCLL‰íD‰çé5ÿÿÿ‹{\ÇC`‹3…ÿu.éÂþÿÿf.„|N9÷|J)÷‰ð1ö‰ÂCHS‰3…ÿ„™þÿÿƒþuÜ‹CL…Àt ‹Cx…À„‚þÿÿH‰Ùè2ýÿÿƒøÿ„ÿÿÿ‹3ëÌD‰ø)þ1ÿë´…Ò„KþÿÿéûþÿÿH‰ÙèSøÿÿƒøÿ„êþÿÿé[ÿÿÿDAVAUATUWVSHƒì ¸ÿÿÿÿH…ÉH‰ËH‰ÕD‰Ç„ûyO…î‹Qdƒúû…âƒÿŒ¹¸„ÎD‹S`E…Ò…B‹3E1öërf.„‹KL…Ét ‹Sx…Ò„®‹CD…À„£‹S(Ò9ׂ–ƒø„°‰»ˆH‰«€H‰Ùè¸÷ÿÿƒøÿtc‹3ljð)÷HÅAös…ÿtk‹3…öt”9þH‹SH‰éG÷A‰ô)÷M‰àLåèLc)3ëÌLpºýÿÿÿH‰Ùè¸ÿÿÿÿ€HƒÄ [^_]A\A]A^ÃH‰Ùè¸ûÿÿƒøÿtã…ÿu•D‰ðHƒÄ [^_]A\A]A^Ã1öëf„Æ9÷†[ÿÿÿA‰üA‰õ‹KA)ôIíE‰àL‰êèƒø×…­ÇCLL‰íD‰çé+ÿÿÿD‹c\ÇC`‹3E…äu/é©þÿÿ„|PA9ô|KA)ô‰ð1ö‰ÂCHS‰3E…ä„þÿÿƒþuÙD‹KLE…Ét D‹CxE…À„dþÿÿH‰Ùèëúÿÿƒøÿ„ÿÿÿ‹3ëÇD‰àD)æE1äë±…Ò„þÿÿéóþÿÿÇCPéÿÿÿH‰Ùèüõÿÿƒøÿ„ÓþÿÿéDÿÿÿfffff.„Hƒì8¸ÿÿÿÿH…Ét/yOu&‹QdƒúûuB‹…ÀtH‹QƒèƒA‰¶HƒÂH‰QHƒÄ8ÃHT$ èDûÿÿ‰Â¸ÿÿÿÿ…Ò~æ¶D$ HƒÄ8Ã…ÒtºëÖf„Hƒì8¸ÿÿÿÿH…Ét/yOu&‹QdƒúûuB‹…ÀtH‹QƒèƒA‰¶HƒÂH‰QHƒÄ8ÃHT$ èÔúÿÿ‰Â¸ÿÿÿÿ…Ò~æ¶D$ HƒÄ8Ã…ÒtºëÖf„WVSHƒì H…Ò‰ÎH‰Ó„[zO…N‹Bdƒøû…2‹C`…Àu~…öˆ3‹…ÒtA‹K(É9Ê„7L‹CL;C8„ÒI@ÿƒÂ‰H‰CAˆpÿƒkÇCP‰ðHƒÄ [^_ËC(ÇÀHƒèHC8H‰C@ˆ0‰ðƒkÇCPHƒÄ [^_Ë{\ÇC`…ÿ„mÿÿÿ‹ƒøt&|O9øK)ljÂ1À‰S‰ÐHC…ÿ„Gÿÿÿ‹ƒøuÚ‹CL…Àt D‹[xE…Û„,ÿÿÿH‰ÙèŸøÿÿƒøÿuª‰Æé]ÿÿÿ‰ú)ø1ÿ별‰ÐLÁLÀI9ÀsBHƒèHƒé¶ˆH9C8rí‹I‰Èéÿÿÿ…À„Æþÿÿ„¾ÿÿÿÿ‰ðHƒÄ [^_ÃI‰Èé×þÿÿL˜ºýÿÿÿH‰Ù¾ÿÿÿÿèéÕþÿÿff.„AWAVAUATUWVSHƒì(1ÀH…ÒH‰ËI‰×D‰Å„·H…É„®E…ÀŽ¥yO…˜‹Qdƒúû…A‹C`…À…¶1Àƒítz‹M‰þf.„…Àt|9è‰îL‹cF𺠉÷I‰øL‰áèH…ÀI‰Åt H‰ÆL)æƒÆ‰÷L‰ñI‰øL‰âè‹H{Iþs)ð)õ‰tM…ít¥M9þ„ AÆL‰øHƒÄ([^_]A\A]A^A_Ã@H‰Ùè÷ÿÿƒøÿtw‹…À…mÿÿÿÇCP뻋s\ÇC`fD…ö„2ÿÿÿ‹ƒøt&|O9Æ|K)ƉÂ1À‰S‰ÐHC…ö„ ÿÿÿ‹ƒøuÚ‹CL…Àt ‹Cx…À„óþÿÿH‰Ùè‘öÿÿƒøÿu¬1Àé`ÿÿÿD‰ò)ð1ö별…Ò„·þÿÿé>ÿÿÿSHƒì 1ÀH…ÉH‰Ët yOt ‹C@HƒÄ [ËQD…Òuð‹…Àuêèóÿÿëãff.„WVSHƒì ¾þÿÿÿH…ÉH‰ËtPyOuG‹I(…ÉuL1öƒ{dûH‰Ù@•ÆE1À1ÒèH‹K t¶ûè‹KèH‰Ù‰Çè…ÿ¸ÿÿÿÿEð‰ðHƒÄ [^_ÃfHKpèH‹K8èH‹K0èë—202 0 `pPÀÐà  20`pPÀ20`p2 0 `pPÀÐà2 0 `pPÀÐàbb20`p B 0 ` p PÀÐàð2020`p00 «°¢,°»8À L ‡ ` ÷ h ¥ p° M|P…”œcompressed data errorunexpected end of fileinternal error: inflate stream corruptout of memory1.2.8requested length does not fit in intout of room to push characters !VÕS`{…§¸îõi »!Ê!ç-">#G#Ub~$åS#h#‡‘ŸW}„”~ ´ ÃÐ@ Š œ = %^ ÇÔ#Ü&æ#'##  $(,048<@DHLPTX\`dhlptx|€„ˆŒ.fileþÿggzread.c 0 gz_look  gz_fetch° ° gzreadÀ gzgetc  gzgetc_  gzungetc  gzgets°  gzdirectP 0 .text5.data.bss.xdata¨.pdata$.rdata·:strerror gz_error inflate read memcpy malloc G free U memchr close b mgz_load.part.0gz_decompgzread.constprop.2gzclose_r__imp__errnoinflateInit2_inflateResetinflateEnd gzwrite.o/ 1437066111 1011 100 100644 4993 ` d†ö+.text 0 # P`.data@PÀ.bss€PÀ.rdatap” @P@.xdataœ @0@.pdata  Ž$@0@UWVSHƒìH‹y,H‰Ë‰ýH‰éèH…ÀH‰ÆH‰C0„Ì‹C@…Àt‰{(1ÀHƒÄH[^_]ÃH‰éèH…ÀH‰C8„½H‹STHKpHǃ Hǃ¨A¹H‰D$0‹CXA¸Hǃ°ÇD$8XÇD$ ‰D$(è…Àu-‹S@‹C,…Ò‰C(u‰ƒˆH‹C8H‰ƒ€H‰C1ÀHƒÄH[^_]ÃH‹K8èH‹K0èLºüÿÿÿH‰Ùè¸ÿÿÿÿé"ÿÿÿH‰ñëØf„UWVSHƒì(H‰ËHqp‹I(‰×…É„g‹S@…Ò…y1À…ÿ‹‹ˆ„´f„…Ét ƒø…H‹SL‹ƒ€I)ÐE…ÀD‰Å…ö…É„ÀH‹ƒ€‰ÍH‰C‰úH‰ñèƒøþ„a‹‹ˆ9éu¤1Ûƒÿ„9‰ØHƒÄ([^_]Ë{(H‹C8‰»ˆH‰ƒ€H‰C1ÒH‰ñèƒøþ„‹‹ˆ9ù„å…ɉÏuÙH‹SL‹ƒ€I)ÐE…ÀD‰Çt«‹Kè…Àˆú9ø…ò‹»ˆ…ÿt‰H‹ƒ€ë”‹k(H‹C8‰«ˆH‰ƒ€é0ÿÿÿDƒÿ‰Í„$ÿÿÿéðþÿÿ‹Kè…Àˆ¡9è…™‹‹ˆéçþÿÿH‰ÙèUýÿÿƒøÿ…ˆþÿÿ‰Ãé ÿÿÿDH‹Sp‹KD‹Cxè…Àx];CxuXÇCx1Û‰ØHƒÄ([^_]Ã1Û‰ØHƒÄ([^_]ÃH‰ñè‰ØHƒÄ([^_]ÃLH‰Ùºþÿÿÿ»ÿÿÿÿèé–þÿÿÿ‹èH‰ÙI‰Àºÿÿÿÿè»ÿÿÿÿéoþÿÿ„WVSHƒì D‹AxH‰Î‰×E…Àuk…ÿ¸tpf‹^(…Ûx99û5…Àu7H‹F0^1Ò‰^xH‰ñH‰Fpèyýÿÿƒøÿt1À)ßuÎHƒÄ [^_ÃfD…À‰ûtÉH‹N0A‰Ø1Òèë¹f.„1Òè9ýÿÿƒøÿu‰ëÄ0ÀëÀfffff.„AUATUWVSHƒì(D‹Q`H‰ËH‰ÕE‰ÅE…Ò…¾D9k(v{D‰ï‹Cx…ÀtNH‹KpH‹S0‹s(È)ЉÁ)Æ9þG÷HÑH‰êA‰ôM‰àLåèsxs)÷u(D‰ê‰ÐHƒÄ([^_]A\A]ÃfDH‹S0H‰ÑH‰Spë­1ÒH‰Ùè†üÿÿƒøÿuŒ1ÒëÈD‹KxE…Ét1ÒH‰Ùèjüÿÿ1Òƒøÿt®Dk1ÒD‰kxH‰kpH‰ÙèMüÿÿ1ÒƒøÿuŽë@‹Q\ÇA`èqþÿÿ1Òƒøÿ…(ÿÿÿélÿÿÿSHƒì0H…ÉH‰Ët y±yt 1ÀHƒÄ0[Ãf‹Ad…ÀuïAƒø|tçD‹Y(E…Ût(H‰ÙHƒÄ0[é»þÿÿL@ºýÿÿÿè뾄H‰T$(D‰D$ è‘úÿÿƒøÿH‹T$(D‹D$ uºë–WVSHƒì0¿ÿÿÿÿH…ÉH‰Ë‰ÖtLy±yuCD‹AdE…Àu:‹I`…É…‹C(…Àt6‹KxH‹S0…ÉtoL‹Cp)ÑDÁ9Èv@ˆ4 ƒCx@¶þƒC‰øHƒÄ0[^_Ã@{±y@ˆt$ ¿ÿÿÿÿuß‹Sd…ÒuØ…ÀtRHT$ A¸H‰ÙèßýÿÿƒøuN@¶þ‰øHƒÄ0[^_ÃH‰SpI‰Ð댋S\ÇC`H‰Ùèýÿÿ9ø…Yÿÿÿë†@H‰Ùè˜ùÿÿƒøÿ‰ÇuŸénÿÿÿƒÏÿéfÿÿÿ@WVSHƒì H‰ËH‰ÑH‰×è‰Æ1ÀH…Ût {±yt…öºÿÿÿÿEÂHƒÄ [^_ÀD‹SdE…Òu7ƒþ|6¸tÜD‹K(E…ÉtBA‰ðH‰úH‰Ùèýÿÿ…Àt·HƒÄ [^_Ä1Àë£L@ºýÿÿÿH‰Ùè1Àë‹@H‰ÙèØøÿÿƒøÿu±ë‚ATUWVSHƒì0H…ÉH‰ËH‰Ö„E1äy±ytD‰àHƒÄ0[^_]A\ËAd…Àuë‹i(…턌‹{`…ÿ… D‹[xE…ÛuW‹k(H‹C0M‰ÁI‰ðHcýÆD8ÿH‰úH‹K0ÿ9èA‰Äš…ÀŽ’H‹C0€|8ÿ…ƒD‰cxH‰CpDcéwÿÿÿf1ÒH‰ÙL‰D$(E1äè.ùÿÿƒøÿL‹D$(uéTÿÿÿL‰D$(èõ÷ÿÿƒøÿL‹D$(…\ÿÿÿé7ÿÿÿf‹S\ÇC`H‰ÙL‰D$(E1äè&ûÿÿƒøÿL‹D$(…8ÿÿÿéÿÿÿE1äD‰àHƒÄ0[^_]A\ÃA¼ÿÿÿÿééþÿÿ@Hƒì8L‰D$PLD$PL‰L$XL‰D$(è£þÿÿHƒÄ8Ãfffff.„VSHƒì(H…ÉH‰Ë‰ÖtKy±y¸þÿÿÿu ‹Qd…Òuƒþw‹A`…Àu‰òH‰ÙèEøÿÿ‹CdHƒÄ([^ËQ\ÇA`èlúÿÿƒøÿuØëã¸ÿÿÿÿëÜfffff.„WVSHƒì ¸þÿÿÿH…ÉH‰Ë‰ÖD‰ÇtXy±yuOD‹QdE…ÒuF9QTtPD‹K`E…ÉuXD‹C(E…Àt'‹Kx…ÉtºH‰Ùèº÷ÿÿƒøÿtUHKpA‰ø‰òè‰sT‰{X1ÀHƒÄ [^_À1ÀD9AXtéD‹K`E…Ét¨‹S\ÇC`H‰Ùè­ùÿÿƒøÿu‘ëÇfD‹Cdë¼ff.„VSHƒì(¾þÿÿÿH…ÉH‰Ëtiy±yu`‹A`1ö…Àu`ºH‰Ùè÷ÿÿƒøÿti‹C(…ÀtD‹[@E…Ût^H‹K0èE1À1ÒH‰ÙèH‹K è‹KèH‰ÙƒøÿDðè‰ðHƒÄ([^ËQ\ÇA`èüøÿÿƒøÿuŒ‹sdë‡f‹sdë’HKpèH‹K8èëŽout of memory1.2.8internal error: deflate stream corruptrequested length does not fit in int‚0`pPB0`pP20`p  B0`pPÀÐR0R0`p20`p  R0`pPÀbB0`20`pB0` X`ò ÿ,€@€|H€/T0l`p’p  x Å „Ð ‰ DX­çð÷ ¥!ð!+"„"Ì"#( 3:$J Ð%Z&HR ‘' §u ( ) 2 : )H z *ƒ   $(,048<@DHLPTX\`dhlptx|€„ˆŒ.fileþÿggzwrite.cgz_init gz_comp  gz_zero`  gzwrite gzputc€ gzputs€ 0 gzprintfp gzflush    )Ð  .text‰ #.data.bss.rdatae.xdataœ.pdata$3@malloc Q free gz_error deflate write _ strerror memset memcpy strlen l close z …gzwrite.part.0gzvprintfgzsetparamsgzclose_w__imp__errno__imp__vsnprintfdeflateInit2_deflateResetdeflateParamsdeflateEnd cackey-0.7.10/cackey.c0000644000000000000000000066605713563537513013176 0ustar rootroot#ifdef HAVE_CONFIG_H #include "config.h" #endif #ifdef HAVE_WINTYPES_H # include #endif #ifdef HAVE_PCSCLITE_H # include #endif #ifdef HAVE_WINSCARD_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_PTHREAD_H # include #endif #ifdef HAVE_LIMITS_H # include #endif #ifdef HAVE_STDIO_H # include #endif #define HAVE_ERRNO_H 1 #ifdef HAVE_ERRNO_H # include #endif #ifdef HAVE_ZLIB_H # ifdef HAVE_LIBZ # include # endif #else # ifdef HAVE_LIBZ # undef HAVE_LIBZ # endif #endif #ifdef CACKEY_DEBUG_SEARCH_SPEEDTEST # include #endif #define CK_PTR * #define CK_DEFINE_FUNCTION(returnType, name) returnType name #define CK_DECLARE_FUNCTION(returnType, name) returnType name #define CK_DECLARE_FUNCTION_POINTER(returnType, name) returnType (* name) #define CK_CALLBACK_FUNCTION(returnType, name) returnType (* name) #ifndef NULL_PTR # define NULL_PTR 0 #endif #include "pkcs11.h" #include "pkcs11n.h" #include "asn1-x509.h" #include "sha.h" #include "md5.h" #ifndef CACKEY_CRYPTOKI_VERSION_CODE # define CACKEY_CRYPTOKI_VERSION_CODE 0x021e00 #endif /* GSC-IS v2.1 Definitions */ /** Classes **/ #define GSCIS_CLASS_ISO7816 0x00 #define GSCIS_CLASS_GLOBAL_PLATFORM 0x80 /** Instructions **/ #define GSCIS_INSTR_GET_RESPONSE 0xC0 #define GSCIS_INSTR_READ_BINARY 0xB0 #define GSCIS_INSTR_UPDATE_BINARY 0xD6 #define GSCIS_INSTR_SELECT 0xA4 #define GSCIS_INSTR_EXTERNAL_AUTH 0x82 #define GSCIS_INSTR_GET_CHALLENGE 0x84 #define GSCIS_INSTR_INTERNAL_AUTH 0x88 #define GSCIS_INSTR_VERIFY 0x20 #define GSCIS_INSTR_CHANGE_REFERENCE 0x24 #define GSCIS_INSTR_SIGN 0x2A #define GSCIS_INSTR_GET_PROP 0x56 #define GSCIS_INSTR_GET_ACR 0x4C #define GSCIS_INSTR_READ_BUFFER 0x52 #define GSCIS_INSTR_SIGNDECRYPT 0x42 #define GSCIS_PARAM_SELECT_APPLET 0x04 /** Tags **/ /*** CCC Tags ***/ #define GSCIS_TAG_CARDID 0xF0 #define GSCIS_TAG_CCC_VER 0xF1 #define GSCIS_TAG_CCG_VER 0xF2 #define GSCIS_TAG_CARDURL 0xF3 #define GSCIS_TAG_PKCS15 0xF4 #define GSCIS_TAG_REG_DATA_MODEL 0xF5 #define GSCIS_TAG_ACR_TABLE 0xF6 #define GSCIS_TAG_CARD_APDU 0xF7 #define GSCIS_TAG_REDIRECTION 0xFA #define GSCIS_TAG_CT 0xFB #define GSCIS_TAG_ST 0xFC #define GSCIS_TAG_NEXTCCC 0xFD /*** General - EF 2200 ***/ #define GSCIS_TAG_FNAME 0x01 #define GSCIS_TAG_MNAME 0x02 #define GSCIS_TAG_LNAME 0x03 #define GSCIS_TAG_SUFFIX 0x04 #define GSCIS_TAG_GOVT_AGENCY 0x05 #define GSCIS_TAG_BUREAU 0x06 #define GSCIS_TAG_BUREAU_CODE 0x07 #define GSCIS_TAG_DEPT_CODE 0x08 #define GSCIS_TAG_TITLE 0x09 #define GSCIS_TAG_BUILDING 0x10 #define GSCIS_TAG_OFFICE_ADDR1 0x11 #define GSCIS_TAG_OFFICE_ADDR2 0x12 #define GSCIS_TAG_OFFICE_CITY 0x13 #define GSCIS_TAG_OFFICE_STATE 0x14 #define GSCIS_TAG_OFFICE_ZIP 0x15 #define GSCIS_TAG_OFFICE_COUNTRY 0x16 #define GSCIS_TAG_OFFICE_PHONE 0x17 #define GSCIS_TAG_OFFICE_PHONE_EXT 0x18 #define GSCIS_TAG_OFFICE_FAX 0x19 #define GSCIS_TAG_OFFICE_EMAIL 0x1A #define GSCIS_TAG_OFFICE_ROOM 0x1B #define GSCIS_TAG_NONGOV_AGENCY 0x1C #define GSCIS_TAG_SSN_DESIGNATOR 0x1D /*** PII - EF 2100 ***/ #define GSCIS_TAG_SSN 0x20 #define GSCIS_TAG_DOB 0x21 #define GSCIS_TAG_GENDER 0x22 /*** Login Information - EF 4000 ***/ #define GSCIS_TAG_USERID 0x40 #define GSCIS_TAG_DOMAIN 0x41 #define GSCIS_TAG_PASSWORD 0x42 /*** Card Information - EF 5000 ***/ #define GSCIS_TAG_ISSUERID 0x50 #define GSCIS_TAG_SERNO 0x51 #define GSCIS_TAG_ISSUE_DATE 0x52 #define GSCIS_TAG_EXPIRE_DATE 0x53 #define GSCIS_TAG_CARD_TYPE 0x54 #define GSCIS_TAG_SECURITY_CODE 0x57 #define GSCIS_TAG_CARDID_AID 0x58 /*** PIV Codes ***/ #define NISTSP800_73_3_INSTR_GET_DATA 0xCB #define NISTSP800_73_3_INSTR_GENAUTH 0x87 /*** PKI Information - EF 7000 ***/ #define GSCIS_TAG_CERTIFICATE 0x70 #define GSCIS_TAG_CERT_ISSUE_DATE 0x71 #define GSCIS_TAG_CERT_EXPIRE_DATE 0x72 /** Applet IDs **/ #define GSCIS_AID_CCC 0xA0, 0x00, 0x00, 0x01, 0x16, 0xDB, 0x00 #define GSCIS_AID_ID0 0xA0, 0x00, 0x00, 0x00, 0x79, 0x01, 0x00 #define NISTSP800_73_3_PIV_AID 0xA0, 0x00, 0x00, 0x03, 0x08, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00 /* PIV IDs */ /** Key Identifiers (NIST SP 800-78-3, Table 6-1 **/ #define NISTSP800_78_3_KEY_PIVAUTH 0x9A #define NISTSP800_78_3_KEY_SIGNATURE 0x9C #define NISTSP800_78_3_KEY_KEYMGT 0x9D #define NISTSP800_78_3_KEY_CARDAUTH 0x9E /** Algorithm Identifiers (NIST SP 800-78-3, Table 6-2 **/ #define NISTSP800_78_3_ALGO_RSA1024 0x06 #define NISTSP800_78_3_ALGO_RSA2048 0x07 /** Object Identifiers (NIST SP 800-73-3 Part 1, Table 2) **/ #define NISTSP800_73_3_OID_PIVAUTH 0x5F, 0xC1, 0x05 #define NISTSP800_73_3_OID_SIGNATURE 0x5F, 0xC1, 0x0A #define NISTSP800_73_3_OID_KEYMGT 0x5F, 0xC1, 0x0B #define NISTSP800_73_3_OID_CARDAUTH 0x5F, 0xC1, 0x01 /* Maximum size of data portion of APDUs */ /** Do not set this above 250 **/ #define CACKEY_APDU_MTU 250 /* ATR If not available */ #ifndef MAX_ATR_SIZE #define MAX_ATR_SIZE 1024 #endif #ifdef CACKEY_DEBUG # define CACKEY_DEBUG_MIN(a, b) ((a) < (b) ? (a) : (b)) # ifdef HAVE_TIME_H # include static time_t cackey_debug_start_time = 0; static unsigned long CACKEY_DEBUG_GETTIME(void) { if (cackey_debug_start_time == 0) { cackey_debug_start_time = time(NULL); } return(time(NULL) - cackey_debug_start_time); } # else static unsigned long CACKEY_DEBUG_GETTIME(void) { return(0); } # endif # define CACKEY_DEBUG_PRINTF(x...) { \ static char buf_user[4096] = {0}; \ snprintf(buf_user, sizeof(buf_user), x); \ buf_user[sizeof(buf_user) - 1] = '\0'; \ fprintf(cackey_debug_fd(), "[%lu]: %s():%i: %s\n", CACKEY_DEBUG_GETTIME(), __func__, __LINE__, buf_user); \ fflush(cackey_debug_fd()); \ } # define CACKEY_DEBUG_PRINTBUF(f, x, y) { \ static char buf_user[8192] = {0}, *buf_user_p, *buf_user_print; \ unsigned long buf_user_size; \ unsigned char *TMPBUF; \ unsigned long idx; \ int snprintf_ret; \ TMPBUF = (unsigned char *) (x); \ buf_user[0] = 0; \ buf_user[2] = 0; \ buf_user_p = buf_user; \ buf_user_size = sizeof(buf_user); \ for (idx = 0; idx < CACKEY_DEBUG_MIN((y), sizeof(buf_user)); idx++) { \ if (buf_user_size <= 0) { \ break; \ }; \ snprintf_ret = snprintf(buf_user_p, buf_user_size, ", %02x", TMPBUF[idx]); \ if (snprintf_ret <= 0) { \ break; \ }; \ buf_user_p += snprintf_ret; \ buf_user_size -= snprintf_ret; \ }; \ buf_user[sizeof(buf_user) - 1] = '\0'; \ buf_user_print = buf_user + 2; \ fprintf(cackey_debug_fd(), "[%lu]: %s():%i: %s (%s/%lu = {%s})\n", CACKEY_DEBUG_GETTIME(), __func__, __LINE__, f, #x, (unsigned long) (y), buf_user_print); \ fflush(cackey_debug_fd()); \ } # define free(x) { CACKEY_DEBUG_PRINTF("FREE(%p) (%s)", (void *) x, #x); free(x); } static FILE *cackey_debug_fd(void) { static FILE *fd = NULL; char *logfile; if (fd != NULL) { return(fd); } /* * Log to stderr initially so we can use debugging within * this function without getting into an infinite loop */ fd = stderr; logfile = getenv("CACKEY_DEBUG_LOGFILE"); if (logfile != NULL) { CACKEY_DEBUG_PRINTF("Found environment variable: %s", logfile); logfile = strchr(logfile, '='); if (logfile == NULL) { logfile = getenv("CACKEY_DEBUG_LOGFILE"); } else { logfile++; } } #ifdef CACKEY_DEBUG_LOGFILE if (logfile == NULL) { logfile = CACKEY_DEBUG_LOGFILE; } #endif if (logfile != NULL) { CACKEY_DEBUG_PRINTF("Found log file: %s", logfile); fd = fopen(logfile, "a"); } if (fd == NULL) { fd = stderr; } if (fd == stderr) { CACKEY_DEBUG_PRINTF("Returning stderr"); } else { CACKEY_DEBUG_PRINTF("Returning %p", (void *) fd); } return(fd); } static void *CACKEY_DEBUG_FUNC_MALLOC(size_t size, const char *func, int line) { void *retval; retval = malloc(size); fprintf(cackey_debug_fd(), "[%lu]: %s():%i: MALLOC() = %p\n", CACKEY_DEBUG_GETTIME(), func, line, retval); fflush(cackey_debug_fd()); return(retval); } static void *CACKEY_DEBUG_FUNC_REALLOC(void *ptr, size_t size, const char *func, int line) { void *retval; retval = realloc(ptr, size); if (retval != ptr) { fprintf(cackey_debug_fd(), "[%lu]: %s():%i: REALLOC(%p) = %p\n", CACKEY_DEBUG_GETTIME(), func, line, ptr, retval); fflush(cackey_debug_fd()); } if (retval == NULL) { CACKEY_DEBUG_PRINTF(" *** ERROR *** realloc returned NULL (size = %lu)", (unsigned long) size); } return(retval); } static char *CACKEY_DEBUG_FUNC_STRDUP(const char *ptr, const char *func, int line) { char *retval; retval = strdup(ptr); fprintf(cackey_debug_fd(), "[%lu]: %s():%i: STRDUP_MALLOC() = %p\n", CACKEY_DEBUG_GETTIME(), func, line, retval); fflush(cackey_debug_fd()); return(retval); } static const char *CACKEY_DEBUG_FUNC_TAG_TO_STR(unsigned char tag) { switch (tag) { case GSCIS_TAG_CARDID: return("GSCIS_TAG_CARDID"); case GSCIS_TAG_CCC_VER: return("GSCIS_TAG_CCC_VER"); case GSCIS_TAG_CCG_VER: return("GSCIS_TAG_CCG_VER"); case GSCIS_TAG_CARDURL: return("GSCIS_TAG_CARDURL"); case GSCIS_TAG_PKCS15: return("GSCIS_TAG_PKCS15"); case GSCIS_TAG_REG_DATA_MODEL: return("GSCIS_TAG_REG_DATA_MODEL"); case GSCIS_TAG_ACR_TABLE: return("GSCIS_TAG_ACR_TABLE"); case GSCIS_TAG_CARD_APDU: return("GSCIS_TAG_CARD_APDU"); case GSCIS_TAG_REDIRECTION: return("GSCIS_TAG_REDIRECTION"); case GSCIS_TAG_CT: return("GSCIS_TAG_CT"); case GSCIS_TAG_ST: return("GSCIS_TAG_ST"); case GSCIS_TAG_NEXTCCC: return("GSCIS_TAG_NEXTCCC"); case GSCIS_TAG_FNAME: return("GSCIS_TAG_FNAME"); case GSCIS_TAG_MNAME: return("GSCIS_TAG_MNAME"); case GSCIS_TAG_LNAME: return("GSCIS_TAG_LNAME"); case GSCIS_TAG_SUFFIX: return("GSCIS_TAG_SUFFIX"); case GSCIS_TAG_GOVT_AGENCY: return("GSCIS_TAG_GOVT_AGENCY"); case GSCIS_TAG_BUREAU: return("GSCIS_TAG_BUREAU"); case GSCIS_TAG_BUREAU_CODE: return("GSCIS_TAG_BUREAU_CODE"); case GSCIS_TAG_DEPT_CODE: return("GSCIS_TAG_DEPT_CODE"); case GSCIS_TAG_TITLE: return("GSCIS_TAG_TITLE"); case GSCIS_TAG_BUILDING: return("GSCIS_TAG_BUILDING"); case GSCIS_TAG_OFFICE_ADDR1: return("GSCIS_TAG_OFFICE_ADDR1"); case GSCIS_TAG_OFFICE_ADDR2: return("GSCIS_TAG_OFFICE_ADDR2"); case GSCIS_TAG_OFFICE_CITY: return("GSCIS_TAG_OFFICE_CITY"); case GSCIS_TAG_OFFICE_STATE: return("GSCIS_TAG_OFFICE_STATE"); case GSCIS_TAG_OFFICE_ZIP: return("GSCIS_TAG_OFFICE_ZIP"); case GSCIS_TAG_OFFICE_COUNTRY: return("GSCIS_TAG_OFFICE_COUNTRY"); case GSCIS_TAG_OFFICE_PHONE: return("GSCIS_TAG_OFFICE_PHONE"); case GSCIS_TAG_OFFICE_PHONE_EXT: return("GSCIS_TAG_OFFICE_PHONE_EXT"); case GSCIS_TAG_OFFICE_FAX: return("GSCIS_TAG_OFFICE_FAX"); case GSCIS_TAG_OFFICE_EMAIL: return("GSCIS_TAG_OFFICE_EMAIL"); case GSCIS_TAG_OFFICE_ROOM: return("GSCIS_TAG_OFFICE_ROOM"); case GSCIS_TAG_NONGOV_AGENCY: return("GSCIS_TAG_NONGOV_AGENCY"); case GSCIS_TAG_SSN_DESIGNATOR: return("GSCIS_TAG_SSN_DESIGNATOR"); case GSCIS_TAG_SSN: return("GSCIS_TAG_SSN"); case GSCIS_TAG_DOB: return("GSCIS_TAG_DOB"); case GSCIS_TAG_GENDER: return("GSCIS_TAG_GENDER"); case GSCIS_TAG_USERID: return("GSCIS_TAG_USERID"); case GSCIS_TAG_DOMAIN: return("GSCIS_TAG_DOMAIN"); case GSCIS_TAG_PASSWORD: return("GSCIS_TAG_PASSWORD"); case GSCIS_TAG_ISSUERID: return("GSCIS_TAG_ISSUERID"); case GSCIS_TAG_SERNO: return("GSCIS_TAG_SERNO"); case GSCIS_TAG_ISSUE_DATE: return("GSCIS_TAG_ISSUE_DATE"); case GSCIS_TAG_EXPIRE_DATE: return("GSCIS_TAG_EXPIRE_DATE"); case GSCIS_TAG_CARD_TYPE: return("GSCIS_TAG_CARD_TYPE"); case GSCIS_TAG_SECURITY_CODE: return("GSCIS_TAG_SECURITY_CODE"); case GSCIS_TAG_CARDID_AID: return("GSCIS_TAG_CARDID_AID"); case GSCIS_TAG_CERTIFICATE: return("GSCIS_TAG_CERTIFICATE"); case GSCIS_TAG_CERT_ISSUE_DATE: return("GSCIS_TAG_CERT_ISSUE_DATE"); case GSCIS_TAG_CERT_EXPIRE_DATE: return("GSCIS_TAG_CERT_EXPIRE_DATE"); } return("UNKNOWN"); } static const char *CACKEY_DEBUG_FUNC_SCARDERR_TO_STR(LONG retcode) { switch (retcode) { case SCARD_S_SUCCESS: return("SCARD_S_SUCCESS"); case SCARD_E_CANCELLED: return("SCARD_E_CANCELLED"); case SCARD_E_CANT_DISPOSE: return("SCARD_E_CANT_DISPOSE"); case SCARD_E_INSUFFICIENT_BUFFER: return("SCARD_E_INSUFFICIENT_BUFFER"); case SCARD_E_INVALID_ATR: return("SCARD_E_INVALID_ATR"); case SCARD_E_INVALID_HANDLE: return("SCARD_E_INVALID_HANDLE"); case SCARD_E_INVALID_PARAMETER: return("SCARD_E_INVALID_PARAMETER"); case SCARD_E_INVALID_TARGET: return("SCARD_E_INVALID_TARGET"); case SCARD_E_INVALID_VALUE: return("SCARD_E_INVALID_VALUE"); case SCARD_E_NO_MEMORY: return("SCARD_E_NO_MEMORY"); case SCARD_E_UNKNOWN_READER: return("SCARD_E_UNKNOWN_READER"); case SCARD_E_TIMEOUT: return("SCARD_E_TIMEOUT"); case SCARD_E_SHARING_VIOLATION: return("SCARD_E_SHARING_VIOLATION"); case SCARD_E_NO_SMARTCARD: return("SCARD_E_NO_SMARTCARD"); case SCARD_E_UNKNOWN_CARD: return("SCARD_E_UNKNOWN_CARD"); case SCARD_E_PROTO_MISMATCH: return("SCARD_E_PROTO_MISMATCH"); case SCARD_E_NOT_READY: return("SCARD_E_NOT_READY"); case SCARD_E_SYSTEM_CANCELLED: return("SCARD_E_SYSTEM_CANCELLED"); case SCARD_E_NOT_TRANSACTED: return("SCARD_E_NOT_TRANSACTED"); case SCARD_E_READER_UNAVAILABLE: return("SCARD_E_READER_UNAVAILABLE"); case SCARD_W_UNSUPPORTED_CARD: return("SCARD_W_UNSUPPORTED_CARD"); case SCARD_W_UNRESPONSIVE_CARD: return("SCARD_W_UNRESPONSIVE_CARD"); case SCARD_W_UNPOWERED_CARD: return("SCARD_W_UNPOWERED_CARD"); case SCARD_W_RESET_CARD: return("SCARD_W_RESET_CARD"); case SCARD_W_REMOVED_CARD: return("SCARD_W_REMOVED_CARD"); case SCARD_E_PCI_TOO_SMALL: return("SCARD_E_PCI_TOO_SMALL"); case SCARD_E_READER_UNSUPPORTED: return("SCARD_E_READER_UNSUPPORTED"); case SCARD_E_DUPLICATE_READER: return("SCARD_E_DUPLICATE_READER"); case SCARD_E_CARD_UNSUPPORTED: return("SCARD_E_CARD_UNSUPPORTED"); case SCARD_E_NO_SERVICE: return("SCARD_E_NO_SERVICE"); case SCARD_E_SERVICE_STOPPED: return("SCARD_E_SERVICE_STOPPED"); case SCARD_E_UNSUPPORTED_FEATURE: return("SCARD_E_UNSUPPORTED_FEATURE"); #ifdef SCARD_W_INSERTED_CARD case SCARD_W_INSERTED_CARD: return("SCARD_W_INSERTED_CARD"); #endif #ifdef SCARD_E_NO_READERS_AVAILABLE case SCARD_E_NO_READERS_AVAILABLE: return("SCARD_E_NO_READERS_AVAILABLE"); #endif } return("UNKNOWN"); } static const char *CACKEY_DEBUG_FUNC_OBJID_TO_STR(uint16_t objid) { switch (objid) { case 0x2000: return("CACKEY_TLV_OBJID_GENERALINFO"); case 0x2100: return("CACKEY_TLV_OBJID_PROPERSONALINFO"); case 0x3000: return("CACKEY_TLV_OBJID_ACCESSCONTROL"); case 0x4000: return("CACKEY_TLV_OBJID_LOGIN"); case 0x5000: return("CACKEY_TLV_OBJID_CARDINFO"); case 0x6000: return("CACKEY_TLV_OBJID_BIOMETRICS"); case 0x7000: return("CACKEY_TLV_OBJID_DIGITALSIGCERT"); case 0x0200: return("CACKEY_TLV_OBJID_CAC_PERSON"); case 0x0202: return("CACKEY_TLV_OBJID_CAC_BENEFITS"); case 0x0203: return("CACKEY_TLV_OBJID_CAC_OTHERBENEFITS"); case 0x0201: return("CACKEY_TLV_OBJID_CAC_PERSONNEL"); case 0x02FE: return("CACKEY_TLV_OBJID_CAC_PKICERT"); } return("UNKNOWN"); } static const char *CACKEY_DEBUG_FUNC_APPTYPE_TO_STR(uint8_t apptype) { switch (apptype) { case 0x00: return("NONE"); case 0x01: return("CACKEY_TLV_APP_GENERIC"); case 0x02: return("CACKEY_TLV_APP_SKI"); case 0x03: return("CACKEY_TLV_APP_GENERIC | CACKEY_TLV_APP_SKI"); case 0x04: return("CACKEY_TLV_APP_PKI"); case 0x05: return("CACKEY_TLV_APP_GENERIC | CACKEY_TLV_APP_PKI"); case 0x06: return("CACKEY_TLV_APP_SKI | CACKEY_TLV_APP_PKI"); case 0x07: return("CACKEY_TLV_APP_GENERIC | CACKEY_TLV_APP_SKI | CACKEY_TLV_APP_PKI"); } return("INVALID"); } static const char *CACKEY_DEBUG_FUNC_ATTRIBUTE_TO_STR(CK_ATTRIBUTE_TYPE attr) { switch (attr) { case CKA_CLASS: return("CKA_CLASS"); case CKA_TOKEN: return("CKA_TOKEN"); case CKA_PRIVATE: return("CKA_PRIVATE"); case CKA_LABEL: return("CKA_LABEL"); case CKA_APPLICATION: return("CKA_APPLICATION"); case CKA_VALUE: return("CKA_VALUE"); case CKA_OBJECT_ID: return("CKA_OBJECT_ID"); case CKA_CERTIFICATE_TYPE: return("CKA_CERTIFICATE_TYPE"); case CKA_ISSUER: return("CKA_ISSUER"); case CKA_SERIAL_NUMBER: return("CKA_SERIAL_NUMBER"); case CKA_AC_ISSUER: return("CKA_AC_ISSUER"); case CKA_OWNER: return("CKA_OWNER"); case CKA_ATTR_TYPES: return("CKA_ATTR_TYPES"); case CKA_TRUSTED: return("CKA_TRUSTED"); case CKA_KEY_TYPE: return("CKA_KEY_TYPE"); case CKA_SUBJECT: return("CKA_SUBJECT"); case CKA_ID: return("CKA_ID"); case CKA_SENSITIVE: return("CKA_SENSITIVE"); case CKA_ENCRYPT: return("CKA_ENCRYPT"); case CKA_DECRYPT: return("CKA_DECRYPT"); case CKA_WRAP: return("CKA_WRAP"); case CKA_UNWRAP: return("CKA_UNWRAP"); case CKA_SIGN: return("CKA_SIGN"); case CKA_SIGN_RECOVER: return("CKA_SIGN_RECOVER"); case CKA_VERIFY: return("CKA_VERIFY"); case CKA_VERIFY_RECOVER: return("CKA_VERIFY_RECOVER"); case CKA_DERIVE: return("CKA_DERIVE"); case CKA_START_DATE: return("CKA_START_DATE"); case CKA_END_DATE: return("CKA_END_DATE"); case CKA_MODULUS: return("CKA_MODULUS"); case CKA_MODULUS_BITS: return("CKA_MODULUS_BITS"); case CKA_PUBLIC_EXPONENT: return("CKA_PUBLIC_EXPONENT"); case CKA_PRIVATE_EXPONENT: return("CKA_PRIVATE_EXPONENT"); case CKA_PRIME_1: return("CKA_PRIME_1"); case CKA_PRIME_2: return("CKA_PRIME_2"); case CKA_EXPONENT_1: return("CKA_EXPONENT_1"); case CKA_EXPONENT_2: return("CKA_EXPONENT_2"); case CKA_COEFFICIENT: return("CKA_COEFFICIENT"); case CKA_PRIME: return("CKA_PRIME"); case CKA_SUBPRIME: return("CKA_SUBPRIME"); case CKA_BASE: return("CKA_BASE"); case CKA_PRIME_BITS: return("CKA_PRIME_BITS"); case CKA_SUB_PRIME_BITS: return("CKA_SUB_PRIME_BITS"); case CKA_VALUE_BITS: return("CKA_VALUE_BITS"); case CKA_VALUE_LEN: return("CKA_VALUE_LEN"); case CKA_EXTRACTABLE: return("CKA_EXTRACTABLE"); case CKA_LOCAL: return("CKA_LOCAL"); case CKA_NEVER_EXTRACTABLE: return("CKA_NEVER_EXTRACTABLE"); case CKA_ALWAYS_SENSITIVE: return("CKA_ALWAYS_SENSITIVE"); case CKA_KEY_GEN_MECHANISM: return("CKA_KEY_GEN_MECHANISM"); case CKA_MODIFIABLE: return("CKA_MODIFIABLE"); case CKA_ECDSA_PARAMS: return("CKA_ECDSA_PARAMS"); case CKA_EC_POINT: return("CKA_EC_POINT"); case CKA_SECONDARY_AUTH: return("CKA_SECONDARY_AUTH"); case CKA_AUTH_PIN_FLAGS: return("CKA_AUTH_PIN_FLAGS"); case CKA_HW_FEATURE_TYPE: return("CKA_HW_FEATURE_TYPE"); case CKA_RESET_ON_INIT: return("CKA_RESET_ON_INIT"); case CKA_HAS_RESET: return("CKA_HAS_RESET"); case CKA_VENDOR_DEFINED: return("CKA_VENDOR_DEFINED"); } return("UNKNOWN"); } # define malloc(x) CACKEY_DEBUG_FUNC_MALLOC(x, __func__, __LINE__) # define realloc(x, y) CACKEY_DEBUG_FUNC_REALLOC(x, y, __func__, __LINE__) # ifdef strdup # undef strdup # endif # define strdup(x) CACKEY_DEBUG_FUNC_STRDUP(x, __func__, __LINE__) #else # define CACKEY_DEBUG_PRINTF(x...) /**/ # define CACKEY_DEBUG_PRINTBUF(f, x, y) /**/ # define CACKEY_DEBUG_FUNC_TAG_TO_STR(x) "DEBUG_DISABLED" # define CACKEY_DEBUG_FUNC_SCARDERR_TO_STR(x) "DEBUG_DISABLED" # define CACKEY_DEBUG_FUNC_OBJID_TO_STR(x) "DEBUG_DISABLED" # define CACKEY_DEBUG_FUNC_APPTYPE_TO_STR(x) "DEBUG_DISABLED" # define CACKEY_DEBUG_FUNC_ATTRIBUTE_TO_STR(x) "DEBUG_DISABLED" #endif /* * Include these source files in this translation unit so that we can bind to * functions and not include any symbols in the output shared object. */ #include "asn1-x509.c" #include "sha1.c" #include "md5.c" typedef enum { CACKEY_ID_TYPE_ERROR, CACKEY_ID_TYPE_UNKNOWN, CACKEY_ID_TYPE_CAC, CACKEY_ID_TYPE_PIV, CACKEY_ID_TYPE_CERT_ONLY } cackey_pcsc_id_type; struct cackey_pcsc_identity { cackey_pcsc_id_type id_type; size_t certificate_len; unsigned char *certificate; ssize_t keysize; union { struct { unsigned char applet[7]; uint16_t file; } cac; struct { unsigned char key_id; char label[32]; } piv; } card; }; struct cackey_identity { struct cackey_pcsc_identity *pcsc_identity; CK_ATTRIBUTE *attributes; CK_ULONG attributes_count; }; struct cackey_session { int active; CK_SLOT_ID slotID; CK_STATE state; CK_FLAGS flags; CK_ULONG ulDeviceError; CK_VOID_PTR pApplication; CK_NOTIFY Notify; struct cackey_identity *identities; unsigned long identities_count; int search_active; CK_ATTRIBUTE_PTR search_query; CK_ULONG search_query_count; unsigned long search_curr_id; int sign_active; CK_MECHANISM_TYPE sign_mechanism; CK_BYTE_PTR sign_buf; unsigned long sign_buflen; unsigned long sign_bufused; struct cackey_identity *sign_identity; int decrypt_active; CK_MECHANISM_TYPE decrypt_mechanism; CK_VOID_PTR decrypt_mech_parm; CK_ULONG decrypt_mech_parmlen; struct cackey_identity *decrypt_identity; }; struct cackey_slot { int active; int internal; char *pcsc_reader; int pcsc_card_connected; SCARDHANDLE pcsc_card; int transaction_depth; int transaction_need_hw_lock; int slot_reset; CK_FLAGS token_flags; unsigned char *label; DWORD protocol; unsigned int cached_certs_count; struct cackey_pcsc_identity *cached_certs; cackey_pcsc_id_type id_type_hint; }; typedef enum { CACKEY_TLV_APP_GENERIC = 0x01, CACKEY_TLV_APP_SKI = 0x02, CACKEY_TLV_APP_PKI = 0x04 } cackey_tlv_apptype; typedef enum { CACKEY_TLV_OBJID_GENERALINFO = 0x2000, CACKEY_TLV_OBJID_PROPERSONALINFO = 0x2100, CACKEY_TLV_OBJID_ACCESSCONTROL = 0x3000, CACKEY_TLV_OBJID_LOGIN = 0x4000, CACKEY_TLV_OBJID_CARDINFO = 0x5000, CACKEY_TLV_OBJID_BIOMETRICS = 0x6000, CACKEY_TLV_OBJID_DIGITALSIGCERT = 0x7000, CACKEY_TLV_OBJID_CAC_PERSON = 0x0200, CACKEY_TLV_OBJID_CAC_BENEFITS = 0x0202, CACKEY_TLV_OBJID_CAC_OTHERBENEFITS = 0x0203, CACKEY_TLV_OBJID_CAC_PERSONNEL = 0x0201, CACKEY_TLV_OBJID_CAC_PKICERT = 0x02FE } cackey_tlv_objectid; typedef enum { CACKEY_PCSC_S_TOKENPRESENT = 1, CACKEY_PCSC_S_OK = 0, CACKEY_PCSC_E_GENERIC = -1, CACKEY_PCSC_E_BADPIN = -2, CACKEY_PCSC_E_LOCKED = -3, CACKEY_PCSC_E_NEEDLOGIN = -4, CACKEY_PCSC_E_TOKENABSENT = -6, CACKEY_PCSC_E_RETRY = -7, CACKEY_PCSC_E_NODATA = -8 } cackey_ret; struct cackey_tlv_cardurl { unsigned char rid[5]; cackey_tlv_apptype apptype; cackey_tlv_objectid objectid; cackey_tlv_objectid appid; unsigned char pinid; }; struct cackey_tlv_entity; struct cackey_tlv_entity { uint8_t tag; size_t length; union { void *value; struct cackey_tlv_cardurl *value_cardurl; uint8_t value_byte; }; struct cackey_tlv_entity *_next; }; /* CACKEY Global Handles */ static void *cackey_biglock = NULL; static struct cackey_session cackey_sessions[128]; static struct cackey_slot cackey_slots[128]; static int cackey_initialized = 0; static int cackey_biglock_init = 0; CK_C_INITIALIZE_ARGS cackey_args; /** Extra certificates to include in token **/ struct cackey_pcsc_identity extra_certs[] = { #include "cackey_builtin_certs.h" }; #define CACKEY_MACRO_DEFAULT_XSTR(str) CACKEY_MACRO_DEFAULT_STR(str) #define CACKEY_MACRO_DEFAULT_STR(str) #str /* Protected Authentication Path command */ static char *cackey_pin_command = NULL; /* Reader Exclusion or Include-only */ static char *cackey_readers_include_only = NULL; static char *cackey_readers_exclude = NULL; /* PCSC Global Handles */ static LPSCARDCONTEXT cackey_pcsc_handle = NULL; static unsigned long cackey_getversion(void) { static unsigned long retval = 255; unsigned long major = 0; unsigned long minor = 0; char *major_str = NULL; char *minor_str = NULL; CACKEY_DEBUG_PRINTF("Called."); if (retval != 255) { CACKEY_DEBUG_PRINTF("Returning 0x%lx (cached).", retval); return(retval); } retval = 0; #ifdef PACKAGE_VERSION major_str = PACKAGE_VERSION; if (major_str) { major = strtoul(major_str, &minor_str, 10); if (minor_str) { minor = strtoul(minor_str + 1, NULL, 10); } } retval = (major << 16) | (minor << 8); #endif CACKEY_DEBUG_PRINTF("Returning 0x%lx", retval); return(retval); } /* PC/SC Related Functions */ /* * SYNPOSIS * void cackey_slots_disconnect_all(int unitialize_all_readers); * * ARGUMENTS * int unitialize_all_readers Free the "pcsc_reader" object associated with * each slot (boolean) * * RETURN VALUE * None * * NOTES * This function disconnects from all cards. * */ static void cackey_slots_disconnect_all(int unitialize_all_readers) { uint32_t idx; CACKEY_DEBUG_PRINTF("Called."); for (idx = 0; idx < (sizeof(cackey_slots) / sizeof(cackey_slots[0])); idx++) { if (cackey_slots[idx].internal) { /* Skip internal slots */ continue; } if (cackey_slots[idx].pcsc_card_connected) { CACKEY_DEBUG_PRINTF("SCardDisconnect(%lu) called", (unsigned long) idx); SCardDisconnect(cackey_slots[idx].pcsc_card, SCARD_LEAVE_CARD); } if (cackey_slots[idx].label) { free(cackey_slots[idx].label); cackey_slots[idx].label = NULL; } if (unitialize_all_readers || !cackey_slots[idx].active) { if (cackey_slots[idx].pcsc_reader) { free(cackey_slots[idx].pcsc_reader); cackey_slots[idx].pcsc_reader = NULL; } cackey_slots[idx].transaction_need_hw_lock = 0; cackey_slots[idx].transaction_depth = 0; cackey_slots[idx].id_type_hint = CACKEY_ID_TYPE_UNKNOWN; } else { if (cackey_slots[idx].transaction_depth > 0) { cackey_slots[idx].transaction_need_hw_lock = 1; } } cackey_slots[idx].pcsc_card_connected = 0; if (cackey_slots[idx].active) { CACKEY_DEBUG_PRINTF("Marking active slot %lu as being reset", (unsigned long) idx); cackey_slots[idx].slot_reset = 1; } } CACKEY_DEBUG_PRINTF("Returning"); return; } /* * SYNPOSIS * cackey_ret cackey_pcsc_connect(void); * * ARGUMENTS * None * * RETURN VALUE * CACKEY_PCSC_S_OK On success * CACKEY_PCSC_E_GENERIC On error * * NOTES * This function connects to the PC/SC Connection Manager and updates the * global handle. * */ static cackey_ret cackey_pcsc_connect(void) { LONG scard_est_context_ret; #ifdef HAVE_SCARDISVALIDCONTEXT LONG scard_isvalid_ret; #endif CACKEY_DEBUG_PRINTF("Called."); if (cackey_pcsc_handle == NULL) { cackey_pcsc_handle = malloc(sizeof(*cackey_pcsc_handle)); if (cackey_pcsc_handle == NULL) { CACKEY_DEBUG_PRINTF("Call to malloc() failed, returning in failure"); cackey_slots_disconnect_all(0); return(CACKEY_PCSC_E_GENERIC); } CACKEY_DEBUG_PRINTF("SCardEstablishContext() called"); scard_est_context_ret = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, cackey_pcsc_handle); if (scard_est_context_ret != SCARD_S_SUCCESS) { CACKEY_DEBUG_PRINTF("Call to SCardEstablishContext failed (returned %s/%li), returning in failure", CACKEY_DEBUG_FUNC_SCARDERR_TO_STR(scard_est_context_ret), (long) scard_est_context_ret); free(cackey_pcsc_handle); cackey_pcsc_handle = NULL; cackey_slots_disconnect_all(0); return(CACKEY_PCSC_E_GENERIC); } } #ifdef HAVE_SCARDISVALIDCONTEXT CACKEY_DEBUG_PRINTF("SCardIsValidContext() called"); scard_isvalid_ret = SCardIsValidContext(*cackey_pcsc_handle); if (scard_isvalid_ret != SCARD_S_SUCCESS) { CACKEY_DEBUG_PRINTF("Handle has become invalid (SCardIsValidContext = %s/%li), trying to re-establish...", CACKEY_DEBUG_FUNC_SCARDERR_TO_STR(scard_isvalid_ret), (long) scard_isvalid_ret); CACKEY_DEBUG_PRINTF("SCardEstablishContext() called"); scard_est_context_ret = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, cackey_pcsc_handle); if (scard_est_context_ret != SCARD_S_SUCCESS) { CACKEY_DEBUG_PRINTF("Call to SCardEstablishContext failed (returned %s/%li), returning in failure", CACKEY_DEBUG_FUNC_SCARDERR_TO_STR(scard_est_context_ret), (long) scard_est_context_ret); free(cackey_pcsc_handle); cackey_pcsc_handle = NULL; cackey_slots_disconnect_all(0); return(CACKEY_PCSC_E_GENERIC); } CACKEY_DEBUG_PRINTF("Handle has been re-established"); } #endif CACKEY_DEBUG_PRINTF("Sucessfully connected to PC/SC, returning in success"); return(CACKEY_PCSC_S_OK); } /* * SYNPOSIS * cackey_ret cackey_pcsc_disconnect(void); * * ARGUMENTS * None * * RETURN VALUE * CACKEY_PCSC_S_OK On success * CACKEY_PCSC_E_GENERIC On error * * NOTES * This function disconnects from the PC/SC Connection manager and updates * the global handle. * */ static cackey_ret cackey_pcsc_disconnect(void) { LONG scard_rel_context_ret; CACKEY_DEBUG_PRINTF("Called."); if (cackey_pcsc_handle == NULL) { return(CACKEY_PCSC_S_OK); } scard_rel_context_ret = SCardReleaseContext(*cackey_pcsc_handle); if (cackey_pcsc_handle) { free(cackey_pcsc_handle); cackey_pcsc_handle = NULL; } if (scard_rel_context_ret != SCARD_S_SUCCESS) { return(CACKEY_PCSC_E_GENERIC); } cackey_slots_disconnect_all(0); return(CACKEY_PCSC_S_OK); } /* * SYNPOSIS * void cackey_mark_slot_reset(struct cackey_slot *slot); * * ARGUMENTS * None * * RETURN VALUE * None * * NOTES * This function marks a slot has having been reset, to later be cleaned up. * Cleanup only happens when a PKCS#11 client calls C_FindObjectsInit. * */ static void cackey_mark_slot_reset(struct cackey_slot *slot) { struct cackey_pcsc_identity *pcsc_identities; unsigned long num_certs; if (slot == NULL) { return; } CACKEY_DEBUG_PRINTF("Called."); if (slot->pcsc_card_connected) { SCardDisconnect(slot->pcsc_card, SCARD_LEAVE_CARD); } slot->slot_reset = 1; slot->pcsc_card_connected = 0; if (cackey_pin_command == NULL) { slot->token_flags = CKF_LOGIN_REQUIRED; } else { slot->token_flags = 0; } return; } /* * SYNPOSIS * LONG cackey_reconnect_card(struct cackey_slot *slot, DWORD default_protocol); * * ARGUMENTS * cackey_slot *slot * Slot to send commands to * * DWORD default_protocol * Protocol to attempt first * * RETURN VALUE * The return value from SCardReconnect() * * NOTES * This function is a wrapper around SCardReconnect() * * The SCardReconnect() function call will be called first with the * dwPreferredProtocols of "default_protocol". If that call returns * SCARD_E_PROTO_MISMATCH try again with a protocol of T=0, and failing * that T=1. * */ static LONG cackey_reconnect_card(struct cackey_slot *slot, DWORD default_protocol) { DWORD selected_protocol; LONG scard_conn_ret; selected_protocol = 0; scard_conn_ret = SCardReconnect(slot->pcsc_card, SCARD_SHARE_SHARED, default_protocol, SCARD_RESET_CARD, &selected_protocol); if (scard_conn_ret == SCARD_E_PROTO_MISMATCH) { CACKEY_DEBUG_PRINTF("SCardReconnect() returned SCARD_E_PROTO_MISMATCH, trying with just T=0") scard_conn_ret = SCardReconnect(slot->pcsc_card, SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0, SCARD_RESET_CARD, &selected_protocol); if (scard_conn_ret == SCARD_E_PROTO_MISMATCH) { CACKEY_DEBUG_PRINTF("SCardReconnect() returned SCARD_E_PROTO_MISMATCH, trying with just T=1") scard_conn_ret = SCardReconnect(slot->pcsc_card, SCARD_SHARE_SHARED, SCARD_PROTOCOL_T1, SCARD_RESET_CARD, &selected_protocol); } } if (scard_conn_ret == SCARD_S_SUCCESS) { slot->protocol = selected_protocol; } return(scard_conn_ret); } /* * SYNPOSIS * cackey_ret cackey_connect_card(struct cackey_slot *slot); * * ARGUMENTS * cackey_slot *slot * Slot to send commands to * * RETURN VALUE * CACKEY_PCSC_S_OK On success * CACKEY_PCSC_E_GENERIC On error * * NOTES * None * */ static cackey_ret cackey_connect_card(struct cackey_slot *slot) { cackey_ret pcsc_connect_ret; DWORD protocol; LONG scard_conn_ret; CACKEY_DEBUG_PRINTF("Called."); if (!slot) { CACKEY_DEBUG_PRINTF("Invalid slot specified, returning in failure"); return(CACKEY_PCSC_E_GENERIC); } pcsc_connect_ret = cackey_pcsc_connect(); if (pcsc_connect_ret != CACKEY_PCSC_S_OK) { CACKEY_DEBUG_PRINTF("Connection to PC/SC failed, returning in failure"); return(CACKEY_PCSC_E_GENERIC); } /* Connect to reader, if needed */ if (!slot->pcsc_card_connected) { CACKEY_DEBUG_PRINTF("SCardConnect(%s) called for slot %p", slot->pcsc_reader, slot); scard_conn_ret = SCardConnect(*cackey_pcsc_handle, slot->pcsc_reader, SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1, &slot->pcsc_card, &protocol); if (scard_conn_ret == SCARD_E_PROTO_MISMATCH) { CACKEY_DEBUG_PRINTF("SCardConnect() returned SCARD_E_PROTO_MISMATCH, trying with just T=0") scard_conn_ret = SCardConnect(*cackey_pcsc_handle, slot->pcsc_reader, SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0, &slot->pcsc_card, &protocol); if (scard_conn_ret == SCARD_E_PROTO_MISMATCH) { CACKEY_DEBUG_PRINTF("SCardConnect() returned SCARD_E_PROTO_MISMATCH, trying with just T=1") scard_conn_ret = SCardConnect(*cackey_pcsc_handle, slot->pcsc_reader, SCARD_SHARE_SHARED, SCARD_PROTOCOL_T1, &slot->pcsc_card, &protocol); } } if (scard_conn_ret == SCARD_W_UNPOWERED_CARD) { CACKEY_DEBUG_PRINTF("SCardConnect() returned SCARD_W_UNPOWERED_CARD, trying to re-connect..."); scard_conn_ret = SCardConnect(*cackey_pcsc_handle, slot->pcsc_reader, SCARD_SHARE_DIRECT, SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1, &slot->pcsc_card, &protocol); if (scard_conn_ret == SCARD_E_PROTO_MISMATCH) { CACKEY_DEBUG_PRINTF("SCardConnect() returned SCARD_E_PROTO_MISMATCH, trying with just T=0") scard_conn_ret = SCardConnect(*cackey_pcsc_handle, slot->pcsc_reader, SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0, &slot->pcsc_card, &protocol); if (scard_conn_ret == SCARD_E_PROTO_MISMATCH) { CACKEY_DEBUG_PRINTF("SCardConnect() returned SCARD_E_PROTO_MISMATCH, trying with just T=1") scard_conn_ret = SCardConnect(*cackey_pcsc_handle, slot->pcsc_reader, SCARD_SHARE_SHARED, SCARD_PROTOCOL_T1, &slot->pcsc_card, &protocol); } } scard_conn_ret = cackey_reconnect_card(slot, protocol); } if (scard_conn_ret == SCARD_E_NO_SERVICE) { CACKEY_DEBUG_PRINTF("SCardConnect() returned SCARD_E_NO_SERVICE -- which could mean our handle is invalid, will try to reconnect to PC/SC service"); cackey_pcsc_disconnect(); cackey_pcsc_connect(); cackey_mark_slot_reset(slot); return(cackey_connect_card(slot)); } if (scard_conn_ret != SCARD_S_SUCCESS) { CACKEY_DEBUG_PRINTF("Connection to card failed, returning in failure (SCardConnect() = %s/%li)", CACKEY_DEBUG_FUNC_SCARDERR_TO_STR(scard_conn_ret), (long) scard_conn_ret); return(CACKEY_PCSC_E_GENERIC); } slot->pcsc_card_connected = 1; slot->transaction_depth = 0; slot->transaction_need_hw_lock = 0; slot->protocol = protocol; } CACKEY_DEBUG_PRINTF("Returning in success"); return(CACKEY_PCSC_S_OK); } /* * SYNPOSIS * cackey_ret cackey_begin_transaction(struct cackey_slot *slot); * * ARGUMENTS * cackey_slot *slot * Slot to send commands to * * RETURN VALUE * CACKEY_PCSC_S_OK On success * CACKEY_PCSC_E_GENERIC On error * * NOTES * The transaction should be terminated using "cackey_end_transaction" * */ static cackey_ret cackey_begin_transaction(struct cackey_slot *slot) { cackey_ret cackey_conn_ret; LONG scard_trans_ret; CACKEY_DEBUG_PRINTF("Called."); cackey_conn_ret = cackey_connect_card(slot); if (cackey_conn_ret != CACKEY_PCSC_S_OK) { CACKEY_DEBUG_PRINTF("Unable to connect to card, returning in error"); return(CACKEY_PCSC_E_GENERIC); } slot->transaction_depth++; if (slot->transaction_depth > 1 && !slot->transaction_need_hw_lock) { CACKEY_DEBUG_PRINTF("Already in a transaction, performing no action (new depth = %i)", slot->transaction_depth); return(CACKEY_PCSC_S_OK); } slot->transaction_need_hw_lock = 0; scard_trans_ret = SCardBeginTransaction(slot->pcsc_card); if (scard_trans_ret != SCARD_S_SUCCESS) { CACKEY_DEBUG_PRINTF("Unable to begin transaction, returning in error"); return(CACKEY_PCSC_E_GENERIC); } CACKEY_DEBUG_PRINTF("Sucessfully began transaction on slot (%s)", slot->pcsc_reader); return(CACKEY_PCSC_S_OK); } /* * SYNPOSIS * cackey_ret cackey_end_transaction(struct cackey_slot *slot); * * ARGUMENTS * cackey_slot *slot * Slot to send commands to * * RETURN VALUE * CACKEY_PCSC_S_OK On success * CACKEY_PCSC_E_GENERIC On error * * NOTES * This function requires "cackey_begin_transaction" to be called first * */ static cackey_ret cackey_end_transaction(struct cackey_slot *slot) { LONG scard_trans_ret; CACKEY_DEBUG_PRINTF("Called."); if (!slot->pcsc_card_connected) { CACKEY_DEBUG_PRINTF("Card is not connected, unable to end transaction on card"); if (slot->transaction_depth > 0) { CACKEY_DEBUG_PRINTF("Decreasing transaction depth and asking for a hardware lock on the next begin transaction (current depth = %i)", slot->transaction_depth); slot->transaction_depth--; if (slot->transaction_depth > 0) { slot->transaction_need_hw_lock = 1; } } return(CACKEY_PCSC_E_GENERIC); } if (slot->transaction_depth == 0) { CACKEY_DEBUG_PRINTF("Terminating a transaction that has not begun!"); return(CACKEY_PCSC_E_GENERIC); } slot->transaction_depth--; if (slot->transaction_depth > 0) { CACKEY_DEBUG_PRINTF("Transactions still in progress, not terminating on-card Transaction (current depth = %i)", slot->transaction_depth); return(CACKEY_PCSC_S_OK); } scard_trans_ret = SCardEndTransaction(slot->pcsc_card, SCARD_LEAVE_CARD); if (scard_trans_ret != SCARD_S_SUCCESS) { CACKEY_DEBUG_PRINTF("Unable to end transaction, returning in error"); return(CACKEY_PCSC_E_GENERIC); } CACKEY_DEBUG_PRINTF("Sucessfully terminated transaction on slot (%s)", slot->pcsc_reader); return(CACKEY_PCSC_S_OK); } /* APDU Related Functions */ /* * SYNPOSIS * cackey_ret cackey_send_apdu(struct cackey_slot *slot, unsigned char class, unsigned char instruction, unsigned char p1, unsigned char p2, unsigned char lc, unsigned char *data, unsigned char le, uint16_t *respcode, unsigned char *respdata, size_t *respdata_len); * * ARGUMENTS * cackey_slot *slot * Slot to send commands to * * unsigned char class * APDU Class (GSCIS_CLASS_ISO7816 or GSCIS_CLASS_GLOBAL_PLATFORM * usually), (CLA) * * unsigned char instruction * APDU Instruction (INS) * * unsigned char p1 * APDU Parameter 1 (P1) * * unsigned char p2 * APDU Parameter 2 (P2) * * unsigned char lc * APDU Length of Content (Lc) -- this is the length of "data" * parameter. If "data" is specified as NULL, this parameter will * be ignored. * * unsigned char *data * Pointer to buffer to send. It should be "Lc" bytes long. If * specified as NULL, "Lc" will not be sent, and this buffer will be * ignored. * * unsigned char le * APDU Length of Expectation (Le) -- this is the length of the * expected reply. If this is specified as 0 then it will not * be sent. * * uint16_t *respcode * [OUT] Pointer to storage of APDU response code. If this is * specified as NULL, the response code will be discarded. * * unsigned char *respdata * [OUT] Pointer to storage of APDU response data. If this is * specified as NULL, the response data will be discarded. If * the "respdata_len" parameter is specified as NULL, this buffer * will not be updated. * * size_t *respdata_len * [IN, OUT] Pointer initialing containing the size of the "respdata" * buffer. Before returning, the pointed to value is updated to the * number of bytes written to the buffer. If this is specified as * NULL, it will not be updated, and "respdata" will be ignored causing * the response data to be discarded. * * RETURN VALUE * CACKEY_PCSC_S_OK On success * CACKEY_PCSC_E_GENERIC On error * CACKEY_PCSC_E_TOKENABSENT If the sending failed because the token is * absent * CACKEY_PCSC_E_RETRY If something that looks retry'able went * wrong -- try the whole transaction over * again * * NOTES * This function will connect to the PC/SC Connection Manager via * cackey_pcsc_connect() if needed. * * It will connect to the card in the reader attached to the slot * specified. It will reconnect to the card if the connection * goes away. * */ static cackey_ret cackey_send_apdu(struct cackey_slot *slot, unsigned char class, unsigned char instruction, unsigned char p1, unsigned char p2, unsigned int lc, unsigned char *data, unsigned int le, uint16_t *respcode, unsigned char *respdata, size_t *respdata_len) { uint8_t major_rc, minor_rc; size_t bytes_to_copy, tmp_respdata_len; LPCSCARD_IO_REQUEST pioSendPci; SCARD_IO_REQUEST pioRecvPci; DWORD xmit_len, recv_len; LONG scard_xmit_ret, scard_reconn_ret; BYTE xmit_buf[1024], recv_buf[1024]; int pcsc_connect_ret, pcsc_getresp_ret; int idx; CACKEY_DEBUG_PRINTF("Called."); if (!slot) { CACKEY_DEBUG_PRINTF("Invalid slot specified."); return(CACKEY_PCSC_E_GENERIC); } if (respcode) { *respcode = 0xffff; } pcsc_connect_ret = cackey_connect_card(slot); if (pcsc_connect_ret != CACKEY_PCSC_S_OK) { CACKEY_DEBUG_PRINTF("Unable to connect to card, returning in failure"); return(CACKEY_PCSC_E_GENERIC); } /* Determine which protocol to send using */ switch (slot->protocol) { case SCARD_PROTOCOL_T0: CACKEY_DEBUG_PRINTF("Protocol to send datagram is T=0"); pioSendPci = SCARD_PCI_T0; break; case SCARD_PROTOCOL_T1: CACKEY_DEBUG_PRINTF("Protocol to send datagram is T=1"); pioSendPci = SCARD_PCI_T1; break; default: CACKEY_DEBUG_PRINTF("Invalid protocol found, aborting."); return(CACKEY_PCSC_E_GENERIC); } /* Transmit */ xmit_len = 0; xmit_buf[xmit_len++] = class; xmit_buf[xmit_len++] = instruction; xmit_buf[xmit_len++] = p1; xmit_buf[xmit_len++] = p2; if (data) { if (lc > 255) { CACKEY_DEBUG_PRINTF("CAUTION! Using an Lc greater than 255 is untested. Lc = %u", lc); xmit_buf[xmit_len++] = 0x82; /* XXX UNTESTED */ xmit_buf[xmit_len++] = (lc & 0xff00) >> 8; xmit_buf[xmit_len++] = lc & 0xff; } else { xmit_buf[xmit_len++] = lc; } for (idx = 0; idx < lc; idx++) { xmit_buf[xmit_len++] = data[idx]; } } if (le != 0x00) { if (le > 256) { CACKEY_DEBUG_PRINTF("CAUTION! Using an Le greater than 256 is untested. Le = %u", le); xmit_buf[xmit_len++] = 0x82; /* XXX UNTESTED */ xmit_buf[xmit_len++] = (le & 0xff00) >> 8; xmit_buf[xmit_len++] = le & 0xff; } else if (le == 256) { xmit_buf[xmit_len++] = 0x00; } else { xmit_buf[xmit_len++] = le; } } /* Begin Smartcard Transaction */ cackey_begin_transaction(slot); if (class == GSCIS_CLASS_ISO7816 && (instruction == GSCIS_INSTR_VERIFY || instruction == GSCIS_INSTR_CHANGE_REFERENCE) && p1 == 0x00) { CACKEY_DEBUG_PRINTF("Sending APDU: <>"); } else { CACKEY_DEBUG_PRINTBUF("Sending APDU:", xmit_buf, xmit_len); } recv_len = sizeof(recv_buf); memcpy(&pioRecvPci, pioSendPci, sizeof(pioRecvPci)); scard_xmit_ret = SCardTransmit(slot->pcsc_card, pioSendPci, xmit_buf, xmit_len, &pioRecvPci, recv_buf, &recv_len); CACKEY_DEBUG_PRINTF("SCardTransmit() completed with value: %s/%lx", CACKEY_DEBUG_FUNC_SCARDERR_TO_STR(scard_xmit_ret), (unsigned long) scard_xmit_ret); if (scard_xmit_ret == SCARD_E_NOT_TRANSACTED) { CACKEY_DEBUG_PRINTF("Failed to send APDU to card (SCardTransmit() = %s/%lx), will ask calling function to retry (not resetting card)...", CACKEY_DEBUG_FUNC_SCARDERR_TO_STR(scard_xmit_ret), (unsigned long) scard_xmit_ret); /* End Smartcard Transaction */ cackey_end_transaction(slot); cackey_reconnect_card(slot, slot->protocol); return(CACKEY_PCSC_E_RETRY); } if (scard_xmit_ret == SCARD_E_NO_SERVICE) { CACKEY_DEBUG_PRINTF("Failed to send APDU to card, possibly due to PC/SC handle being invalid (SCardTransmit() = %s/%lx), will ask calling function to retry...", CACKEY_DEBUG_FUNC_SCARDERR_TO_STR(scard_xmit_ret), (unsigned long) scard_xmit_ret); cackey_mark_slot_reset(slot); return(CACKEY_PCSC_E_RETRY); } if (scard_xmit_ret != SCARD_S_SUCCESS) { CACKEY_DEBUG_PRINTF("Failed to send APDU to card (SCardTransmit() = %s/%lx)", CACKEY_DEBUG_FUNC_SCARDERR_TO_STR(scard_xmit_ret), (unsigned long) scard_xmit_ret); CACKEY_DEBUG_PRINTF("Marking slot as having been reset"); cackey_mark_slot_reset(slot); if (scard_xmit_ret == SCARD_W_RESET_CARD) { CACKEY_DEBUG_PRINTF("Reset required, please hold..."); scard_reconn_ret = cackey_reconnect_card(slot, SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1); if (scard_reconn_ret == SCARD_S_SUCCESS) { switch (slot->protocol) { case SCARD_PROTOCOL_T0: pioSendPci = SCARD_PCI_T0; break; case SCARD_PROTOCOL_T1: pioSendPci = SCARD_PCI_T1; break; default: CACKEY_DEBUG_PRINTF("Invalid protocol found, but too late to do anything about it now -- trying anyway."); break; } /* Re-establish transaction, if it was present */ if (slot->transaction_depth > 0) { slot->transaction_depth--; slot->transaction_need_hw_lock = 1; cackey_begin_transaction(slot); } CACKEY_DEBUG_PRINTF("Reset successful, retransmitting"); recv_len = sizeof(recv_buf); memcpy(&pioRecvPci, pioSendPci, sizeof(pioRecvPci)); scard_xmit_ret = SCardTransmit(slot->pcsc_card, pioSendPci, xmit_buf, xmit_len, &pioRecvPci, recv_buf, &recv_len); if (scard_xmit_ret != SCARD_S_SUCCESS) { CACKEY_DEBUG_PRINTF("Retransmit failed, returning in failure after disconnecting the card (SCardTransmit = %s/%li)", CACKEY_DEBUG_FUNC_SCARDERR_TO_STR(scard_xmit_ret), (long) scard_xmit_ret); SCardDisconnect(slot->pcsc_card, SCARD_LEAVE_CARD); slot->pcsc_card_connected = 0; /* End Smartcard Transaction */ slot->transaction_depth = 1; cackey_end_transaction(slot); return(CACKEY_PCSC_E_TOKENABSENT); } } else { CACKEY_DEBUG_PRINTF("Disconnecting card"); SCardDisconnect(slot->pcsc_card, SCARD_LEAVE_CARD); slot->pcsc_card_connected = 0; /* End Smartcard Transaction */ slot->transaction_depth = 1; cackey_end_transaction(slot); CACKEY_DEBUG_PRINTF("Returning in failure"); return(CACKEY_PCSC_E_TOKENABSENT); } } else { CACKEY_DEBUG_PRINTF("Disconnecting card"); SCardDisconnect(slot->pcsc_card, SCARD_LEAVE_CARD); slot->pcsc_card_connected = 0; /* End Smartcard Transaction */ slot->transaction_depth = 1; cackey_end_transaction(slot); CACKEY_DEBUG_PRINTF("Returning in failure"); return(CACKEY_PCSC_E_TOKENABSENT); } } CACKEY_DEBUG_PRINTBUF("Returned Value:", recv_buf, recv_len); if (recv_len < 2) { /* Minimal response length is 2 bytes, returning in failure */ CACKEY_DEBUG_PRINTF("Response too small, returning in failure (recv_len = %lu)", (unsigned long) recv_len); /* End Smartcard Transaction */ cackey_end_transaction(slot); /* Supply an invalid response code */ if (respcode) { *respcode = 0; } return(CACKEY_PCSC_E_NODATA); } /* Determine result code */ major_rc = recv_buf[recv_len - 2]; minor_rc = recv_buf[recv_len - 1]; if (respcode) { *respcode = (major_rc << 8) | minor_rc; } /* Adjust message buffer */ recv_len -= 2; /* Add bytes to return value */ tmp_respdata_len = 0; if (respdata && respdata_len) { tmp_respdata_len = *respdata_len; bytes_to_copy = *respdata_len; if (recv_len < bytes_to_copy) { bytes_to_copy = recv_len; } CACKEY_DEBUG_PRINTF("Copying %lu bytes to the buffer (recv'd %lu bytes, but only %lu bytes left in our buffer)", (unsigned long) bytes_to_copy, (unsigned long) recv_len, (unsigned long) *respdata_len); memcpy(respdata, recv_buf, bytes_to_copy); respdata += bytes_to_copy; *respdata_len = bytes_to_copy; tmp_respdata_len -= bytes_to_copy; } else { if (recv_len != 0) { CACKEY_DEBUG_PRINTF("Throwing away %lu bytes, nowhere to put them!", (unsigned long) recv_len); } } if (major_rc == 0x61) { /* We need to READ */ CACKEY_DEBUG_PRINTF("Buffer read required"); if (minor_rc == 0x00) { minor_rc = CACKEY_APDU_MTU; } pcsc_getresp_ret = cackey_send_apdu(slot, GSCIS_CLASS_ISO7816, GSCIS_INSTR_GET_RESPONSE, 0x00, 0x00, 0, NULL, minor_rc, respcode, respdata, &tmp_respdata_len); if (pcsc_getresp_ret != CACKEY_PCSC_S_OK) { CACKEY_DEBUG_PRINTF("Buffer read failed! Returning in failure"); /* End Smartcard Transaction */ cackey_end_transaction(slot); if (pcsc_getresp_ret == CACKEY_PCSC_E_RETRY) { return(CACKEY_PCSC_E_RETRY); } return(CACKEY_PCSC_E_GENERIC); } if (respdata_len) { *respdata_len += tmp_respdata_len; } /* End Smartcard Transaction */ cackey_end_transaction(slot); CACKEY_DEBUG_PRINTF("Returning in success (buffer read complete)"); return(CACKEY_PCSC_S_OK); } /* End Smartcard Transaction */ cackey_end_transaction(slot); if (major_rc == 0x90) { /* Success */ CACKEY_DEBUG_PRINTF("Returning in success (major_rc = 0x90)"); return(CACKEY_PCSC_S_OK); } CACKEY_DEBUG_PRINTF("APDU Returned an error, returning in failure"); return(CACKEY_PCSC_E_GENERIC); } static unsigned char *cackey_read_bertlv_tag(unsigned char *buffer, size_t *buffer_len_p, unsigned char tag, unsigned char *outbuffer, size_t *outbuffer_len_p) { unsigned char *buffer_p; size_t outbuffer_len, buffer_len; size_t size; int idx; CACKEY_DEBUG_PRINTF("Called."); if (buffer_len_p == NULL) { CACKEY_DEBUG_PRINTF("buffer_len_p is NULL. Returning in failure."); return(NULL); } if (outbuffer_len_p == NULL) { CACKEY_DEBUG_PRINTF("outbuffer_len_p is NULL. Returning in failure."); return(NULL); } buffer_len = *outbuffer_len_p; outbuffer_len = *outbuffer_len_p; if (buffer_len < 2) { CACKEY_DEBUG_PRINTF("buffer_len is less than 2, so we can't read any tag. Returning in failure."); return(NULL); } buffer_p = buffer; if (buffer_p[0] != tag) { CACKEY_DEBUG_PRINTF("Tag found was not tag expected. Tag = %02x, Expected = %02x. Returning in failure.", (unsigned int) buffer_p[0], tag); return(NULL); } buffer_p++; buffer_len--; if ((buffer_p[0] & 0x80) == 0x80) { size = 0; idx = (buffer_p[0] & 0x7f); if (idx > buffer_len) { CACKEY_DEBUG_PRINTF("Malformed BER value -- not enough bytes available to read length (idx = %i, buffer_len = %lu)", idx, (unsigned long) buffer_len); return(NULL); } for (; idx > 0; idx--) { buffer_p++; buffer_len--; size <<= 8; size |= buffer_p[0]; } } else { size = buffer_p[0]; } buffer_p++; buffer_len--; if (size > outbuffer_len) { CACKEY_DEBUG_PRINTF("Unable to copy value buffer to outbuffer, not enough room. Value buffer length = %lu, out buffer length = %lu", (unsigned long) size, (unsigned long) outbuffer_len); return(NULL); } *outbuffer_len_p = size; if (outbuffer) { memcpy(outbuffer, buffer_p, size); buffer_p += size; buffer_len -= size; *buffer_len_p = buffer_len; CACKEY_DEBUG_PRINTBUF("BER-TLV results:", outbuffer, size); } else { memmove(buffer, buffer_p, size); buffer_p = buffer; CACKEY_DEBUG_PRINTBUF("BER-TLV results:", buffer, size); } CACKEY_DEBUG_PRINTF("Returning in success. Size of contents for tag %02x is %lu", (unsigned int) tag, (unsigned long) size); return(buffer_p); } /* * SYNPOSIS * ssize_t cackey_get_data(struct cackey_slot *slot, unsigned char *buffer, size_t buffer_len, unsigned char oid[3]); * * ARGUMENTS * struct cackey_slot *slot * Slot to send commands to * * unsigned char *buffer * [OUT] Buffer * * size_t buffer_len * Number of bytes to attempt to read * * unsigned char oid[3] * 3-byte OID to read * * * RETURN VALUE * This function returns the number of bytes actually read, or -1 on error. * * NOTES * None * */ static ssize_t cackey_get_data(struct cackey_slot *slot, unsigned char *buffer, size_t buffer_len, unsigned char oid[3]) { unsigned char cmd[] = {0x5C, 0x03, 0x00, 0x00, 0x00}; unsigned char *buffer_p; size_t init_buffer_len, size; uint16_t respcode; int send_ret; CACKEY_DEBUG_PRINTF("Called."); init_buffer_len = buffer_len; cmd[2] = oid[0]; cmd[3] = oid[1]; cmd[4] = oid[2]; /* 256 to indicate the largest message size -- not clear if this will work with all messages */ send_ret = cackey_send_apdu(slot, GSCIS_CLASS_ISO7816, NISTSP800_73_3_INSTR_GET_DATA, 0x3F, 0xFF, sizeof(cmd), cmd, 256, &respcode, buffer, &buffer_len); if (send_ret == CACKEY_PCSC_E_RETRY) { CACKEY_DEBUG_PRINTF("ADPU Sending failed, retrying read buffer"); return(cackey_get_data(slot, buffer, init_buffer_len, oid)); } if (send_ret != CACKEY_PCSC_S_OK) { CACKEY_DEBUG_PRINTF("cackey_send_apdu() failed, returning in failure"); return(-1); } #ifdef CACKEY_PARANOID # ifdef _POSIX_SSIZE_MAX if (buffer_len > _POSIX_SSIZE_MAX) { CACKEY_DEBUG_PRINTF("Read bytes (buffer_len) exceeds maximum value, returning in failure. (max = %li, buffer_len = %lu)", (long) _POSIX_SSIZE_MAX, (unsigned long) buffer_len); return(-1); } # endif #endif if (buffer_len < 2) { CACKEY_DEBUG_PRINTF("APDU GET DATA returned %lu bytes, which is too short for a BER-TLV response", (unsigned long) buffer_len); return(-1); } size = buffer_len; buffer_p = cackey_read_bertlv_tag(buffer, &buffer_len, 0x53, NULL, &size); if (buffer_p == NULL) { CACKEY_DEBUG_PRINTF("Tag decoding failed, returning in error."); return(-1); } CACKEY_DEBUG_PRINTBUF("GET DATA result", buffer, size); CACKEY_DEBUG_PRINTF("Returning in success, read %lu bytes", (unsigned long) size); return(size); } /* * SYNPOSIS * ssize_t cackey_read_buffer(struct cackey_slot *slot, unsigned char *buffer, size_t count, unsigned char t_or_v, size_t initial_offset); * * ARGUMENTS * struct cackey_slot *slot * Slot to send commands to * * unsigned char *buffer * [OUT] Buffer * * size_t count * Number of bytes to attempt to read * * unsigned char t_or_v * Select the T-buffer (01) or V-buffer (02) to read from. * * size_t initial_offset * Specify the offset to begin the read from * * * RETURN VALUE * This function returns the number of bytes actually read, or -1 on error. * * NOTES * None * */ static ssize_t cackey_read_buffer(struct cackey_slot *slot, unsigned char *buffer, size_t count, unsigned char t_or_v, size_t initial_offset) { unsigned char *init_buffer; size_t init_count; size_t init_initial_offset; size_t offset = 0, max_offset, max_count; unsigned char cmd[2]; uint16_t respcode; int send_ret; CACKEY_DEBUG_PRINTF("Called."); init_buffer = buffer; init_count = count; init_initial_offset = initial_offset; max_offset = count; max_count = CACKEY_APDU_MTU; if (t_or_v != 1 && t_or_v != 2) { CACKEY_DEBUG_PRINTF("Invalid T or V parameter specified, returning in failure"); return(-1); } cmd[0] = t_or_v; while (1) { if (offset >= max_offset) { CACKEY_DEBUG_PRINTF("Buffer too small, returning what we got..."); break; } count = max_offset - offset; if (count > max_count) { count = max_count; } cmd[1] = count; send_ret = cackey_send_apdu(slot, GSCIS_CLASS_GLOBAL_PLATFORM, GSCIS_INSTR_READ_BUFFER, ((initial_offset + offset) >> 8) & 0xff, (initial_offset + offset) & 0xff, sizeof(cmd), cmd, 0x00, &respcode, buffer + offset, &count); if (send_ret == CACKEY_PCSC_E_RETRY) { CACKEY_DEBUG_PRINTF("ADPU Sending failed, retrying read buffer"); return(cackey_read_buffer(slot, init_buffer, init_count, t_or_v, init_initial_offset)); } if (send_ret != CACKEY_PCSC_S_OK) { if (respcode == 0x6A86) { if (max_count == 1) { break; } max_count = max_count / 2; continue; } CACKEY_DEBUG_PRINTF("cackey_send_apdu() failed, returning in failure"); return(-1); } offset += count; if (count < max_count) { CACKEY_DEBUG_PRINTF("Short read -- count = %i, cmd[1] = %i", (int) count, (int) cmd[1]); break; } } #ifdef CACKEY_PARANOID # ifdef _POSIX_SSIZE_MAX if (offset > _POSIX_SSIZE_MAX) { CACKEY_DEBUG_PRINTF("Offset exceeds maximum value, returning in failure. (max = %li, offset = %lu)", (long) _POSIX_SSIZE_MAX, (unsigned long) offset); return(-1); } # endif #endif CACKEY_DEBUG_PRINTF("Returning in success, read %lu bytes", (unsigned long) offset); return(offset); } /* * SYNPOSIS * cackey_ret cackey_select_applet(struct cackey_slot *slot, unsigned char *aid, size_t aid_len); * * ARGUMENTS * struct cackey_slot *slot * Slot to send commands to * * unsigned char *aid * Buffer containing Applet ID to select * * size_t aid_len * Number of bytes in the "aid" (Applet ID) parameter * * RETURN VALUE * CACKEY_PCSC_S_OK On success * CACKEY_PCSC_E_GENERIC On error * * NOTES * None * */ static cackey_ret cackey_select_applet(struct cackey_slot *slot, unsigned char *aid, size_t aid_len) { int send_ret; CACKEY_DEBUG_PRINTF("Called."); CACKEY_DEBUG_PRINTBUF("Selecting applet:", aid, aid_len); send_ret = cackey_send_apdu(slot, GSCIS_CLASS_ISO7816, GSCIS_INSTR_SELECT, GSCIS_PARAM_SELECT_APPLET, 0x00, aid_len, aid, 0x00, NULL, NULL, NULL); if (send_ret == CACKEY_PCSC_E_RETRY) { CACKEY_DEBUG_PRINTF("ADPU Sending failed, retrying select applet"); return(cackey_select_applet(slot, aid, aid_len)); } if (send_ret != CACKEY_PCSC_S_OK) { CACKEY_DEBUG_PRINTF("Failed to open applet, returning in failure"); return(CACKEY_PCSC_E_GENERIC); } CACKEY_DEBUG_PRINTF("Successfully selected file"); return(CACKEY_PCSC_S_OK); } /* * SYNPOSIS * cackey_pcsc_id_type cackey_detect_and_select_root_applet(struct cackey_slot *slot, cackey_pcsc_id_type type_hint); * * ARGUMENTS * struct cackey_slot *slot * Slot to send commands to * * cackey_pcsc_id_type type_hint * A hint as to which type of card might be in this slot (CAC or PIV) * * RETURN VALUE * CACKEY_ID_TYPE_PIV If the card connected is a PIV * CACKEY_ID_TYPE_CAC If the card connected is a CAC with the CCC * applet * CACKEY_ID_TYPE_ERROR If we are unable to determine what type of card * is connected * * NOTES * This function reselects the "root" applet, after this function is called * the user may be required to login again * */ static cackey_pcsc_id_type cackey_detect_and_select_root_applet(struct cackey_slot *slot, cackey_pcsc_id_type type_hint) { unsigned char cac_ccc_aid[] = {GSCIS_AID_CCC}; unsigned char cac_id0_aid[] = {GSCIS_AID_ID0}; unsigned char piv_aid[] = {NISTSP800_73_3_PIV_AID}; cackey_pcsc_id_type try_types[2], try_type; int send_ret; int idx; CACKEY_DEBUG_PRINTF("Reselecting the root applet"); if (type_hint == CACKEY_ID_TYPE_UNKNOWN) { type_hint = slot->id_type_hint; } slot->id_type_hint = CACKEY_ID_TYPE_UNKNOWN; switch (type_hint) { case CACKEY_ID_TYPE_PIV: CACKEY_DEBUG_PRINTF("Trying to reselect the PIV root applet first"); try_types[0] = CACKEY_ID_TYPE_PIV; try_types[1] = CACKEY_ID_TYPE_CAC; break; default: CACKEY_DEBUG_PRINTF("Trying to reselect the CAC CCC applet first"); try_types[0] = CACKEY_ID_TYPE_CAC; try_types[1] = CACKEY_ID_TYPE_PIV; break; } for (idx = 0; idx < (sizeof(try_types) / sizeof(try_types[0])); idx++) { try_type = try_types[idx]; switch (try_type) { case CACKEY_ID_TYPE_CAC: CACKEY_DEBUG_PRINTF("Trying to select the CAC CCC applet"); send_ret = cackey_select_applet(slot, cac_ccc_aid, sizeof(cac_ccc_aid)); if (send_ret != CACKEY_PCSC_S_OK) { send_ret = cackey_select_applet(slot, cac_id0_aid, sizeof(cac_id0_aid)); } break; case CACKEY_ID_TYPE_PIV: CACKEY_DEBUG_PRINTF("Trying to select the PIV root applet"); send_ret = cackey_select_applet(slot, piv_aid, sizeof(piv_aid)); break; } if (send_ret == CACKEY_PCSC_S_OK) { CACKEY_DEBUG_PRINTF("Successfully selected the %s applet -- setting the \"LOGIN REQUIRED\" flag on the token", try_type == CACKEY_ID_TYPE_CAC ? "CAC" : "PIV" ); slot->token_flags = CKF_LOGIN_REQUIRED; slot->id_type_hint = try_type; return(try_type); } } CACKEY_DEBUG_PRINTF("Unable to select any applet, returning in failure"); return(CACKEY_ID_TYPE_ERROR); } /* * SYNPOSIS * cackey_ret cackey_select_file(struct cackey_slot *slot, uint16_t ef); * * ARGUMENTS * struct cackey_slot *slot * Slot to send commands to * * uint16_t ef * Elemental File to select * * RETURN VALUE * CACKEY_PCSC_S_OK On success * CACKEY_PCSC_E_GENERIC On error * * NOTES * This selects an Elementary File (EF) under the currently selected * Dedicated File (DF) * * Typically this is called after selecting the correct Applet (using * cackey_select_applet) for VM cards * */ static cackey_ret cackey_select_file(struct cackey_slot *slot, uint16_t ef) { unsigned char fid_buf[2]; int send_ret; CACKEY_DEBUG_PRINTF("Called."); /* Open the elementary file */ fid_buf[0] = (ef >> 8) & 0xff; fid_buf[1] = ef & 0xff; CACKEY_DEBUG_PRINTF("Selecting file: %04lx", (unsigned long) ef); send_ret = cackey_send_apdu(slot, GSCIS_CLASS_ISO7816, GSCIS_INSTR_SELECT, 0x02, 0x0C, sizeof(fid_buf), fid_buf, 0x00, NULL, NULL, NULL); if (send_ret != CACKEY_PCSC_S_OK) { CACKEY_DEBUG_PRINTF("Failed to open file, returning in failure"); return(CACKEY_PCSC_E_GENERIC); } CACKEY_DEBUG_PRINTF("Successfully selected file"); return(CACKEY_PCSC_S_OK); } /* * SYNPOSIS * void cackey_free_tlv(struct cackey_tlv_entity *root); * * ARGUMENTS * struct cackey_tlv_entity *root * Root of the TLV list to start freeing * * RETURN VALUE * None * * NOTES * This function frees the TLV linked listed returned from * "cackey_read_tlv" * */ static void cackey_free_tlv(struct cackey_tlv_entity *root) { struct cackey_tlv_entity *curr, *next; if (root == NULL) { return; } for (curr = root; curr; curr = next) { next = curr->_next; switch (curr->tag) { case GSCIS_TAG_ACR_TABLE: case GSCIS_TAG_CERTIFICATE: if (curr->value) { free(curr->value); } break; case GSCIS_TAG_CARDURL: if (curr->value_cardurl) { free(curr->value_cardurl); } break; } free(curr); } return; } /* * SYNPOSIS * ... * * ARGUMENTS * ... * * RETURN VALUE * ... * * NOTES * ... * */ static struct cackey_tlv_entity *cackey_read_tlv(struct cackey_slot *slot) { struct cackey_tlv_entity *curr_entity, *root = NULL, *last = NULL; unsigned char tlen_buf[2], tval_buf[1024], *tval; unsigned char vlen_buf[2], vval_buf[8192], *vval; unsigned char *tmpbuf; unsigned long tmpbuflen; ssize_t tlen, vlen; ssize_t read_ret; size_t offset_t = 0, offset_v = 0; unsigned char tag; size_t length; #ifdef HAVE_LIBZ int uncompress_ret; #endif CACKEY_DEBUG_PRINTF("Called."); read_ret = cackey_read_buffer(slot, tlen_buf, sizeof(tlen_buf), 1, offset_t); if (read_ret != sizeof(tlen_buf)) { CACKEY_DEBUG_PRINTF("Read failed, returning in failure"); return(NULL); } tlen = (tlen_buf[1] << 8) | tlen_buf[0]; read_ret = cackey_read_buffer(slot, vlen_buf, sizeof(vlen_buf), 2, offset_v); if (read_ret != sizeof(vlen_buf)) { CACKEY_DEBUG_PRINTF("Read failed, returning in failure"); return(NULL); } vlen = (vlen_buf[1] << 8) | vlen_buf[0]; CACKEY_DEBUG_PRINTF("Tag Length = %lu, Value Length = %lu", (unsigned long) tlen, (unsigned long) vlen); offset_t += 2; offset_v += 2; if (tlen > sizeof(tval_buf)) { CACKEY_DEBUG_PRINTF("Tag length is too large, returning in failure"); return(NULL); } if (vlen > sizeof(vval_buf)) { CACKEY_DEBUG_PRINTF("Value length is too large, returning in failure"); return(NULL); } read_ret = cackey_read_buffer(slot, tval_buf, tlen, 1, offset_t); if (read_ret != tlen) { CACKEY_DEBUG_PRINTF("Unable to read entire T-buffer, returning in failure"); return(NULL); } read_ret = cackey_read_buffer(slot, vval_buf, vlen, 2, offset_v); if (read_ret != vlen) { CACKEY_DEBUG_PRINTF("Unable to read entire V-buffer, returning in failure"); return(NULL); } tval = tval_buf; vval = vval_buf; while (tlen > 0 && vlen > 0) { tag = *tval; tval++; tlen--; if (*tval == 0xff) { length = (tval[2] << 8) | tval[1]; tval += 3; tlen -= 3; } else { length = *tval; tval++; tlen--; } CACKEY_DEBUG_PRINTF("Tag: %s (%02x)", CACKEY_DEBUG_FUNC_TAG_TO_STR(tag), (unsigned int) tag); CACKEY_DEBUG_PRINTBUF("Value:", vval, length); curr_entity = NULL; switch (tag) { case GSCIS_TAG_CARDURL: curr_entity = malloc(sizeof(*curr_entity)); curr_entity->value_cardurl = malloc(sizeof(*curr_entity->value_cardurl)); memcpy(curr_entity->value_cardurl->rid, vval, 5); curr_entity->value_cardurl->apptype = vval[5]; curr_entity->value_cardurl->objectid = (vval[6] << 8) | vval[7]; curr_entity->value_cardurl->appid = (vval[8] << 8) | vval[9]; curr_entity->tag = tag; curr_entity->_next = NULL; break; case GSCIS_TAG_ACR_TABLE: curr_entity = malloc(sizeof(*curr_entity)); tmpbuf = malloc(length); memcpy(tmpbuf, vval, length); curr_entity->tag = tag; curr_entity->length = length; curr_entity->value = tmpbuf; curr_entity->_next = NULL; break; case GSCIS_TAG_CERTIFICATE: curr_entity = malloc(sizeof(*curr_entity)); #ifdef HAVE_LIBZ tmpbuflen = length * 2; tmpbuf = malloc(tmpbuflen); uncompress_ret = uncompress(tmpbuf, &tmpbuflen, vval, length); if (uncompress_ret != Z_OK) { CACKEY_DEBUG_PRINTF("Failed to decompress, uncompress() returned %i -- resorting to direct copy", uncompress_ret); tmpbuflen = length; memcpy(tmpbuf, vval, length); } CACKEY_DEBUG_PRINTBUF("Decompressed to:", tmpbuf, tmpbuflen); #else CACKEY_DEBUG_PRINTF("Missing ZLIB Support, this certificate is likely useless..."); tmpbuflen = length; memcpy(tmpbuf, vval, length); #endif curr_entity->tag = tag; curr_entity->length = tmpbuflen; curr_entity->value = tmpbuf; curr_entity->_next = NULL; break; case GSCIS_TAG_PKCS15: curr_entity = malloc(sizeof(*curr_entity)); curr_entity->tag = tag; curr_entity->value_byte = vval[0]; curr_entity->_next = NULL; break; } vval += length; vlen -= length; if (curr_entity != NULL) { if (root == NULL) { root = curr_entity; } if (last != NULL) { last->_next = curr_entity; } last = curr_entity; } } return(root); } /* * SYNPOSIS * ... * * ARGUMENTS * ... * * RETURN VALUE * ... * * NOTES * ... * */ static void cackey_free_certs(struct cackey_pcsc_identity *start, size_t count, int free_start) { size_t idx; if (start == NULL) { return; } for (idx = 0; idx < count; idx++) { if (start[idx].certificate) { free(start[idx].certificate); } } if (free_start) { free(start); } return; } static struct cackey_pcsc_identity *cackey_copy_certs(struct cackey_pcsc_identity *dest, struct cackey_pcsc_identity *start, size_t count) { size_t idx; if (start == NULL) { return(NULL); } if (dest == NULL) { dest = malloc(sizeof(*dest) * count); } for (idx = 0; idx < count; idx++) { dest[idx].id_type = start[idx].id_type; switch (dest[idx].id_type) { case CACKEY_ID_TYPE_CAC: memcpy(dest[idx].card.cac.applet, start[idx].card.cac.applet, sizeof(dest[idx].card.cac.applet)); dest[idx].card.cac.file = start[idx].card.cac.file; break; case CACKEY_ID_TYPE_PIV: dest[idx].card.piv.key_id = start[idx].card.piv.key_id; memcpy(dest[idx].card.piv.label, start[idx].card.piv.label, sizeof(dest[idx].card.piv.label)); break; case CACKEY_ID_TYPE_CERT_ONLY: break; } dest[idx].certificate_len = start[idx].certificate_len; dest[idx].keysize = start[idx].keysize; dest[idx].certificate = malloc(dest[idx].certificate_len); memcpy(dest[idx].certificate, start[idx].certificate, dest[idx].certificate_len); } return(dest); } /* * SYNPOSIS * ... * * ARGUMENTS * ... * * RETURN VALUE * ... * * NOTES * ... * */ static struct cackey_pcsc_identity *cackey_read_certs(struct cackey_slot *slot, struct cackey_pcsc_identity *certs, unsigned long *count) { cackey_pcsc_id_type check_id_type; struct cackey_pcsc_identity *curr_id; struct cackey_tlv_entity *ccc_tlv, *ccc_curr, *app_tlv, *app_curr; unsigned char *piv_oid, piv_oid_pivauth[] = {NISTSP800_73_3_OID_PIVAUTH}, piv_oid_signature[] = {NISTSP800_73_3_OID_SIGNATURE}, piv_oid_keymgt[] = {NISTSP800_73_3_OID_KEYMGT}; unsigned char curr_aid[7]; unsigned char buffer[8192], *buffer_p, *tmpbuf; unsigned long outidx = 0; char *piv_label; cackey_ret transaction_ret; ssize_t read_ret; size_t buffer_len, tmpbuflen; int certs_resizable; int send_ret, select_ret; int piv_key, piv = 0; int cached_certs_valid; int idx; cackey_pcsc_id_type id_type; #ifdef HAVE_LIBZ int uncompress_ret; z_stream gzip_stream; #endif CACKEY_DEBUG_PRINTF("Called."); if (count == NULL) { CACKEY_DEBUG_PRINTF("count is NULL, returning in failure"); return(NULL); } if (certs != NULL) { if (*count == 0) { CACKEY_DEBUG_PRINTF("Requested we return 0 objects, short-circuit"); return(certs); } } cached_certs_valid = 0; if (!slot->slot_reset) { if (slot->cached_certs) { cached_certs_valid = 1; if (slot->cached_certs_count > 0) { cached_certs_valid = 1; } } } if (cached_certs_valid) { if (certs == NULL) { certs = malloc(sizeof(*certs) * slot->cached_certs_count); *count = slot->cached_certs_count; } else { if (*count > slot->cached_certs_count) { *count = slot->cached_certs_count; } } cackey_copy_certs(certs, slot->cached_certs, *count); CACKEY_DEBUG_PRINTF("Returning cached certificates for this slot (card has not been reset and there are cached certs available)"); return(certs); } if (slot->cached_certs) { cackey_free_certs(slot->cached_certs, slot->cached_certs_count, 1); slot->cached_certs = NULL; } /* Begin a SmartCard transaction */ transaction_ret = cackey_begin_transaction(slot); if (transaction_ret != CACKEY_PCSC_S_OK) { CACKEY_DEBUG_PRINTF("Unable begin transaction, returning in failure"); return(NULL); } id_type = cackey_detect_and_select_root_applet(slot, CACKEY_ID_TYPE_UNKNOWN); switch (id_type) { case CACKEY_ID_TYPE_CAC: piv = 0; break; case CACKEY_ID_TYPE_PIV: piv = 1; break; case CACKEY_ID_TYPE_ERROR: /* Terminate SmartCard Transaction */ cackey_end_transaction(slot); if (certs == NULL) { *count = 0; } return(NULL); break; case CACKEY_ID_TYPE_CERT_ONLY: CACKEY_DEBUG_PRINTF("Error. Impossible condition reached."); break; } if (certs == NULL) { certs = malloc(sizeof(*certs) * 5); *count = 5; certs_resizable = 1; } else { certs_resizable = 0; } if (piv) { for (idx = 0; idx < 3; idx++) { switch (idx) { case 0: piv_oid = piv_oid_pivauth; piv_key = NISTSP800_78_3_KEY_PIVAUTH; piv_label = "Authentication"; break; case 1: piv_oid = piv_oid_signature; piv_key = NISTSP800_78_3_KEY_SIGNATURE; piv_label = "Signature"; break; case 2: piv_oid = piv_oid_keymgt; piv_key = NISTSP800_78_3_KEY_KEYMGT; piv_label = "Key Management"; break; } read_ret = cackey_get_data(slot, buffer, sizeof(buffer), piv_oid); if (read_ret <= 0) { continue; } curr_id = &certs[outidx]; outidx++; curr_id->keysize = -1; curr_id->id_type = CACKEY_ID_TYPE_PIV; curr_id->card.piv.key_id = piv_key; memcpy(curr_id->card.piv.label, piv_label, strlen(piv_label) + 1); curr_id->certificate_len = read_ret; curr_id->certificate = malloc(curr_id->certificate_len); buffer_len = sizeof(buffer); buffer_p = cackey_read_bertlv_tag(buffer, &buffer_len, 0x70, curr_id->certificate, &curr_id->certificate_len); if (buffer_p == NULL) { CACKEY_DEBUG_PRINTF("Reading certificate from BER-TLV response failed, skipping key %i", idx); free(curr_id->certificate); curr_id->certificate = NULL; outidx--; continue; } if (curr_id->certificate_len > 4) { if (memcmp(curr_id->certificate, "\x1f\x8b\x08\x00", 4) == 0) { #ifdef HAVE_LIBZ tmpbuflen = curr_id->certificate_len * 2; tmpbuf = malloc(tmpbuflen); CACKEY_DEBUG_PRINTBUF("Attempting to decompress:", curr_id->certificate, curr_id->certificate_len); gzip_stream.zalloc = NULL; gzip_stream.zfree = NULL; gzip_stream.opaque = NULL; gzip_stream.next_in = curr_id->certificate; gzip_stream.avail_in = curr_id->certificate_len; gzip_stream.next_out = tmpbuf; gzip_stream.avail_out = tmpbuflen; uncompress_ret = inflateInit(&gzip_stream); if (uncompress_ret == Z_OK) { /* Try again as a gzip buffer */ uncompress_ret = inflateEnd(&gzip_stream); if (uncompress_ret == Z_OK) { gzip_stream.zalloc = NULL; gzip_stream.zfree = NULL; gzip_stream.opaque = NULL; gzip_stream.next_in = curr_id->certificate; gzip_stream.avail_in = curr_id->certificate_len; gzip_stream.next_out = tmpbuf; gzip_stream.avail_out = tmpbuflen; uncompress_ret = inflateInit2(&gzip_stream, 31); } } if (uncompress_ret == Z_OK) { uncompress_ret = inflate(&gzip_stream, 0); } if (uncompress_ret == Z_STREAM_END) { uncompress_ret = inflateEnd(&gzip_stream); } else { uncompress_ret = Z_DATA_ERROR; } if (uncompress_ret == Z_OK) { tmpbuflen = gzip_stream.total_out; CACKEY_DEBUG_PRINTBUF("Decompressed to:", tmpbuf, tmpbuflen); free(curr_id->certificate); curr_id->certificate = tmpbuf; curr_id->certificate_len = tmpbuflen; } else { CACKEY_DEBUG_PRINTF("Decompressing failed! uncompress() returned %i", uncompress_ret); free(tmpbuf); } #else CACKEY_DEBUG_PRINTF("Error. We got a compressed certificate but we do not have zlib. Hoping for the best."); #endif } } } } else { /* Read all the applets from the CCC's TLV */ ccc_tlv = cackey_read_tlv(slot); /* Look for CARDURLs that coorespond to PKI applets */ for (ccc_curr = ccc_tlv; ccc_curr; ccc_curr = ccc_curr->_next) { CACKEY_DEBUG_PRINTF("Found tag: %s ... ", CACKEY_DEBUG_FUNC_TAG_TO_STR(ccc_curr->tag)); if (ccc_curr->tag != GSCIS_TAG_CARDURL) { CACKEY_DEBUG_PRINTF(" ... skipping it (we only care about CARDURLs)"); continue; } if ((ccc_curr->value_cardurl->apptype & CACKEY_TLV_APP_PKI) != CACKEY_TLV_APP_PKI) { CACKEY_DEBUG_PRINTF(" ... skipping it (we only care about PKI applets, this applet supports: %s/%02x)", CACKEY_DEBUG_FUNC_APPTYPE_TO_STR(ccc_curr->value_cardurl->apptype), (unsigned int) ccc_curr->value_cardurl->apptype); continue; } CACKEY_DEBUG_PRINTBUF("RID:", ccc_curr->value_cardurl->rid, sizeof(ccc_curr->value_cardurl->rid)); CACKEY_DEBUG_PRINTF("AppID = %s/%04lx", CACKEY_DEBUG_FUNC_OBJID_TO_STR(ccc_curr->value_cardurl->appid), (unsigned long) ccc_curr->value_cardurl->appid); CACKEY_DEBUG_PRINTF("ObjectID = %s/%04lx", CACKEY_DEBUG_FUNC_OBJID_TO_STR(ccc_curr->value_cardurl->objectid), (unsigned long) ccc_curr->value_cardurl->objectid); memcpy(curr_aid, ccc_curr->value_cardurl->rid, sizeof(ccc_curr->value_cardurl->rid)); curr_aid[sizeof(curr_aid) - 2] = (ccc_curr->value_cardurl->appid >> 8) & 0xff; curr_aid[sizeof(curr_aid) - 1] = ccc_curr->value_cardurl->appid & 0xff; /* Select found applet ... */ select_ret = cackey_select_applet(slot, curr_aid, sizeof(curr_aid)); if (select_ret != CACKEY_PCSC_S_OK) { CACKEY_DEBUG_PRINTF("Failed to select applet, skipping processing of this object"); continue; } /* ... and object (file) */ select_ret = cackey_select_file(slot, ccc_curr->value_cardurl->objectid); if (select_ret != CACKEY_PCSC_S_OK) { CACKEY_DEBUG_PRINTF("Failed to select file, skipping processing of this object"); continue; } /* Process this file's TLV looking for certificates */ app_tlv = cackey_read_tlv(slot); for (app_curr = app_tlv; app_curr; app_curr = app_curr->_next) { CACKEY_DEBUG_PRINTF("Found tag: %s", CACKEY_DEBUG_FUNC_TAG_TO_STR(app_curr->tag)); if (app_curr->tag != GSCIS_TAG_CERTIFICATE) { CACKEY_DEBUG_PRINTF(" ... skipping it (we only care about CERTIFICATEs)"); continue; } curr_id = &certs[outidx]; outidx++; curr_id->id_type = CACKEY_ID_TYPE_CAC; memcpy(curr_id->card.cac.applet, curr_aid, sizeof(curr_id->card.cac.applet)); curr_id->card.cac.file = ccc_curr->value_cardurl->objectid; curr_id->keysize = -1; CACKEY_DEBUG_PRINTF("Filling curr_id->card.cac.applet (%p) with %lu bytes:", curr_id->card.cac.applet, (unsigned long) sizeof(curr_id->card.cac.applet)); CACKEY_DEBUG_PRINTBUF("VAL:", curr_id->card.cac.applet, sizeof(curr_id->card.cac.applet)); curr_id->certificate_len = app_curr->length; curr_id->certificate = malloc(curr_id->certificate_len); memcpy(curr_id->certificate, app_curr->value, curr_id->certificate_len); if (outidx >= *count) { if (certs_resizable) { *count *= 2; if (*count != 0) { certs = realloc(certs, sizeof(*certs) * (*count)); } else { certs = NULL; } } else { break; } } } cackey_free_tlv(app_tlv); if (outidx >= *count) { break; } } cackey_free_tlv(ccc_tlv); } *count = outidx; if (certs_resizable) { if (*count != 0) { certs = realloc(certs, sizeof(*certs) * (*count)); } else { free(certs); certs = NULL; } } slot->cached_certs = cackey_copy_certs(NULL, certs, *count); slot->cached_certs_count = *count; /* Terminate SmartCard Transaction */ cackey_end_transaction(slot); return(certs); } /* * SYNPOSIS * ... * * ARGUMENTS * ... * * RETURN VALUE * ... * * NOTES * ... * */ static ssize_t cackey_signdecrypt(struct cackey_slot *slot, struct cackey_identity *identity, unsigned char *buf, size_t buflen, unsigned char *outbuf, size_t outbuflen, int padInput, int unpadOutput) { cackey_pcsc_id_type id_type, check_id_type; unsigned char dyn_auth_template[10], *dyn_auth_tmpbuf; unsigned char *tmpbuf, *tmpbuf_s, *outbuf_s, *outbuf_p; unsigned char bytes_to_send, p1, class; unsigned char blocktype; cackey_ret send_ret; uint16_t respcode; ssize_t retval = 0, unpadoffset; size_t tmpbuflen, padlen, tmpoutbuflen, outbuf_len; int free_tmpbuf = 0; int le; CACKEY_DEBUG_PRINTF("Called."); if (slot == NULL) { CACKEY_DEBUG_PRINTF("Error. slot is NULL"); return(-1); } if (buf == NULL) { CACKEY_DEBUG_PRINTF("Error. buf is NULL"); return(-1); } if (outbuf == NULL) { CACKEY_DEBUG_PRINTF("Error. outbuf is NULL"); return(-1); } if (identity == NULL) { CACKEY_DEBUG_PRINTF("Error. identity is NULL"); return(-1); } if (identity->pcsc_identity == NULL) { CACKEY_DEBUG_PRINTF("Error. identity->pcsc_identity is NULL"); return(-1); } id_type = identity->pcsc_identity->id_type; if (id_type == CACKEY_ID_TYPE_CERT_ONLY) { CACKEY_DEBUG_PRINTF("Error. identity->pcsc_identity is CACKEY_ID_TYPE_CERT_ONLY, which cannot be used for sign/decrypt"); return(-1); } switch (id_type) { case CACKEY_ID_TYPE_PIV: case CACKEY_ID_TYPE_CAC: break; default: CACKEY_DEBUG_PRINTF("Error. identity->pcsc_identity is not a supported value. Type is: 0x%lx (PIV = 0x%lx, CAC = 0x%lx)", (unsigned long) id_type, (unsigned long) CACKEY_ID_TYPE_PIV, (unsigned long) CACKEY_ID_TYPE_CAC); return(-1); } /* Determine identity Key size */ if (identity->pcsc_identity->keysize < 0) { identity->pcsc_identity->keysize = x509_to_keysize(identity->pcsc_identity->certificate, identity->pcsc_identity->certificate_len); } /* Pad message to key size */ if (padInput) { if (identity->pcsc_identity->keysize > 0) { if (buflen != identity->pcsc_identity->keysize) { if (buflen > (identity->pcsc_identity->keysize - 3)) { CACKEY_DEBUG_PRINTF("Error. Message is too large to sign/decrypt"); return(-1); } tmpbuflen = identity->pcsc_identity->keysize; tmpbuf = malloc(tmpbuflen); free_tmpbuf = 1; padlen = tmpbuflen - buflen - 3; CACKEY_DEBUG_PRINTF("Need to pad the buffer with %llu bytes (tmpbuflen = %llu, buflen = %llu)", (unsigned long long) padlen, (unsigned long long) tmpbuflen, (unsigned long long) buflen); /* RSA PKCS#1 EMSA-PKCS1-v1_5 Padding */ tmpbuf[0] = 0x00; tmpbuf[1] = 0x01; memset(&tmpbuf[2], 0xFF, padlen); tmpbuf[padlen + 2]= 0x00; memcpy(&tmpbuf[padlen + 3], buf, buflen); CACKEY_DEBUG_PRINTBUF("Unpadded:", buf, buflen); CACKEY_DEBUG_PRINTBUF("Padded:", tmpbuf, tmpbuflen); } else { tmpbuf = buf; tmpbuflen = buflen; free_tmpbuf = 0; padlen = 0; } } else { CACKEY_DEBUG_PRINTF("Unable to determine key size, hoping the message is properly padded!"); tmpbuf = buf; tmpbuflen = buflen; free_tmpbuf = 0; padlen = 0; } } else { tmpbuf = buf; tmpbuflen = buflen; free_tmpbuf = 0; padlen = 0; } /* Begin transaction */ cackey_begin_transaction(slot); /* Select correct applet */ switch (id_type) { case CACKEY_ID_TYPE_CAC: CACKEY_DEBUG_PRINTF("Selecting applet found at %p ...", identity->pcsc_identity->card.cac.applet); cackey_select_applet(slot, identity->pcsc_identity->card.cac.applet, sizeof(identity->pcsc_identity->card.cac.applet)); /* Select correct file */ cackey_select_file(slot, identity->pcsc_identity->card.cac.file); break; case CACKEY_ID_TYPE_PIV: dyn_auth_template[0] = 0x7C; dyn_auth_template[1] = 0x82; dyn_auth_template[2] = ((tmpbuflen + 6) & 0xff00) >> 8; dyn_auth_template[3] = (tmpbuflen + 6) & 0x00ff; dyn_auth_template[4] = 0x82; dyn_auth_template[5] = 0x00; dyn_auth_template[6] = 0x81; dyn_auth_template[7] = 0x82; dyn_auth_template[8] = (tmpbuflen & 0xff00) >> 8; dyn_auth_template[9] = tmpbuflen & 0x00ff; dyn_auth_tmpbuf = malloc(tmpbuflen + sizeof(dyn_auth_template)); memcpy(dyn_auth_tmpbuf, dyn_auth_template, sizeof(dyn_auth_template)); memcpy(dyn_auth_tmpbuf + sizeof(dyn_auth_template), tmpbuf, tmpbuflen); if (free_tmpbuf) { free(tmpbuf); } tmpbuflen += sizeof(dyn_auth_template); tmpbuf = dyn_auth_tmpbuf; free_tmpbuf = 1; break; case CACKEY_ID_TYPE_CERT_ONLY: break; } tmpbuf_s = tmpbuf; outbuf_s = outbuf; while (tmpbuflen) { tmpoutbuflen = outbuflen; if (tmpbuflen > CACKEY_APDU_MTU) { bytes_to_send = CACKEY_APDU_MTU; } else { bytes_to_send = tmpbuflen; } send_ret = CACKEY_PCSC_E_GENERIC; switch (id_type) { case CACKEY_ID_TYPE_CAC: if (tmpbuflen > CACKEY_APDU_MTU) { p1 = 0x80; le = 0x00; } else { p1 = 0x00; le = 0x00; } send_ret = cackey_send_apdu(slot, GSCIS_CLASS_GLOBAL_PLATFORM, GSCIS_INSTR_SIGNDECRYPT, p1, 0x00, bytes_to_send, tmpbuf, le, &respcode, outbuf, &tmpoutbuflen); break; case CACKEY_ID_TYPE_PIV: if (tmpbuflen > CACKEY_APDU_MTU) { class = 0x10; le = 0x00; } else { class = GSCIS_CLASS_ISO7816; le = 256; } send_ret = cackey_send_apdu(slot, class, NISTSP800_73_3_INSTR_GENAUTH, NISTSP800_78_3_ALGO_RSA2048, identity->pcsc_identity->card.piv.key_id, bytes_to_send, tmpbuf, le, &respcode, outbuf, &tmpoutbuflen); break; case CACKEY_ID_TYPE_CERT_ONLY: break; } if (send_ret != CACKEY_PCSC_S_OK) { if (free_tmpbuf) { if (tmpbuf_s) { free(tmpbuf_s); } } /* End transaction */ cackey_end_transaction(slot); if (send_ret == CACKEY_PCSC_E_RETRY) { CACKEY_DEBUG_PRINTF("ADPU Sending Failed -- retrying."); return(cackey_signdecrypt(slot, identity, buf, buflen, outbuf, outbuflen, padInput, unpadOutput)); } CACKEY_DEBUG_PRINTF("ADPU Sending Failed -- returning in error."); if (respcode == 0x6982 || respcode == 0x6e00 || respcode == 0x6d00) { if (respcode == 0x6e00) { CACKEY_DEBUG_PRINTF("Got \"WRONG CLASS\", this means we are talking to the wrong object (likely because the card went away) -- resetting"); } else if (respcode == 0x6d00) { CACKEY_DEBUG_PRINTF("Got \"INVALID INSTRUCTION\", this means we are talking to the wrong object (likely because the card went away) -- resetting"); } else { CACKEY_DEBUG_PRINTF("Security status not satisified (respcode = 0x%04x). Returning NEEDLOGIN", (int) respcode); } cackey_mark_slot_reset(slot); cackey_detect_and_select_root_applet(slot, CACKEY_ID_TYPE_UNKNOWN); slot->token_flags = CKF_LOGIN_REQUIRED; return(CACKEY_PCSC_E_NEEDLOGIN); } if (send_ret == CACKEY_PCSC_E_TOKENABSENT) { CACKEY_DEBUG_PRINTF("Token absent. Returning TOKENABSENT"); cackey_mark_slot_reset(slot); return(CACKEY_PCSC_E_TOKENABSENT); } CACKEY_DEBUG_PRINTF("Something went wrong during signing, resetting the slot and hoping for the best."); cackey_pcsc_disconnect(); cackey_pcsc_connect(); cackey_detect_and_select_root_applet(slot, CACKEY_ID_TYPE_UNKNOWN); return(CACKEY_PCSC_E_GENERIC); } tmpbuf += bytes_to_send; tmpbuflen -= bytes_to_send; outbuf += tmpoutbuflen; outbuflen -= tmpoutbuflen; retval += tmpoutbuflen; } if (free_tmpbuf) { if (tmpbuf_s) { free(tmpbuf_s); } } outbuf = outbuf_s; /* End transaction */ cackey_end_transaction(slot); #ifdef CACKEY_PARANOID # ifdef _POSIX_SSIZE_MAX if (outbuflen > _POSIX_SSIZE_MAX) { CACKEY_DEBUG_PRINTF("Outbuflen exceeds maximum value, returning in failure. (max = %li, outbuflen = %lu)", (long) _POSIX_SSIZE_MAX, (unsigned long) outbuflen); return(-1); } # endif #endif /* We must remove the "7C" tag to get to the signature */ switch (id_type) { case CACKEY_ID_TYPE_PIV: outbuf_len = retval; outbuf_p = cackey_read_bertlv_tag(outbuf, &outbuf_len, 0x7C, NULL, &outbuf_len); if (outbuf_p == NULL) { CACKEY_DEBUG_PRINTF("Response from PIV for GENERATE AUTHENTICATION was not a 0x7C tag, returning in failure"); return(-1); } retval = outbuf_len; outbuf_len = retval; outbuf_p = cackey_read_bertlv_tag(outbuf, &outbuf_len, 0x82, NULL, &outbuf_len); if (outbuf_p == NULL) { CACKEY_DEBUG_PRINTF("Response from PIV for GENERATE AUTHENTICATION was not a 0x82 within a 0x7C tag, returning in failure"); return(-1); } retval = outbuf_len; break; case CACKEY_ID_TYPE_CAC: case CACKEY_ID_TYPE_CERT_ONLY: break; } /* Unpad reply */ if (unpadOutput) { if (retval < 3) { CACKEY_DEBUG_PRINTF("Reply is too small, we are not able to unpad -- passing back and hoping for the best!"); CACKEY_DEBUG_PRINTF("Returning in success, retval = %li (bytes)", (long) retval); return(retval); } if (outbuf[0] != 0x00) { CACKEY_DEBUG_PRINTF("Unrecognized padding scheme -- passing back and hoping for the best!"); CACKEY_DEBUG_PRINTF("Returning in success, retval = %li (bytes)", (long) retval); return(retval); } blocktype = outbuf[1]; unpadoffset = 0; switch (blocktype) { case 0x00: /* Padding Scheme 1, the first non-zero byte is the start of data */ for (unpadoffset = 2; unpadoffset < retval; unpadoffset++) { if (outbuf[unpadoffset] != 0x00) { break; } } break; case 0x01: /* Padding Scheme 2, pad bytes are 0xFF followed by 0x00 */ for (unpadoffset = 2; unpadoffset < retval; unpadoffset++) { if (outbuf[unpadoffset] != 0xFF) { if (outbuf[unpadoffset] == 0x00) { unpadoffset++; break; } else { CACKEY_DEBUG_PRINTF("Invalid padding data found, returning in failure, should have been 0x00 found 0x%02x", (unsigned int) outbuf[unpadoffset]); return(-1); } } else { CACKEY_DEBUG_PRINTF("Invalid padding data found, returning in failure, should have been 0xFF found 0x%02x", (unsigned int) outbuf[unpadoffset]); return(-1); } } break; case 0x02: /* Padding Scheme 3, pad bytes are non-zero first zero byte found is the seperator byte */ for (unpadoffset = 2; unpadoffset < retval; unpadoffset++) { if (outbuf[unpadoffset] == 0x00) { unpadoffset++; break; } } break; } if (unpadoffset > retval) { CACKEY_DEBUG_PRINTF("Offset greater than reply size, aborting. (unpadoffset = %lu, retval = %lu)", (unsigned long) unpadoffset, (unsigned long) retval); return(-1); } CACKEY_DEBUG_PRINTBUF("Padded:", outbuf, retval); retval -= unpadoffset; memmove(outbuf, outbuf + unpadoffset, retval); CACKEY_DEBUG_PRINTBUF("Unpadded:", outbuf, retval); } CACKEY_DEBUG_PRINTF("Returning in success, retval = %li (bytes)", (long) retval); return(retval); } /* * SYNPOSIS * ... * * ARGUMENTS * ... * * RETURN VALUE * ... * * NOTES * ... * */ static cackey_ret cackey_token_present(struct cackey_slot *slot) { cackey_ret pcsc_connect_ret; DWORD reader_len = 0, state = 0, protocol = 0, atr_len; BYTE atr[MAX_ATR_SIZE]; LONG status_ret, scard_reconn_ret; LPSTR reader_name; CACKEY_DEBUG_PRINTF("Called."); if (slot->internal) { CACKEY_DEBUG_PRINTF("Returning token present (internal token)"); return(CACKEY_PCSC_S_TOKENPRESENT); } pcsc_connect_ret = cackey_connect_card(slot); if (pcsc_connect_ret != CACKEY_PCSC_S_OK) { CACKEY_DEBUG_PRINTF("Unable to connect to card, returning token absent"); return(CACKEY_PCSC_E_TOKENABSENT); } CACKEY_DEBUG_PRINTF("Calling SCardStatus() to determine card status"); atr_len = sizeof(atr); status_ret = SCardStatus(slot->pcsc_card, NULL, &reader_len, &state, &protocol, atr, &atr_len); if (status_ret == SCARD_E_INSUFFICIENT_BUFFER) { CACKEY_DEBUG_PRINTF("ScardStatus() returned SCARD_E_INSUFFICIENT_BUFFER, assuming this is a bug (e.g., Google PCSC) implementation and retrying"); atr_len = sizeof(atr); reader_len = 32768; reader_name = malloc(reader_len); status_ret = SCardStatus(slot->pcsc_card, reader_name, &reader_len, &state, &protocol, atr, &atr_len); free(reader_name); } if (status_ret == SCARD_E_INVALID_HANDLE) { CACKEY_DEBUG_PRINTF("SCardStatus() returned SCARD_E_INVALID_HANDLE, marking as not already connected and trying again"); cackey_mark_slot_reset(slot); pcsc_connect_ret = cackey_connect_card(slot); if (pcsc_connect_ret != CACKEY_PCSC_S_OK) { CACKEY_DEBUG_PRINTF("Unable to connect to card, returning token absent"); return(CACKEY_PCSC_E_TOKENABSENT); } CACKEY_DEBUG_PRINTF("Calling SCardStatus() again"); atr_len = sizeof(atr); status_ret = SCardStatus(slot->pcsc_card, NULL, &reader_len, &state, &protocol, atr, &atr_len); } if (status_ret != SCARD_S_SUCCESS) { cackey_mark_slot_reset(slot); if (status_ret == SCARD_W_RESET_CARD) { CACKEY_DEBUG_PRINTF("Reset required, please hold..."); scard_reconn_ret = cackey_reconnect_card(slot, SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1); if (scard_reconn_ret == SCARD_S_SUCCESS) { /* Re-establish transaction, if it was present */ if (slot->transaction_depth > 0) { slot->transaction_depth--; slot->transaction_need_hw_lock = 1; cackey_begin_transaction(slot); } CACKEY_DEBUG_PRINTF("Reset successful, requerying"); status_ret = SCardStatus(slot->pcsc_card, NULL, &reader_len, &state, &protocol, atr, &atr_len); if (status_ret != SCARD_S_SUCCESS) { CACKEY_DEBUG_PRINTF("Still unable to query card status, returning token absent. SCardStatus() = %s", CACKEY_DEBUG_FUNC_SCARDERR_TO_STR(status_ret)); return(CACKEY_PCSC_E_TOKENABSENT); } } else { CACKEY_DEBUG_PRINTF("Unable to reconnect to card, returning token absent. SCardReconnect() = %s", CACKEY_DEBUG_FUNC_SCARDERR_TO_STR(scard_reconn_ret)); return(CACKEY_PCSC_E_TOKENABSENT); } } else { CACKEY_DEBUG_PRINTF("Unable to query card status, returning token absent. SCardStatus() = %s", CACKEY_DEBUG_FUNC_SCARDERR_TO_STR(status_ret)); return(CACKEY_PCSC_E_TOKENABSENT); } } if ((state & SCARD_ABSENT) == SCARD_ABSENT) { CACKEY_DEBUG_PRINTF("Card is absent, returning token absent"); return(CACKEY_PCSC_E_TOKENABSENT); } CACKEY_DEBUG_PRINTF("Returning token present."); return(CACKEY_PCSC_S_TOKENPRESENT); } /* * SYNPOSIS * ... * * ARGUMENTS * ... * * RETURN VALUE * ... * * NOTES * ... * */ static cackey_ret cackey_set_pin(struct cackey_slot *slot, unsigned char *old_pin, unsigned long old_pin_len, unsigned char *pin, unsigned long pin_len) { struct cackey_pcsc_identity *pcsc_identities; unsigned char cac_pin[8] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; unsigned char old_cac_pin[8] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; unsigned char pin_update[sizeof(cac_pin) + sizeof(old_cac_pin)]; unsigned long num_certs; uint16_t response_code; int tries_remaining; int send_ret; int key_reference = 0x00; /* Apparently, CAC PINs are *EXACTLY* 8 bytes long -- pad with 0xFF if too short */ if (pin_len >= 8) { memcpy(cac_pin, pin, 8); } else { memcpy(cac_pin, pin, pin_len); } if (old_pin_len >= 8) { memcpy(old_cac_pin, old_pin, 8); } else { memcpy(old_cac_pin, old_pin, old_pin_len); } /* Concatenate both PINs together to send as a single instruction */ memcpy(pin_update, old_cac_pin, sizeof(old_cac_pin)); memcpy(pin_update + sizeof(old_cac_pin), cac_pin, sizeof(cac_pin)); /* Reject PINs which are too short */ if (pin_len < 5) { CACKEY_DEBUG_PRINTF("Rejecting New PIN which is too short (length = %lu, must be atleast 5)", pin_len); return(CACKEY_PCSC_E_BADPIN); } if (old_pin_len < 5) { CACKEY_DEBUG_PRINTF("Rejecting Old PIN which is too short (length = %lu, must be atleast 5)", old_pin_len); return(CACKEY_PCSC_E_BADPIN); } /* PIV authentication uses a "key_reference" of 0x80 */ pcsc_identities = cackey_read_certs(slot, NULL, &num_certs); if (num_certs > 0 && pcsc_identities != NULL) { switch (pcsc_identities[0].id_type) { case CACKEY_ID_TYPE_PIV: CACKEY_DEBUG_PRINTF("We have PIV card, so we will attempt to authenticate using the PIV Application key reference"); key_reference = 0x80; break; default: break; } cackey_free_certs(pcsc_identities, num_certs, 1); } /* Issue a Set PIN (CHANGE REFERENCE) */ send_ret = cackey_send_apdu(slot, GSCIS_CLASS_ISO7816, GSCIS_INSTR_CHANGE_REFERENCE, 0x00, key_reference, sizeof(pin_update), pin_update, 0x00, &response_code, NULL, NULL); if (send_ret != CACKEY_PCSC_S_OK) { if ((response_code & 0x63C0) == 0x63C0) { tries_remaining = (response_code & 0xF); CACKEY_DEBUG_PRINTF("PIN Verification failed, %i tries remaining", tries_remaining); return(CACKEY_PCSC_E_BADPIN); } if (response_code == 0x6983) { CACKEY_DEBUG_PRINTF("Unable to set PIN, device is locked or changing the PIN is disabled"); return(CACKEY_PCSC_E_LOCKED); } return(CACKEY_PCSC_E_GENERIC); } CACKEY_DEBUG_PRINTF("PIN Change succeeded"); return(CACKEY_PCSC_S_OK); /* Disable a warning, since this is only used in debug mode */ tries_remaining = tries_remaining; } /* * SYNPOSIS * ... * * ARGUMENTS * ... * * RETURN VALUE * ... * * NOTES * ... * */ static cackey_ret cackey_login(struct cackey_slot *slot, unsigned char *pin, unsigned long pin_len, int *tries_remaining_p, int retries) { struct cackey_pcsc_identity *pcsc_identities; unsigned char cac_pin[8] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; unsigned long num_certs; uint16_t response_code; int tries_remaining; int send_ret; int key_reference = 0x00, have_piv = 0; cackey_ret connect_ret, token_ret; /* Indicate that we do not know about how many tries are remaining */ if (tries_remaining_p) { *tries_remaining_p = -1; } /* Apparently, CAC PINs are *EXACTLY* 8 bytes long -- pad with 0xFF if too short */ if (pin_len >= 8) { memcpy(cac_pin, pin, 8); } else { memcpy(cac_pin, pin, pin_len); } /* Reject PINs which are too short */ if (pin_len < 5) { CACKEY_DEBUG_PRINTF("Rejecting PIN which is too short (length = %lu, must be atleast 5)", pin_len); return(CACKEY_PCSC_E_BADPIN); } /* PIV authentication uses a "key_reference" of 0x80 */ pcsc_identities = cackey_read_certs(slot, NULL, &num_certs); if (num_certs > 0 && pcsc_identities != NULL) { switch (pcsc_identities[0].id_type) { case CACKEY_ID_TYPE_PIV: CACKEY_DEBUG_PRINTF("We have PIV card, so we will attempt to authenticate using the PIV Application key reference"); have_piv = 1; break; default: break; } cackey_free_certs(pcsc_identities, num_certs, 1); } if (have_piv == 1) { key_reference = 0x80; } /* Issue PIN Verify */ send_ret = cackey_send_apdu(slot, GSCIS_CLASS_ISO7816, GSCIS_INSTR_VERIFY, 0x00, key_reference, sizeof(cac_pin), cac_pin, 0x00, &response_code, NULL, NULL); if (send_ret != CACKEY_PCSC_S_OK) { if ((response_code & 0x63C0) == 0x63C0) { tries_remaining = (response_code & 0xF); CACKEY_DEBUG_PRINTF("PIN Verification failed, %i tries remaining", tries_remaining); if (tries_remaining_p) { *tries_remaining_p = tries_remaining; } return(CACKEY_PCSC_E_BADPIN); } if (response_code == 0x6983) { CACKEY_DEBUG_PRINTF("PIN Verification failed, device is locked"); return(CACKEY_PCSC_E_LOCKED); } if (response_code == 0x6d00) { if (retries > 0) { CACKEY_DEBUG_PRINTF("Got ISO 7816 Response \"6D 00\" in response to a VERIFY request."); CACKEY_DEBUG_PRINTF("We did not expect this because it is not mentioned in NIST SP 800-73-3 Part 2 Section 3.2.1 or GSC-IS v2.1"); CACKEY_DEBUG_PRINTF("We are going to try to reset the card and select the applet again."); if (num_certs > 0 && pcsc_identities != NULL) { cackey_detect_and_select_root_applet(slot, pcsc_identities[0].id_type); } cackey_mark_slot_reset(slot); connect_ret = cackey_connect_card(slot); if (connect_ret != CACKEY_PCSC_S_OK) { CACKEY_DEBUG_PRINTF("Unable to reconnect after resetting the card, returning in error."); return(connect_ret); } CACKEY_DEBUG_PRINTF("Verifying we still have a token."); token_ret = cackey_token_present(slot); if (token_ret != CACKEY_PCSC_S_TOKENPRESENT) { CACKEY_DEBUG_PRINTF("Token not present, returning in error."); return(token_ret); } CACKEY_DEBUG_PRINTF("Trying to login again"); return(cackey_login(slot, pin, pin_len, tries_remaining_p, retries - 1)); } } return(CACKEY_PCSC_E_GENERIC); } CACKEY_DEBUG_PRINTF("PIN Verification succeeded"); return(CACKEY_PCSC_S_OK); } /* * SYNPOSIS * ... * * ARGUMENTS * ... * * RETURN VALUE * ... * * NOTES * ... * */ static ssize_t cackey_pcsc_identity_to_label(struct cackey_pcsc_identity *identity, unsigned char *label_buf, unsigned long label_buf_len) { unsigned long certificate_len; void *label_asn1; void *certificate; int x509_read_ret; certificate = identity->certificate; certificate_len = identity->certificate_len; if (certificate_len < 0) { return(-1); } x509_read_ret = x509_to_subject(certificate, certificate_len, (void **) &label_asn1); if (x509_read_ret < 0) { return(-1); } x509_read_ret = x509_dn_to_string(label_asn1, x509_read_ret, (char *) label_buf, label_buf_len, "CN"); if (x509_read_ret <= 0) { x509_read_ret = x509_dn_to_string(label_asn1, x509_read_ret, (char *) label_buf, label_buf_len, NULL); if (x509_read_ret <= 0) { return(-1); } } #ifdef CACKEY_PARANOID # ifdef _POSIX_SSIZE_MAX if (x509_read_ret > _POSIX_SSIZE_MAX) { CACKEY_DEBUG_PRINTF("x509_read_ret exceeds maximum value, returning in failure. (max = %li, x509_read_ret = %lu)", (long) _POSIX_SSIZE_MAX, (unsigned long) x509_read_ret); return(-1); } # endif #endif return(x509_read_ret); } /* Returns 0 on success */ static int cackey_mutex_create(void **mutex) { pthread_mutex_t *pthread_mutex; int pthread_retval; CK_RV custom_retval; CACKEY_DEBUG_PRINTF("Called."); if ((cackey_args.flags & CKF_OS_LOCKING_OK) == CKF_OS_LOCKING_OK) { pthread_mutex = malloc(sizeof(*pthread_mutex)); if (!pthread_mutex) { CACKEY_DEBUG_PRINTF("Failed to allocate memory."); return(-1); } pthread_retval = pthread_mutex_init(pthread_mutex, NULL); if (pthread_retval != 0) { CACKEY_DEBUG_PRINTF("pthread_mutex_init() returned error (%i).", pthread_retval); return(-1); } *mutex = pthread_mutex; } else { if (cackey_args.CreateMutex) { custom_retval = cackey_args.CreateMutex(mutex); if (custom_retval != CKR_OK) { CACKEY_DEBUG_PRINTF("cackey_args.CreateMutex() returned error (%li).", (long) custom_retval); return(-1); } } } CACKEY_DEBUG_PRINTF("Returning sucessfully (0)"); return(0); } /* Returns 0 on success */ static int cackey_mutex_lock(void *mutex) { pthread_mutex_t *pthread_mutex; int pthread_retval; CK_RV custom_retval; CACKEY_DEBUG_PRINTF("Called."); if ((cackey_args.flags & CKF_OS_LOCKING_OK) == CKF_OS_LOCKING_OK) { pthread_mutex = mutex; pthread_retval = pthread_mutex_lock(pthread_mutex); if (pthread_retval != 0) { CACKEY_DEBUG_PRINTF("pthread_mutex_lock() returned error (%i).", pthread_retval); return(-1); } } else { if (cackey_args.LockMutex) { custom_retval = cackey_args.LockMutex(mutex); if (custom_retval != CKR_OK) { CACKEY_DEBUG_PRINTF("cackey_args.LockMutex() returned error (%li).", (long) custom_retval); return(-1); } } } CACKEY_DEBUG_PRINTF("Returning sucessfully (0)"); return(0); } /* Returns 0 on success */ static int cackey_mutex_unlock(void *mutex) { pthread_mutex_t *pthread_mutex; int pthread_retval; CK_RV custom_retval; CACKEY_DEBUG_PRINTF("Called."); if ((cackey_args.flags & CKF_OS_LOCKING_OK) == CKF_OS_LOCKING_OK) { pthread_mutex = mutex; pthread_retval = pthread_mutex_unlock(pthread_mutex); if (pthread_retval != 0) { CACKEY_DEBUG_PRINTF("pthread_mutex_unlock() returned error (%i).", pthread_retval); return(-1); } } else { if (cackey_args.UnlockMutex) { custom_retval = cackey_args.UnlockMutex(mutex); if (custom_retval != CKR_OK) { CACKEY_DEBUG_PRINTF("cackey_args.UnlockMutex() returned error (%li).", (long) custom_retval); return(-1); } } } CACKEY_DEBUG_PRINTF("Returning sucessfully (0)"); return(0); } static CK_ATTRIBUTE_PTR cackey_get_attributes(CK_OBJECT_CLASS objectclass, struct cackey_pcsc_identity *identity, unsigned long identity_num, CK_ULONG_PTR pulCount) { static CK_BBOOL ck_true = 1; static CK_BBOOL ck_false = 0; static CK_TRUST ck_trusted = CK_TRUSTED_DELEGATOR; CK_ULONG numattrs = 0, retval_count; CK_ATTRIBUTE_TYPE curr_attr_type; CK_ATTRIBUTE curr_attr, *retval; CK_VOID_PTR pValue; CK_ULONG ulValueLen; CK_OBJECT_CLASS ck_object_class; CK_CERTIFICATE_TYPE ck_certificate_type; CK_KEY_TYPE ck_key_type; CK_UTF8CHAR ucTmpBuf[1024]; SHA1Context sha1_ctx; MD5_CTX md5_ctx; uint8_t sha1_hash[SHA1HashSize]; uint8_t md5_hash[MD5HashSize]; unsigned char *certificate; ssize_t certificate_len = -1, x509_read_ret; int pValue_free; CACKEY_DEBUG_PRINTF("Called (objectClass = %lu, identity_num = %lu).", (unsigned long) objectclass, identity_num); *pulCount = 0; if (objectclass != CKO_CERTIFICATE && objectclass != CKO_PUBLIC_KEY && objectclass != CKO_PRIVATE_KEY && objectclass != CKO_NETSCAPE_TRUST) { CACKEY_DEBUG_PRINTF("Returning 0 objects (NULL), invalid object class"); return(NULL); } /* Get Cert */ if (identity == NULL) { CACKEY_DEBUG_PRINTF("Returning 0 objects (NULL), invalid identiy provided"); return(NULL); } certificate = identity->certificate; certificate_len = identity->certificate_len; if (certificate_len == -1 || certificate == NULL) { CACKEY_DEBUG_PRINTF("Returning 0 objects (NULL), this identity does not have an X.509 certificate associated with it and will not work"); return(NULL); } /* Verify that certificate is ASN.1 encoded X.509 certificate */ if (x509_to_serial(certificate, certificate_len, NULL) < 0) { CACKEY_DEBUG_PRINTF("Returning 0 objects (NULL), the X.509 certificate associated with this identity is not valid"); return(NULL); } retval_count = 64; retval = malloc(retval_count * sizeof(*retval)); for (curr_attr_type = 0; curr_attr_type < 0xce5363bf; curr_attr_type++) { if (curr_attr_type == 0x800) { curr_attr_type = 0xce536300; } pValue_free = 0; pValue = NULL; ulValueLen = (CK_LONG) -1; switch (curr_attr_type) { case CKA_CLASS: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_CLASS (0x%08lx) ...", (unsigned long) curr_attr_type); ck_object_class = objectclass; pValue = &ck_object_class; ulValueLen = sizeof(ck_object_class); CACKEY_DEBUG_PRINTF(" ... returning %lu (%p/%lu)", (unsigned long) *((CK_OBJECT_CLASS *) pValue), pValue, (unsigned long) ulValueLen); break; case CKA_TOKEN: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_TOKEN (0x%08lx) ...", (unsigned long) curr_attr_type); pValue = &ck_true; ulValueLen = sizeof(ck_true); CACKEY_DEBUG_PRINTF(" ... returning %lu (%p/%lu)", (unsigned long) *((CK_BBOOL *) pValue), pValue, (unsigned long) ulValueLen); break; case CKA_PRIVATE: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_PRIVATE (0x%08lx) ...", (unsigned long) curr_attr_type); if (objectclass != CKO_NETSCAPE_TRUST) { CACKEY_DEBUG_PRINTF(" ... but not getting it because we are not a Netscape trust object"); break; } pValue = &ck_false; ulValueLen = sizeof(ck_false); CACKEY_DEBUG_PRINTF(" ... returning %lu (%p/%lu)", (unsigned long) *((CK_BBOOL *) pValue), pValue, (unsigned long) ulValueLen); break; case CKA_TRUSTED: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_TRUSTED (0x%08lx) ...", (unsigned long) curr_attr_type); if (objectclass == CKO_NETSCAPE_TRUST) { CACKEY_DEBUG_PRINTF(" ... but not getting it because we are a Netscape trust object"); break; } pValue = &ck_true; ulValueLen = sizeof(ck_true); CACKEY_DEBUG_PRINTF(" ... returning %lu (%p/%lu)", (unsigned long) *((CK_BBOOL *) pValue), pValue, (unsigned long) ulValueLen); break; case CKA_MODIFIABLE: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_MODIFIABLE (0x%08lx) ...", (unsigned long) curr_attr_type); pValue = &ck_false; ulValueLen = sizeof(ck_false); CACKEY_DEBUG_PRINTF(" ... returning %lu (%p/%lu)", (unsigned long) *((CK_BBOOL *) pValue), pValue, (unsigned long) ulValueLen); break; case CKA_LABEL: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_LABEL (0x%08lx) ...", (unsigned long) curr_attr_type); if (identity->id_type == CACKEY_ID_TYPE_PIV) { pValue = identity->card.piv.label; ulValueLen = strlen(pValue); } else { ulValueLen = snprintf((char *) ucTmpBuf, sizeof(ucTmpBuf), "Identity #%lu", (unsigned long) identity_num); pValue = ucTmpBuf; if (ulValueLen >= sizeof(ucTmpBuf)) { ulValueLen = 0; pValue = NULL; } } CACKEY_DEBUG_PRINTF(" ... returning (%p/%lu)", pValue, (unsigned long) ulValueLen); break; case CKA_VALUE: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_VALUE (0x%08lx) ...", (unsigned long) curr_attr_type); switch (objectclass) { case CKO_PRIVATE_KEY: CACKEY_DEBUG_PRINTF(" ... but not getting it because we are a private key."); break; case CKO_NETSCAPE_TRUST: CACKEY_DEBUG_PRINTF(" ... but not getting it because we are a Netscape trust object"); break; case CKO_PUBLIC_KEY: if (certificate_len >= 0) { x509_read_ret = x509_to_pubkey(certificate, certificate_len, &pValue); if (x509_read_ret < 0) { pValue = NULL; } else { ulValueLen = x509_read_ret; } } break; case CKO_CERTIFICATE: pValue = certificate; ulValueLen = certificate_len; break; } CACKEY_DEBUG_PRINTF(" ... returning %p/%lu", pValue, (unsigned long) ulValueLen); break; case CKA_ISSUER: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_ISSUER (0x%08lx) ...", (unsigned long) curr_attr_type); if (objectclass != CKO_CERTIFICATE && objectclass != CKO_NETSCAPE_TRUST) { CACKEY_DEBUG_PRINTF(" ... but not getting it because we are not a certificate or Netscape trust object"); break; } if (certificate_len >= 0) { x509_read_ret = x509_to_issuer(certificate, certificate_len, &pValue); if (x509_read_ret < 0) { pValue = NULL; } else { ulValueLen = x509_read_ret; } } CACKEY_DEBUG_PRINTF(" ... returning %p/%lu", pValue, (unsigned long) ulValueLen); break; case CKA_SERIAL_NUMBER: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_SERIAL_NUMBER (0x%08lx) ...", (unsigned long) curr_attr_type); if (objectclass != CKO_CERTIFICATE && objectclass != CKO_NETSCAPE_TRUST) { CACKEY_DEBUG_PRINTF(" ... but not getting it because we are not a certificate or Netscape trust object"); break; } if (certificate_len >= 0) { x509_read_ret = x509_to_serial(certificate, certificate_len, &pValue); if (x509_read_ret < 0) { pValue = NULL; } else { ulValueLen = x509_read_ret; } } CACKEY_DEBUG_PRINTF(" ... returning (%p/%lu)", pValue, (unsigned long) ulValueLen); break; case CKA_SUBJECT: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_SUBJECT (0x%08lx) ...", (unsigned long) curr_attr_type); if (objectclass != CKO_CERTIFICATE) { CACKEY_DEBUG_PRINTF(" ... but not getting it because we are not a certificate"); break; } if (certificate_len >= 0) { x509_read_ret = x509_to_subject(certificate, certificate_len, &pValue); if (x509_read_ret < 0) { pValue = NULL; } else { ulValueLen = x509_read_ret; } } CACKEY_DEBUG_PRINTF(" ... returning %p/%lu", pValue, (unsigned long) ulValueLen); break; case CKA_ID: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_ID (0x%08lx) ...", (unsigned long) curr_attr_type); if (objectclass == CKO_NETSCAPE_TRUST) { CACKEY_DEBUG_PRINTF(" ... but not getting it because we are a Netscape trust object"); break; } ucTmpBuf[0] = ((identity_num + 1) >> 8) & 0xff; ucTmpBuf[1] = (identity_num + 1) & 0xff; pValue = &ucTmpBuf; ulValueLen = 2; CACKEY_DEBUG_PRINTF(" ... returning %p/%lu", pValue, (unsigned long) ulValueLen); break; case CKA_CERTIFICATE_TYPE: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_CERTIFICATE_TYPE (0x%08lx) ...", (unsigned long) curr_attr_type); if (objectclass != CKO_CERTIFICATE) { CACKEY_DEBUG_PRINTF(" ... but not getting it because we are not a certificate."); break; } /* We only support one certificate type */ ck_certificate_type = CKC_X_509; pValue = &ck_certificate_type; ulValueLen = sizeof(ck_certificate_type); CACKEY_DEBUG_PRINTF(" ... returning CKC_X_509 (%lu) (%p/%lu)", (unsigned long) *((CK_CERTIFICATE_TYPE *) pValue), pValue, (unsigned long) ulValueLen); break; case CKA_KEY_TYPE: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_KEY_TYPE (0x%08lx) ...", (unsigned long) curr_attr_type); if (objectclass != CKO_PRIVATE_KEY && objectclass != CKO_PUBLIC_KEY) { CACKEY_DEBUG_PRINTF(" ... but not getting it because we are not a key."); break; } /* We only support one key type */ ck_key_type = CKK_RSA; pValue = &ck_key_type; ulValueLen = sizeof(ck_key_type); CACKEY_DEBUG_PRINTF(" ... returning CKK_RSA (%lu) (%p/%lu)", (unsigned long) *((CK_CERTIFICATE_TYPE *) pValue), pValue, (unsigned long) ulValueLen); break; case CKA_SIGN: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_SIGN (0x%08lx) ...", (unsigned long) curr_attr_type); if (objectclass == CKO_NETSCAPE_TRUST) { CACKEY_DEBUG_PRINTF(" ... but not getting it because we are a Netscape trust object"); break; } if (objectclass == CKO_PRIVATE_KEY) { pValue = &ck_true; ulValueLen = sizeof(ck_true); } else { pValue = &ck_false; ulValueLen = sizeof(ck_false); } CACKEY_DEBUG_PRINTF(" ... returning %lu (%p/%lu)", (unsigned long) *((CK_BBOOL *) pValue), pValue, (unsigned long) ulValueLen); break; case CKA_SIGN_RECOVER: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_SIGN_RECOVER (0x%08lx) ...", (unsigned long) curr_attr_type); if (objectclass == CKO_NETSCAPE_TRUST) { CACKEY_DEBUG_PRINTF(" ... but not getting it because we are a Netscape trust object"); break; } /* We currently only support "Sign with Appendix" */ pValue = &ck_false; ulValueLen = sizeof(ck_false); CACKEY_DEBUG_PRINTF(" ... returning %lu (%p/%lu)", (unsigned long) *((CK_BBOOL *) pValue), pValue, (unsigned long) ulValueLen); break; case CKA_DECRYPT: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_DECRYPT (0x%08lx) ...", (unsigned long) curr_attr_type); if (objectclass == CKO_NETSCAPE_TRUST) { CACKEY_DEBUG_PRINTF(" ... but not getting it because we are a Netscape trust object"); break; } if (objectclass == CKO_PRIVATE_KEY || objectclass == CKO_PUBLIC_KEY) { pValue = &ck_true; ulValueLen = sizeof(ck_true); } else { pValue = &ck_false; ulValueLen = sizeof(ck_false); } CACKEY_DEBUG_PRINTF(" ... returning %lu (%p/%lu)", (unsigned long) *((CK_BBOOL *) pValue), pValue, (unsigned long) ulValueLen); break; case CKA_SENSITIVE: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_SENSITIVE (0x%08lx) ...", (unsigned long) curr_attr_type); if (objectclass == CKO_NETSCAPE_TRUST) { CACKEY_DEBUG_PRINTF(" ... but not getting it because we are a Netscape trust object"); break; } if (objectclass == CKO_PRIVATE_KEY) { pValue = &ck_true; ulValueLen = sizeof(ck_true); } else { pValue = &ck_false; ulValueLen = sizeof(ck_false); } CACKEY_DEBUG_PRINTF(" ... returning %lu (%p/%lu)", (unsigned long) *((CK_BBOOL *) pValue), pValue, (unsigned long) ulValueLen); break; case CKA_EXTRACTABLE: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_EXTRACTABLE (0x%08lx) ...", (unsigned long) curr_attr_type); if (objectclass == CKO_NETSCAPE_TRUST) { CACKEY_DEBUG_PRINTF(" ... but not getting it because we are a Netscape trust object"); break; } if (objectclass == CKO_PRIVATE_KEY) { pValue = &ck_false; ulValueLen = sizeof(ck_true); } else { pValue = &ck_true; ulValueLen = sizeof(ck_false); } CACKEY_DEBUG_PRINTF(" ... returning %lu (%p/%lu)", (unsigned long) *((CK_BBOOL *) pValue), pValue, (unsigned long) ulValueLen); break; case CKA_MODULUS: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_MODULUS (0x%08lx) ...", (unsigned long) curr_attr_type); if (objectclass == CKO_NETSCAPE_TRUST) { CACKEY_DEBUG_PRINTF(" ... but not getting it because we are a Netscape trust object"); break; } if (certificate_len >= 0) { x509_read_ret = x509_to_modulus(certificate, certificate_len, &pValue); if (x509_read_ret < 0) { pValue = NULL; } else { ulValueLen = x509_read_ret; } } CACKEY_DEBUG_PRINTF(" ... returning (%p/%lu)", pValue, (unsigned long) ulValueLen); break; case CKA_PUBLIC_EXPONENT: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_PUBLIC_EXPONENT (0x%08lx) ...", (unsigned long) curr_attr_type); if (objectclass == CKO_NETSCAPE_TRUST) { CACKEY_DEBUG_PRINTF(" ... but not getting it because we are a Netscape trust object"); break; } if (certificate_len >= 0) { x509_read_ret = x509_to_exponent(certificate, certificate_len, &pValue); if (x509_read_ret < 0) { pValue = NULL; } else { ulValueLen = x509_read_ret; } } CACKEY_DEBUG_PRINTF(" ... returning (%p/%lu)", pValue, (unsigned long) ulValueLen); break; case CKA_TRUST_DIGITAL_SIGNATURE: case CKA_TRUST_NON_REPUDIATION: case CKA_TRUST_KEY_ENCIPHERMENT: case CKA_TRUST_DATA_ENCIPHERMENT: case CKA_TRUST_KEY_AGREEMENT: case CKA_TRUST_KEY_CERT_SIGN: case CKA_TRUST_CRL_SIGN: case CKA_TRUST_SERVER_AUTH: case CKA_TRUST_CLIENT_AUTH: case CKA_TRUST_CODE_SIGNING: case CKA_TRUST_EMAIL_PROTECTION: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_TRUST_... (0x%08lx) ...", (unsigned long) curr_attr_type); pValue = &ck_trusted; ulValueLen = sizeof(ck_trusted); CACKEY_DEBUG_PRINTF(" ... returning %lu (%p/%lu)", (unsigned long) *((CK_TRUST *) pValue), pValue, (unsigned long) ulValueLen); break; case CKA_CERT_SHA1_HASH: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_CERT_SHA1_HASH (0x%08lx) ...", (unsigned long) curr_attr_type); if (objectclass != CKO_NETSCAPE_TRUST) { CACKEY_DEBUG_PRINTF(" ... but not getting it because we are not a Netscape trust object"); break; } SHA1Reset(&sha1_ctx); SHA1Input(&sha1_ctx, certificate, certificate_len); SHA1Result(&sha1_ctx, sha1_hash); pValue = sha1_hash; ulValueLen = sizeof(sha1_hash); CACKEY_DEBUG_PRINTF(" ... returning %p/%lu", pValue, (unsigned long) ulValueLen); break; case CKA_CERT_MD5_HASH: CACKEY_DEBUG_PRINTF("Requesting attribute CKA_CERT_MD5_HASH (0x%08lx) ...", (unsigned long) curr_attr_type); if (objectclass != CKO_NETSCAPE_TRUST) { CACKEY_DEBUG_PRINTF(" ... but not getting it because we are not a Netscape trust object"); break; } MD5Init(&md5_ctx); MD5Update(&md5_ctx, certificate, certificate_len); MD5Final(md5_hash, &md5_ctx); pValue = md5_hash; ulValueLen = sizeof(md5_hash); CACKEY_DEBUG_PRINTF(" ... returning %p/%lu", pValue, (unsigned long) ulValueLen); break; default: pValue = NULL; ulValueLen = (CK_LONG) -1; break; } if (((CK_LONG) ulValueLen) != ((CK_LONG) -1)) { /* Push curr_attr onto the stack */ curr_attr.type = curr_attr_type; curr_attr.ulValueLen = ulValueLen; curr_attr.pValue = malloc(curr_attr.ulValueLen); memcpy(curr_attr.pValue, pValue, curr_attr.ulValueLen); if (pValue_free && pValue) { free(pValue); } if (numattrs >= retval_count) { retval = realloc(retval, retval_count * sizeof(*retval)); } memcpy(&retval[numattrs], &curr_attr, sizeof(curr_attr)); numattrs++; } } if (numattrs != 0) { retval_count = numattrs; retval = realloc(retval, retval_count * sizeof(*retval)); } else { free(retval); retval = NULL; } *pulCount = numattrs; CACKEY_DEBUG_PRINTF("Returning %lu objects (%p).", numattrs, (void *) retval); return(retval); } static void cackey_free_identities(struct cackey_identity *identities, unsigned long identities_count) { CK_ATTRIBUTE *curr_attr; unsigned long id_idx, attr_idx; if (identities == NULL || identities_count == 0) { return; } for (id_idx = 0; id_idx < identities_count; id_idx++) { if (identities[id_idx].attributes) { for (attr_idx = 0; attr_idx < identities[id_idx].attributes_count; attr_idx++) { curr_attr = &identities[id_idx].attributes[attr_idx]; if (curr_attr->pValue) { free(curr_attr->pValue); } } if (identities[id_idx].attributes) { free(identities[id_idx].attributes); } cackey_free_certs(identities[id_idx].pcsc_identity, 1, 1); } } free(identities); } static unsigned long cackey_read_dod_identities(struct cackey_identity *identities, unsigned long num_dod_certs) { unsigned long cert_idx, id_idx = 0; if (identities == NULL) { return(num_dod_certs * 3); } for (cert_idx = 0; cert_idx < num_dod_certs; cert_idx++) { identities[id_idx].pcsc_identity = NULL; identities[id_idx].attributes = cackey_get_attributes(CKO_CERTIFICATE, &extra_certs[cert_idx], 0xf000 | cert_idx, &identities[id_idx].attributes_count); id_idx++; identities[id_idx].pcsc_identity = NULL; identities[id_idx].attributes = cackey_get_attributes(CKO_PUBLIC_KEY, &extra_certs[cert_idx], 0xf000 | cert_idx, &identities[id_idx].attributes_count); id_idx++; identities[id_idx].pcsc_identity = NULL; identities[id_idx].attributes = cackey_get_attributes(CKO_NETSCAPE_TRUST, &extra_certs[cert_idx], 0xf000 | cert_idx, &identities[id_idx].attributes_count); id_idx++; } return(id_idx); } static struct cackey_identity *cackey_read_identities(struct cackey_slot *slot, unsigned long *ids_found) { struct cackey_pcsc_identity *pcsc_identities; struct cackey_identity *identities; unsigned long num_ids, id_idx, curr_id_type; unsigned long num_certs, num_dod_certs, cert_idx; int include_extra_certs = 0, include_dod_certs; CACKEY_DEBUG_PRINTF("Called."); if (ids_found == NULL) { CACKEY_DEBUG_PRINTF("Error. ids_found is NULL"); return(NULL); } #ifdef CACKEY_CARD_SLOT_INCLUDE_EXTRA_CERTS include_extra_certs = 1; #endif if (getenv("CACKEY_DOD_CERTS_ON_HW_SLOTS") != NULL) { include_extra_certs = 1; } if (getenv("CACKEY_NO_DOD_CERTS_ON_HW_SLOTS") != NULL) { include_extra_certs = 0; } #ifdef CACKEY_NO_EXTRA_CERTS if (getenv("CACKEY_EXTRA_CERTS") != NULL) { include_dod_certs = 1; } else { include_dod_certs = 0; } #else if (getenv("CACKEY_NO_EXTRA_CERTS") != NULL) { include_dod_certs = 0; } else { include_dod_certs = 1; } #endif if (include_dod_certs) { num_dod_certs = sizeof(extra_certs) / sizeof(extra_certs[0]); } else { num_dod_certs = 0; } if (slot->internal) { num_ids = cackey_read_dod_identities(NULL, num_dod_certs); if (num_ids != 0) { identities = malloc(num_ids * sizeof(*identities)); cackey_read_dod_identities(identities, num_dod_certs); } else { identities = NULL; } *ids_found = num_ids; return(identities); } pcsc_identities = cackey_read_certs(slot, NULL, &num_certs); if (pcsc_identities != NULL) { /* Convert number of Certs to number of objects */ num_ids = (CKO_PRIVATE_KEY - CKO_CERTIFICATE + 1) * num_certs; if (include_extra_certs) { num_ids += cackey_read_dod_identities(NULL, num_dod_certs); } identities = malloc(num_ids * sizeof(*identities)); /* Add certificates, public keys, and private keys from the smartcard */ id_idx = 0; for (cert_idx = 0; cert_idx < num_certs; cert_idx++) { for (curr_id_type = CKO_CERTIFICATE; curr_id_type <= CKO_PRIVATE_KEY; curr_id_type++) { identities[id_idx].attributes = cackey_get_attributes(curr_id_type, &pcsc_identities[cert_idx], cert_idx, &identities[id_idx].attributes_count); identities[id_idx].pcsc_identity = malloc(sizeof(*identities[id_idx].pcsc_identity)); memcpy(identities[id_idx].pcsc_identity, &pcsc_identities[cert_idx], sizeof(*identities[id_idx].pcsc_identity)); identities[id_idx].pcsc_identity->certificate = malloc(pcsc_identities[cert_idx].certificate_len); memcpy(identities[id_idx].pcsc_identity->certificate, pcsc_identities[cert_idx].certificate, pcsc_identities[cert_idx].certificate_len); id_idx++; } } if (include_extra_certs) { CACKEY_DEBUG_PRINTF("Including US Government Certificates on hardware slot"); cackey_read_dod_identities(identities + id_idx, num_dod_certs); } cackey_free_certs(pcsc_identities, num_certs, 1); *ids_found = num_ids; return(identities); } *ids_found = 0; return(NULL); } static cackey_ret cackey_get_pin(char *pinbuf) { FILE *pinfd; char *fgets_ret; int pclose_ret; if (cackey_pin_command == NULL) { return(CACKEY_PCSC_E_GENERIC); } if (pinbuf == NULL) { return(CACKEY_PCSC_E_GENERIC); } CACKEY_DEBUG_PRINTF("CACKEY_PIN_COMMAND = %s", cackey_pin_command); pinfd = popen(cackey_pin_command, "r"); if (pinfd == NULL) { CACKEY_DEBUG_PRINTF("Error. %s: Unable to run", cackey_pin_command); return(CACKEY_PCSC_E_BADPIN); } fgets_ret = fgets(pinbuf, 32, pinfd); if (fgets_ret == NULL) { pinbuf[0] = '\0'; } pclose_ret = pclose(pinfd); if (pclose_ret == -1 && errno == ECHILD) { CACKEY_DEBUG_PRINTF("Notice. pclose() indicated it could not get the status of the child, assuming it succeeeded !"); pclose_ret = 0; } if (pclose_ret != 0) { CACKEY_DEBUG_PRINTF("Error. %s: exited with non-zero status of %i", cackey_pin_command, pclose_ret); return(CACKEY_PCSC_E_BADPIN); } if (strlen(pinbuf) < 1) { CACKEY_DEBUG_PRINTF("Error. %s: returned no data", cackey_pin_command); return(CACKEY_PCSC_E_BADPIN); } if (pinbuf[strlen(pinbuf) - 1] == '\n') { pinbuf[strlen(pinbuf) - 1] = '\0'; } return(CACKEY_PCSC_S_OK); } CK_DEFINE_FUNCTION(CK_RV, C_Initialize)(CK_VOID_PTR pInitArgs) { CK_C_INITIALIZE_ARGS CK_PTR args; uint32_t idx, highest_slot; int mutex_init_ret; int include_dod_certs; CACKEY_DEBUG_PRINTF("Called."); if (cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Already initialized."); return(CKR_CRYPTOKI_ALREADY_INITIALIZED); } if (pInitArgs != NULL) { args = pInitArgs; memcpy(&cackey_args, args, sizeof(cackey_args)); if (args->CreateMutex == NULL || args->DestroyMutex == NULL || args->LockMutex == NULL || args->UnlockMutex == NULL) { if (args->CreateMutex != NULL || args->DestroyMutex != NULL || args->LockMutex != NULL || args->UnlockMutex != NULL) { CACKEY_DEBUG_PRINTF("Error. Some, but not All threading primitives provided."); return(CKR_ARGUMENTS_BAD); } } } else { cackey_args.CreateMutex = NULL; cackey_args.DestroyMutex = NULL; cackey_args.LockMutex = NULL; cackey_args.UnlockMutex = NULL; cackey_args.flags = 0; } for (idx = 0; idx < (sizeof(cackey_sessions) / sizeof(cackey_sessions[0])); idx++) { cackey_sessions[idx].active = 0; } for (idx = 0; idx < (sizeof(cackey_slots) / sizeof(cackey_slots[0])); idx++) { cackey_slots[idx].active = 0; cackey_slots[idx].pcsc_reader = NULL; cackey_slots[idx].transaction_depth = 0; cackey_slots[idx].transaction_need_hw_lock = 0; cackey_slots[idx].slot_reset = 0; cackey_slots[idx].token_flags = 0; cackey_slots[idx].label = NULL; cackey_slots[idx].internal = 0; cackey_slots[idx].id_type_hint = CACKEY_ID_TYPE_UNKNOWN; } #ifdef CACKEY_NO_EXTRA_CERTS if (getenv("CACKEY_EXTRA_CERTS") != NULL) { include_dod_certs = 1; } else { include_dod_certs = 0; } #else if (getenv("CACKEY_NO_EXTRA_CERTS") != NULL) { include_dod_certs = 0; } else { include_dod_certs = 1; } #endif if (include_dod_certs == 0) { CACKEY_DEBUG_PRINTF("Asked not to include DoD certificates"); } else { highest_slot = (sizeof(cackey_slots) / sizeof(cackey_slots[0])) - 1; CACKEY_DEBUG_PRINTF("Including DoD certs in slot %lu", (unsigned long) highest_slot); cackey_slots[highest_slot].active = 1; cackey_slots[highest_slot].internal = 1; cackey_slots[highest_slot].label = (unsigned char *) "US Government Certificates"; cackey_slots[highest_slot].pcsc_reader = "CACKey"; cackey_slots[highest_slot].token_flags = 0; } cackey_initialized = 1; if (!cackey_biglock_init) { mutex_init_ret = cackey_mutex_create(&cackey_biglock); if (mutex_init_ret != 0) { CACKEY_DEBUG_PRINTF("Error. Mutex initialization failed."); return(CKR_CANT_LOCK); } cackey_biglock_init = 1; } /* Define a command to prompt user for a PIN */ #ifdef CACKEY_PIN_COMMAND_DEFAULT cackey_pin_command = strdup(CACKEY_MACRO_DEFAULT_XSTR(CACKEY_PIN_COMMAND_DEFAULT)); #endif #ifdef CACKEY_PIN_COMMAND_XONLY_DEFAULT if (getenv("DISPLAY") != NULL) { cackey_pin_command = strdup(CACKEY_MACRO_DEFAULT_XSTR(CACKEY_PIN_COMMAND_XONLY_DEFAULT)); } #endif if (getenv("CACKEY_PIN_COMMAND") != NULL) { cackey_pin_command = strdup(getenv("CACKEY_PIN_COMMAND")); } if (getenv("CACKEY_PIN_COMMAND_XONLY") != NULL && getenv("DISPLAY") != NULL) { cackey_pin_command = strdup(getenv("CACKEY_PIN_COMMAND_XONLY")); } if (cackey_pin_command && strcmp(cackey_pin_command, "") == 0) { free(cackey_pin_command); cackey_pin_command = NULL; } #ifdef CACKEY_READERS_INCLUDE_ONLY_DEFAULT cackey_readers_include_only = strdup(CACKEY_MACRO_DEFAULT_XSTR(CACKEY_READERS_INCLUDE_ONLY_DEFAULT)); #endif #ifdef CACKEY_READERS_EXCLUDE_DEFAULT cackey_readers_exclude = strdup(CACKEY_MACRO_DEFAULT_XSTR(CACKEY_READERS_EXCLUDE_DEFAULT)); #endif if (getenv("CACKEY_READERS_INCLUDE_ONLY") != NULL) { cackey_readers_include_only = strdup(getenv("CACKEY_READERS_INCLUDE_ONLY")); if (cackey_readers_include_only[0] == '\0') { free(cackey_readers_include_only); cackey_readers_include_only = NULL; } } if (getenv("CACKEY_READERS_EXCLUDE") != NULL) { cackey_readers_exclude = strdup(getenv("CACKEY_READERS_EXCLUDE")); if (cackey_readers_exclude[0] == '\0') { free(cackey_readers_exclude); cackey_readers_exclude = NULL; } } CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_Finalize)(CK_VOID_PTR pReserved) { uint32_t idx; CACKEY_DEBUG_PRINTF("Called."); if (pReserved != NULL) { CACKEY_DEBUG_PRINTF("Error. pReserved is not NULL."); return(CKR_ARGUMENTS_BAD); } if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } for (idx = 0; idx < (sizeof(cackey_sessions) / sizeof(cackey_sessions[0])); idx++) { if (cackey_sessions[idx].active) { C_CloseSession(idx); } } cackey_slots_disconnect_all(1); for (idx = 0; idx < (sizeof(cackey_slots) / sizeof(cackey_slots[0])); idx++) { if (cackey_slots[idx].internal) { continue; } if (cackey_slots[idx].cached_certs) { cackey_free_certs(cackey_slots[idx].cached_certs, cackey_slots[idx].cached_certs_count, 1); cackey_slots[idx].cached_certs = NULL; } } cackey_pcsc_disconnect(); if (cackey_pin_command != NULL) { free(cackey_pin_command); cackey_pin_command = NULL; } if (cackey_readers_include_only != NULL) { free(cackey_readers_include_only); cackey_readers_include_only = NULL; } if (cackey_readers_exclude != NULL) { free(cackey_readers_exclude); cackey_readers_exclude = NULL; } cackey_initialized = 0; CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_GetInfo)(CK_INFO_PTR pInfo) { static CK_UTF8CHAR manufacturerID[] = "U.S. Government"; static CK_UTF8CHAR libraryDescription[] = "CACKey"; CACKEY_DEBUG_PRINTF("Called."); if (pInfo == NULL) { CACKEY_DEBUG_PRINTF("Error. pInfo is NULL."); return(CKR_ARGUMENTS_BAD); } if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } pInfo->cryptokiVersion.major = ((CACKEY_CRYPTOKI_VERSION_CODE) >> 16) & 0xff; pInfo->cryptokiVersion.minor = ((CACKEY_CRYPTOKI_VERSION_CODE) >> 8) & 0xff; memset(pInfo->manufacturerID, ' ', sizeof(pInfo->manufacturerID)); memcpy(pInfo->manufacturerID, manufacturerID, sizeof(manufacturerID) - 1); pInfo->flags = 0x00; memset(pInfo->libraryDescription, ' ', sizeof(pInfo->libraryDescription)); memcpy(pInfo->libraryDescription, libraryDescription, sizeof(libraryDescription) - 1); pInfo->libraryVersion.major = (cackey_getversion() >> 16) & 0xff; pInfo->libraryVersion.minor = (cackey_getversion() >> 8) & 0xff; CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } /* * Process list of readers, and create mapping between reader name and slot ID */ CK_DEFINE_FUNCTION(CK_RV, C_GetSlotList)(CK_BBOOL tokenPresent, CK_SLOT_ID_PTR pSlotList, CK_ULONG_PTR pulCount) { static int first_call = 1; int mutex_retval; int pcsc_connect_ret; CK_ULONG count, slot_count = 0, currslot, slot_idx; char *pcsc_readers, *pcsc_readers_s, *pcsc_readers_e; char *reader_check_pattern; DWORD pcsc_readers_len; LONG scard_listreaders_ret; size_t curr_reader_len; int slot_reset; int include_reader; CACKEY_DEBUG_PRINTF("Called."); if (pulCount == NULL) { CACKEY_DEBUG_PRINTF("Error. pulCount is NULL."); return(CKR_ARGUMENTS_BAD); } if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } /* Clear list of slots */ slot_reset = 0; if (pSlotList) { if (first_call) { first_call = 0; slot_reset = 1; } /* If any of the slots have been reset then purge all information and check again */ for (currslot = 0; currslot < (sizeof(cackey_slots) / sizeof(cackey_slots[0])); currslot++) { if (cackey_slots[currslot].internal) { continue; } if (!cackey_slots[currslot].active) { continue; } if (cackey_slots[currslot].slot_reset) { slot_reset = 1; break; } } if (slot_reset) { CACKEY_DEBUG_PRINTF("Purging all slot information."); /* Only update the list of slots if we are actually being supply the slot information */ cackey_slots_disconnect_all(1); for (currslot = 0; currslot < (sizeof(cackey_slots) / sizeof(cackey_slots[0])); currslot++) { if (cackey_slots[currslot].internal) { continue; } cackey_slots[currslot].active = 0; } } } /* Determine list of readers */ pcsc_connect_ret = cackey_pcsc_connect(); if (pcsc_connect_ret != CACKEY_PCSC_S_OK) { CACKEY_DEBUG_PRINTF("Connection to PC/SC failed, assuming no hardware slots"); } else { pcsc_readers_len = 0; scard_listreaders_ret = SCardListReaders(*cackey_pcsc_handle, NULL, NULL, &pcsc_readers_len); if (scard_listreaders_ret == SCARD_F_COMM_ERROR) { CACKEY_DEBUG_PRINTF("Error. SCardListReaders() returned SCARD_F_COMM_ERROR, assuming Connection to PC/SC went away. Reconnecting."); cackey_pcsc_disconnect(); cackey_pcsc_connect(); CACKEY_DEBUG_PRINTF("Trying SCardListReaders() again"); scard_listreaders_ret = SCardListReaders(*cackey_pcsc_handle, NULL, NULL, &pcsc_readers_len); } if (scard_listreaders_ret == SCARD_E_INSUFFICIENT_BUFFER) { CACKEY_DEBUG_PRINTF("Error. SCardListReaders() returned SCARD_E_INSUFFICIENT_BUFFER, assuming this is a bug (e.g., Google PCSC) and allocating a massive amount of space to hold the reader list."); pcsc_readers_len = 32768; scard_listreaders_ret = SCARD_S_SUCCESS; } if (scard_listreaders_ret == SCARD_S_SUCCESS && pcsc_readers_len != 0) { pcsc_readers = malloc(pcsc_readers_len); pcsc_readers_s = pcsc_readers; scard_listreaders_ret = SCardListReaders(*cackey_pcsc_handle, NULL, pcsc_readers, &pcsc_readers_len); if (scard_listreaders_ret == SCARD_S_SUCCESS) { pcsc_readers_e = pcsc_readers + pcsc_readers_len; /* Start with Slot ID 1, to avoid a bug in GDM on RHEL */ /* Bug 594911: https://bugzilla.redhat.com/show_bug.cgi?id=594911 */ currslot = 1; while (pcsc_readers < pcsc_readers_e) { /* Find next available slot */ for (; currslot < (sizeof(cackey_slots) / sizeof(cackey_slots[0])); currslot++) { if (!cackey_slots[currslot].active) { break; } } curr_reader_len = strlen(pcsc_readers); if ((pcsc_readers + curr_reader_len) > pcsc_readers_e) { break; } if (curr_reader_len == 0) { break; } if (currslot >= (sizeof(cackey_slots) / sizeof(cackey_slots[0]))) { CACKEY_DEBUG_PRINTF("Found more readers than slots are available!"); break; } CACKEY_DEBUG_PRINTF("Found reader: %s (currslot = %lu)", pcsc_readers, (unsigned long) currslot); if (cackey_readers_include_only != NULL) { CACKEY_DEBUG_PRINTF("Asked to include only readers matching: %s", cackey_readers_include_only); include_reader = 0; reader_check_pattern = cackey_readers_include_only; } else if (cackey_readers_exclude != NULL) { CACKEY_DEBUG_PRINTF("Asked to exclude readers matching: %s", cackey_readers_exclude); include_reader = 1; reader_check_pattern = cackey_readers_exclude; } else { include_reader = 1; reader_check_pattern = NULL; } if (reader_check_pattern != NULL) { if (strstr(pcsc_readers, reader_check_pattern) != NULL) { CACKEY_DEBUG_PRINTF("This reader matched the pattern."); include_reader = !include_reader; } } if (include_reader != 1) { CACKEY_DEBUG_PRINTF("Skipping this reader."); pcsc_readers += curr_reader_len + 1; continue; } /* Only update the list of slots if we are actually being asked supply the slot information */ if (pSlotList) { if (slot_reset) { cackey_slots[currslot].active = 1; cackey_slots[currslot].internal = 0; cackey_slots[currslot].pcsc_reader = strdup(pcsc_readers); cackey_slots[currslot].pcsc_card_connected = 0; cackey_slots[currslot].transaction_depth = 0; cackey_slots[currslot].transaction_need_hw_lock = 0; if (cackey_pin_command == NULL) { cackey_slots[currslot].token_flags = CKF_LOGIN_REQUIRED; } else { cackey_slots[currslot].token_flags = 0; } cackey_slots[currslot].label = NULL; cackey_mark_slot_reset(&cackey_slots[currslot]); } } else { if (!cackey_slots[currslot].active) { /* Artificially increase the number of active slots by what will become active */ CACKEY_DEBUG_PRINTF("Found in-active slot %lu, but it will be active after a reset -- marking as active for accounting purposes", (unsigned long) currslot); slot_count++; } } currslot++; pcsc_readers += curr_reader_len + 1; } } else { CACKEY_DEBUG_PRINTF("Second call to SCardListReaders failed, return %s/%li", CACKEY_DEBUG_FUNC_SCARDERR_TO_STR(scard_listreaders_ret), (long) scard_listreaders_ret); } free(pcsc_readers_s); } else { CACKEY_DEBUG_PRINTF("First call to SCardListReaders failed, return %s/%li", CACKEY_DEBUG_FUNC_SCARDERR_TO_STR(scard_listreaders_ret), (long) scard_listreaders_ret); } } for (currslot = 0; currslot < (sizeof(cackey_slots) / sizeof(cackey_slots[0])); currslot++) { if (cackey_slots[currslot].active) { CACKEY_DEBUG_PRINTF("Found active slot %lu, reader = %s", (unsigned long) currslot, cackey_slots[currslot].pcsc_reader); slot_count++; } } mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } if (pSlotList == NULL) { *pulCount = slot_count; CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i). Found %lu readers, but not storing IDs (pSlotList == NULL)", CKR_OK, (unsigned long) slot_count); return(CKR_OK); } count = *pulCount; if (count < slot_count) { CACKEY_DEBUG_PRINTF("Error. User allocated %lu entries, but we have %lu entries.", count, slot_count); CACKEY_DEBUG_PRINTF("Returning CKR_BUFFER_TOO_SMALL"); return(CKR_BUFFER_TOO_SMALL); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } slot_idx = 0; for (currslot = 0; (currslot < (sizeof(cackey_slots) / sizeof(cackey_slots[0]))); currslot++) { if (!cackey_slots[currslot].active) { continue; } if (slot_idx >= count) { CACKEY_DEBUG_PRINTF("Error. User allocated %lu entries, but we just tried to write to the %lu index -- ignoring", count, slot_idx); continue; } pSlotList[slot_idx] = currslot; slot_idx++; } mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } *pulCount = slot_count; CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i). Found %lu readers.", CKR_OK, (unsigned long) slot_count); return(CKR_OK); tokenPresent = tokenPresent; /* Supress unused variable warning */ } CK_DEFINE_FUNCTION(CK_RV, C_GetSlotInfo)(CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo) { static CK_UTF8CHAR slotDescription[] = "CACKey Slot"; int mutex_retval; int bytes_to_copy; CACKEY_DEBUG_PRINTF("Called."); if (pInfo == NULL) { CACKEY_DEBUG_PRINTF("Error. pInfo is NULL."); return(CKR_ARGUMENTS_BAD); } if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (slotID < 0 || slotID >= (sizeof(cackey_slots) / sizeof(cackey_slots[0]))) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), outside of valid range", slotID); return(CKR_SLOT_ID_INVALID); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (cackey_slots[slotID].active == 0) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), slot not currently active", slotID); cackey_mutex_unlock(cackey_biglock); return(CKR_SLOT_ID_INVALID); } pInfo->flags = CKF_HW_SLOT; if (!cackey_slots[slotID].internal) { pInfo->flags |= CKF_REMOVABLE_DEVICE; } if (cackey_token_present(&cackey_slots[slotID]) == CACKEY_PCSC_S_TOKENPRESENT) { pInfo->flags |= CKF_TOKEN_PRESENT; } bytes_to_copy = strlen(cackey_slots[slotID].pcsc_reader); if (sizeof(pInfo->manufacturerID) < bytes_to_copy) { bytes_to_copy = sizeof(pInfo->manufacturerID); } memcpy(pInfo->manufacturerID, cackey_slots[slotID].pcsc_reader, bytes_to_copy); mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } memset(pInfo->slotDescription, ' ', sizeof(pInfo->slotDescription)); memcpy(pInfo->slotDescription, slotDescription, sizeof(slotDescription) - 1); memset(pInfo->manufacturerID, ' ', sizeof(pInfo->manufacturerID)); pInfo->hardwareVersion.major = (cackey_getversion() >> 16) & 0xff; pInfo->hardwareVersion.minor = (cackey_getversion() >> 8) & 0xff; pInfo->firmwareVersion.major = 0x00; pInfo->firmwareVersion.minor = 0x00; CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_GetTokenInfo)(CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo) { static CK_UTF8CHAR manufacturerID[] = "U.S. Government"; static CK_UTF8CHAR defaultLabel[] = "Unknown Token"; static CK_UTF8CHAR model[] = "CAC Token"; struct cackey_pcsc_identity *pcsc_identities; unsigned long num_certs; ssize_t label_ret; int mutex_retval; int use_default_label; CACKEY_DEBUG_PRINTF("Called."); if (pInfo == NULL) { CACKEY_DEBUG_PRINTF("Error. pInfo is NULL."); return(CKR_ARGUMENTS_BAD); } if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (slotID < 0 || slotID >= (sizeof(cackey_slots) / sizeof(cackey_slots[0]))) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), outside of valid range", slotID); return(CKR_SLOT_ID_INVALID); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (cackey_slots[slotID].active == 0) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), slot not currently active", slotID); cackey_mutex_unlock(cackey_biglock); return(CKR_SLOT_ID_INVALID); } if (cackey_token_present(&cackey_slots[slotID]) != CACKEY_PCSC_S_TOKENPRESENT) { CACKEY_DEBUG_PRINTF("No token is present in slotID = %lu", slotID); cackey_mutex_unlock(cackey_biglock); return(CKR_TOKEN_NOT_PRESENT); } /* Determine token label from certificates */ memset(pInfo->label, ' ', sizeof(pInfo->label)); use_default_label = 1; if (cackey_slots[slotID].label == NULL) { pcsc_identities = cackey_read_certs(&cackey_slots[slotID], NULL, &num_certs); if (pcsc_identities != NULL) { if (num_certs > 0) { label_ret = cackey_pcsc_identity_to_label(pcsc_identities, pInfo->label, sizeof(pInfo->label)); if (label_ret > 0) { use_default_label = 0; cackey_slots[slotID].label = malloc(sizeof(pInfo->label)); memcpy(cackey_slots[slotID].label, pInfo->label, sizeof(pInfo->label)); } } cackey_free_certs(pcsc_identities, num_certs, 1); } } else { memcpy(pInfo->label, cackey_slots[slotID].label, sizeof(pInfo->label)); use_default_label = 0; } mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } if (use_default_label) { memcpy(pInfo->label, defaultLabel, sizeof(defaultLabel) - 1); } memset(pInfo->manufacturerID, ' ', sizeof(pInfo->manufacturerID)); memcpy(pInfo->manufacturerID, manufacturerID, sizeof(manufacturerID) - 1); memset(pInfo->model, ' ', sizeof(pInfo->model)); memcpy(pInfo->model, model, sizeof(model) - 1); memset(pInfo->serialNumber, ' ', sizeof(pInfo->serialNumber)); memset(pInfo->utcTime, ' ', sizeof(pInfo->utcTime)); pInfo->hardwareVersion.major = (cackey_getversion() >> 16) & 0xff; pInfo->hardwareVersion.minor = (cackey_getversion() >> 8) & 0xff; pInfo->firmwareVersion.major = 0x00; pInfo->firmwareVersion.minor = 0x00; pInfo->flags = CKF_WRITE_PROTECTED | CKF_USER_PIN_INITIALIZED | CKF_TOKEN_INITIALIZED | cackey_slots[slotID].token_flags; if (cackey_pin_command != NULL) { pInfo->flags |= CKF_PROTECTED_AUTHENTICATION_PATH; } pInfo->ulMaxSessionCount = (sizeof(cackey_sessions) / sizeof(cackey_sessions[0])) - 1; pInfo->ulSessionCount = CK_UNAVAILABLE_INFORMATION; pInfo->ulMaxRwSessionCount = 0; pInfo->ulRwSessionCount = CK_UNAVAILABLE_INFORMATION; pInfo->ulMaxPinLen = 128; pInfo->ulMinPinLen = 0; pInfo->ulTotalPublicMemory = CK_UNAVAILABLE_INFORMATION; pInfo->ulFreePublicMemory = CK_UNAVAILABLE_INFORMATION; pInfo->ulTotalPrivateMemory = CK_UNAVAILABLE_INFORMATION; pInfo->ulFreePrivateMemory = CK_UNAVAILABLE_INFORMATION; CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_WaitForSlotEvent)(CK_FLAGS flags, CK_SLOT_ID_PTR pSlotID, CK_VOID_PTR pReserved) { CACKEY_DEBUG_PRINTF("Called."); if (pReserved != NULL) { CACKEY_DEBUG_PRINTF("Error. pReserved is not NULL."); return(CKR_ARGUMENTS_BAD); } if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } /* XXX: TODO: Implement this... */ CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_GetMechanismList)(CK_SLOT_ID slotID, CK_MECHANISM_TYPE_PTR pMechanismList, CK_ULONG_PTR pulCount) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (pulCount == NULL) { CACKEY_DEBUG_PRINTF("Error. pulCount is NULL."); return(CKR_ARGUMENTS_BAD); } if (pMechanismList == NULL) { *pulCount = 1; CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } if (*pulCount < 1) { CACKEY_DEBUG_PRINTF("Error. Buffer too small."); return(CKR_BUFFER_TOO_SMALL); } pMechanismList[0] = CKM_RSA_PKCS; *pulCount = 1; CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_GetMechanismInfo)(CK_SLOT_ID slotID, CK_MECHANISM_TYPE type, CK_MECHANISM_INFO_PTR pInfo) { int mutex_retval; CACKEY_DEBUG_PRINTF("Called."); if (pInfo == NULL) { CACKEY_DEBUG_PRINTF("Error. pInfo is NULL."); return(CKR_ARGUMENTS_BAD); } if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (slotID < 0 || slotID >= (sizeof(cackey_slots) / sizeof(cackey_slots[0]))) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), outside of valid range", slotID); return(CKR_SLOT_ID_INVALID); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (cackey_slots[slotID].active == 0) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), slot not currently active", slotID); cackey_mutex_unlock(cackey_biglock); return(CKR_SLOT_ID_INVALID); } mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } switch (type) { case CKM_RSA_PKCS: pInfo->ulMinKeySize = 512; pInfo->ulMaxKeySize = 8192; pInfo->flags = CKF_HW | CKF_ENCRYPT | CKF_DECRYPT | CKF_SIGN | CKF_VERIFY; break; } CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } /* We don't support this method. */ CK_DEFINE_FUNCTION(CK_RV, C_InitToken)(CK_SLOT_ID slotID, CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen, CK_UTF8CHAR_PTR pLabel) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_TOKEN_WRITE_PROTECTED (%i)", CKR_TOKEN_WRITE_PROTECTED); return(CKR_TOKEN_WRITE_PROTECTED); } /* We don't support this method. */ CK_DEFINE_FUNCTION(CK_RV, C_InitPIN)(CK_SESSION_HANDLE hSession, CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_TOKEN_WRITE_PROTECTED (%i)", CKR_TOKEN_WRITE_PROTECTED); return(CKR_TOKEN_WRITE_PROTECTED); } CK_DEFINE_FUNCTION(CK_RV, C_SetPIN)(CK_SESSION_HANDLE hSession, CK_UTF8CHAR_PTR pOldPin, CK_ULONG ulOldPinLen, CK_UTF8CHAR_PTR pNewPin, CK_ULONG ulNewPinLen) { char oldpinbuf[64], newpinbuf[64]; cackey_ret set_pin_ret, get_pin_ret; CK_SLOT_ID slotID; int mutex_retval; CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (!cackey_sessions[hSession].active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Session not active."); return(CKR_SESSION_HANDLE_INVALID); } slotID = cackey_sessions[hSession].slotID; if (slotID < 0 || slotID >= (sizeof(cackey_slots) / sizeof(cackey_slots[0]))) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), outside of valid range", slotID); cackey_mutex_unlock(cackey_biglock); return(CKR_GENERAL_ERROR); } if (cackey_slots[slotID].active == 0) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), slot not currently active", slotID); cackey_mutex_unlock(cackey_biglock); return(CKR_GENERAL_ERROR); } if (cackey_pin_command != NULL) { /* Get old PIN */ get_pin_ret = cackey_get_pin(oldpinbuf); if (get_pin_ret != CACKEY_PCSC_S_OK) { CACKEY_DEBUG_PRINTF("Error while getting Old PIN, returning CKR_PIN_INCORRECT."); cackey_mutex_unlock(cackey_biglock); return(CKR_PIN_INCORRECT); } pOldPin = (CK_UTF8CHAR_PTR) oldpinbuf; ulOldPinLen = strlen(oldpinbuf); /* Get new PIN */ get_pin_ret = cackey_get_pin(newpinbuf); if (get_pin_ret != CACKEY_PCSC_S_OK) { CACKEY_DEBUG_PRINTF("Error while getting New PIN, returning CKR_PIN_INVALID."); cackey_mutex_unlock(cackey_biglock); return(CKR_PIN_INVALID); } pNewPin = (CK_UTF8CHAR_PTR) newpinbuf; ulNewPinLen = strlen(newpinbuf); } if (pOldPin == NULL) { CACKEY_DEBUG_PRINTF("Old PIN value is wrong (null)."); cackey_mutex_unlock(cackey_biglock); return(CKR_PIN_INCORRECT); } if (ulOldPinLen == 0 || ulOldPinLen > 8) { CACKEY_DEBUG_PRINTF("Old PIN length is wrong: %lu.", (unsigned long) ulOldPinLen); cackey_mutex_unlock(cackey_biglock); return(CKR_PIN_INCORRECT); } if (pNewPin == NULL) { CACKEY_DEBUG_PRINTF("New PIN value is wrong (either NULL, or too long/short)."); cackey_mutex_unlock(cackey_biglock); return(CKR_PIN_INVALID); } if (ulNewPinLen < 5 || ulNewPinLen > 8) { CACKEY_DEBUG_PRINTF("New PIN length is wrong: %lu, must be atleast 5 and no more than 8.", (unsigned long) ulNewPinLen); cackey_mutex_unlock(cackey_biglock); return(CKR_PIN_LEN_RANGE); } set_pin_ret = cackey_set_pin(&cackey_slots[slotID], pOldPin, ulOldPinLen, pNewPin, ulNewPinLen); if (set_pin_ret != CACKEY_PCSC_S_OK) { if (cackey_pin_command == NULL) { cackey_slots[slotID].token_flags |= CKF_LOGIN_REQUIRED; } if (set_pin_ret == CACKEY_PCSC_E_LOCKED) { cackey_slots[slotID].token_flags |= CKF_USER_PIN_LOCKED; } } mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } switch (set_pin_ret) { case CACKEY_PCSC_S_OK: CACKEY_DEBUG_PRINTF("Successfully set PIN."); return(CKR_OK); case CACKEY_PCSC_E_BADPIN: CACKEY_DEBUG_PRINTF("PIN was invalid."); return(CKR_PIN_INVALID); case CACKEY_PCSC_E_LOCKED: CACKEY_DEBUG_PRINTF("Token is locked or this change is not permitted."); return(CKR_PIN_LOCKED); default: CACKEY_DEBUG_PRINTF("Something else went wrong changing the PIN: %i", set_pin_ret); return(CKR_GENERAL_ERROR); } return(CKR_GENERAL_ERROR); } CK_DEFINE_FUNCTION(CK_RV, C_OpenSession)(CK_SLOT_ID slotID, CK_FLAGS flags, CK_VOID_PTR pApplication, CK_NOTIFY notify, CK_SESSION_HANDLE_PTR phSession) { unsigned long idx; int mutex_retval; int found_session = 0; CACKEY_DEBUG_PRINTF("Called."); if ((flags & CKF_SERIAL_SESSION) != CKF_SERIAL_SESSION) { return(CKR_SESSION_PARALLEL_NOT_SUPPORTED); } if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (slotID < 0 || slotID >= (sizeof(cackey_slots) / sizeof(cackey_slots[0]))) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), outside of valid range", slotID); return(CKR_SLOT_ID_INVALID); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (cackey_slots[slotID].active == 0) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), slot not currently active", slotID); cackey_mutex_unlock(cackey_biglock); return(CKR_SLOT_ID_INVALID); } /* Verify that the card is actually in the slot. */ /* XXX: Check to make sure this is in the PKCS#11 specification */ if (cackey_token_present(&cackey_slots[slotID]) != CACKEY_PCSC_S_TOKENPRESENT) { CACKEY_DEBUG_PRINTF("Error. Card not present. Returning CKR_DEVICE_REMOVED"); cackey_mutex_unlock(cackey_biglock); return(CKR_DEVICE_REMOVED); } for (idx = 1; idx < (sizeof(cackey_sessions) / sizeof(cackey_sessions[0])); idx++) { if (!cackey_sessions[idx].active) { found_session = 1; *phSession = idx; cackey_sessions[idx].active = 1; cackey_sessions[idx].slotID = slotID; cackey_sessions[idx].state = CKS_RO_PUBLIC_SESSION; cackey_sessions[idx].flags = flags; cackey_sessions[idx].ulDeviceError = 0; cackey_sessions[idx].pApplication = pApplication; cackey_sessions[idx].Notify = notify; cackey_sessions[idx].identities = NULL; cackey_sessions[idx].identities_count = 0; cackey_sessions[idx].search_active = 0; cackey_sessions[idx].sign_active = 0; cackey_sessions[idx].decrypt_active = 0; cackey_sessions[idx].identities = cackey_read_identities(&cackey_slots[slotID], &cackey_sessions[idx].identities_count); break; } } mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } if (!found_session) { CACKEY_DEBUG_PRINTF("Returning CKR_SESSION_COUNT (%i)", CKR_SESSION_COUNT); return(CKR_SESSION_COUNT); } CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_CloseSession)(CK_SESSION_HANDLE hSession) { int mutex_retval; CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (hSession == 0 || hSession >= (sizeof(cackey_sessions) / sizeof(cackey_sessions[0]))) { CACKEY_DEBUG_PRINTF("Error. Session out of range."); return(CKR_SESSION_HANDLE_INVALID); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (!cackey_sessions[hSession].active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Session not active."); return(CKR_SESSION_HANDLE_INVALID); } cackey_sessions[hSession].active = 0; cackey_free_identities(cackey_sessions[hSession].identities, cackey_sessions[hSession].identities_count); mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_CloseAllSessions)(CK_SLOT_ID slotID) { uint32_t idx; int mutex_retval; CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (slotID < 0 || slotID >= (sizeof(cackey_slots) / sizeof(cackey_slots[0]))) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), outside of valid range", slotID); return(CKR_SLOT_ID_INVALID); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (cackey_slots[slotID].active == 0) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), slot not currently active", slotID); cackey_mutex_unlock(cackey_biglock); return(CKR_SLOT_ID_INVALID); } for (idx = 0; idx < (sizeof(cackey_sessions) / sizeof(cackey_sessions[0])); idx++) { if (cackey_sessions[idx].active) { if (cackey_sessions[idx].slotID != slotID) { continue; } cackey_mutex_unlock(cackey_biglock); C_CloseSession(idx); cackey_mutex_lock(cackey_biglock); } } mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_GetSessionInfo)(CK_SESSION_HANDLE hSession, CK_SESSION_INFO_PTR pInfo) { int mutex_retval; CACKEY_DEBUG_PRINTF("Called."); if (pInfo == NULL) { CACKEY_DEBUG_PRINTF("Error. pInfo is NULL."); return(CKR_ARGUMENTS_BAD); } if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (hSession == 0 || hSession >= (sizeof(cackey_sessions) / sizeof(cackey_sessions[0]))) { CACKEY_DEBUG_PRINTF("Error. Session out of range."); return(CKR_SESSION_HANDLE_INVALID); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (!cackey_sessions[hSession].active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Session not active."); return(CKR_SESSION_HANDLE_INVALID); } pInfo->slotID = cackey_sessions[hSession].slotID; pInfo->state = cackey_sessions[hSession].state; pInfo->flags = cackey_sessions[hSession].flags; pInfo->ulDeviceError = cackey_sessions[hSession].ulDeviceError; mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_GetOperationState)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pOperationState, CK_ULONG_PTR pulOperationStateLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_SetOperationState)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pOperationState, CK_ULONG ulOperationStateLen, CK_OBJECT_HANDLE hEncryptionKey, CK_OBJECT_HANDLE hAuthenticationKey) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_LoginMutexArg)(CK_SESSION_HANDLE hSession, CK_USER_TYPE userType, CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen, int lock_mutex) { CK_SLOT_ID slotID; cackey_ret get_pin_ret; char pinbuf[64]; int mutex_retval; int tries_remaining; int login_ret; CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (hSession == 0 || hSession >= (sizeof(cackey_sessions) / sizeof(cackey_sessions[0]))) { CACKEY_DEBUG_PRINTF("Error. Session out of range."); return(CKR_SESSION_HANDLE_INVALID); } if (userType != CKU_USER) { CACKEY_DEBUG_PRINTF("Error. We only support USER mode, asked for %lu mode.", (unsigned long) userType) return(CKR_USER_TYPE_INVALID); } if (lock_mutex) { mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } } if (!cackey_sessions[hSession].active) { if (lock_mutex) { cackey_mutex_unlock(cackey_biglock); } CACKEY_DEBUG_PRINTF("Error. Session not active."); return(CKR_SESSION_HANDLE_INVALID); } slotID = cackey_sessions[hSession].slotID; if (slotID < 0 || slotID >= (sizeof(cackey_slots) / sizeof(cackey_slots[0]))) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), outside of valid range", slotID); if (lock_mutex) { cackey_mutex_unlock(cackey_biglock); } return(CKR_GENERAL_ERROR); } if (cackey_slots[slotID].active == 0) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), slot not currently active", slotID); if (lock_mutex) { cackey_mutex_unlock(cackey_biglock); } return(CKR_GENERAL_ERROR); } if (cackey_pin_command != NULL) { if (pPin != NULL) { CACKEY_DEBUG_PRINTF("Protected authentication path in effect and PIN provided !?"); } get_pin_ret = cackey_get_pin(pinbuf); if (get_pin_ret != CACKEY_PCSC_S_OK) { CACKEY_DEBUG_PRINTF("cackey_get_pin() returned in failure, assuming the PIN was incorrect."); if (lock_mutex) { cackey_mutex_unlock(cackey_biglock); } return(CKR_PIN_INCORRECT); } pPin = (CK_UTF8CHAR_PTR) pinbuf; ulPinLen = strlen(pinbuf); } login_ret = cackey_login(&cackey_slots[slotID], pPin, ulPinLen, &tries_remaining, 3); if (login_ret != CACKEY_PCSC_S_OK) { if (lock_mutex) { cackey_mutex_unlock(cackey_biglock); } if (login_ret == CACKEY_PCSC_E_LOCKED) { CACKEY_DEBUG_PRINTF("Error. Token is locked."); cackey_slots[slotID].token_flags |= CKF_USER_PIN_LOCKED; CACKEY_DEBUG_PRINTF("Returning CKR_PIN_LOCKED (%i)", (int) CKR_PIN_LOCKED); return(CKR_PIN_LOCKED); } else if (login_ret == CACKEY_PCSC_E_BADPIN) { CACKEY_DEBUG_PRINTF("Error. Invalid PIN."); cackey_slots[slotID].token_flags |= CKF_USER_PIN_COUNT_LOW; if (tries_remaining == 1) { cackey_slots[slotID].token_flags |= CKF_USER_PIN_FINAL_TRY; } CACKEY_DEBUG_PRINTF("Returning CKR_PIN_INCORRECT (%i)", (int) CKR_PIN_INCORRECT); return(CKR_PIN_INCORRECT); } CACKEY_DEBUG_PRINTF("Error. Unknown error returned from cackey_login() (%i)", login_ret); return(CKR_GENERAL_ERROR); } cackey_slots[slotID].token_flags &= ~(CKF_USER_PIN_LOCKED | CKF_USER_PIN_COUNT_LOW | CKF_LOGIN_REQUIRED | CKF_USER_PIN_FINAL_TRY); cackey_sessions[hSession].state = CKS_RO_USER_FUNCTIONS; if (lock_mutex) { mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } } CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_Login)(CK_SESSION_HANDLE hSession, CK_USER_TYPE userType, CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen) { return(C_LoginMutexArg(hSession, userType, pPin, ulPinLen, 1)); } CK_DEFINE_FUNCTION(CK_RV, C_Logout)(CK_SESSION_HANDLE hSession) { CK_SLOT_ID slotID; int mutex_retval; CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (hSession == 0 || hSession >= (sizeof(cackey_sessions) / sizeof(cackey_sessions[0]))) { CACKEY_DEBUG_PRINTF("Error. Session out of range."); return(CKR_SESSION_HANDLE_INVALID); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (!cackey_sessions[hSession].active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Session not active."); return(CKR_SESSION_HANDLE_INVALID); } slotID = cackey_sessions[hSession].slotID; if (slotID < 0 || slotID >= (sizeof(cackey_slots) / sizeof(cackey_slots[0]))) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), outside of valid range", slotID); return(CKR_GENERAL_ERROR); } if (cackey_slots[slotID].active == 0) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), slot not currently active", slotID); cackey_mutex_unlock(cackey_biglock); return(CKR_GENERAL_ERROR); } cackey_sessions[hSession].state = CKS_RO_PUBLIC_SESSION; if (cackey_pin_command == NULL) { cackey_slots[slotID].token_flags = CKF_LOGIN_REQUIRED; } else { cackey_slots[slotID].token_flags = 0; } mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_CreateObject)(CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phObject) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_CopyObject)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phNewObject) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_DestroyObject)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_GetObjectSize)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ULONG_PTR pulSize) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_GetAttributeValue)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount) { CK_ATTRIBUTE *curr_attr; struct cackey_identity *identity; unsigned long identity_idx, attr_idx, sess_attr_idx, num_ids; int mutex_retval; CK_RV retval = CKR_OK; CK_VOID_PTR pValue; CK_ULONG ulValueLen; CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (hSession == 0 || hSession >= (sizeof(cackey_sessions) / sizeof(cackey_sessions[0]))) { CACKEY_DEBUG_PRINTF("Error. Session out of range."); return(CKR_SESSION_HANDLE_INVALID); } if (hObject == 0) { CACKEY_DEBUG_PRINTF("Error. Object handle out of range."); return(CKR_OBJECT_HANDLE_INVALID); } if (ulCount == 0) { /* Short circuit, if zero objects were specified return zero items immediately */ CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i) (short circuit)", CKR_OK); return(CKR_OK); } if (pTemplate == NULL) { CACKEY_DEBUG_PRINTF("Error. pTemplate is NULL."); return(CKR_ARGUMENTS_BAD); } identity_idx = hObject - 1; mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (!cackey_sessions[hSession].active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Session not active."); return(CKR_SESSION_HANDLE_INVALID); } num_ids = cackey_sessions[hSession].identities_count; if (identity_idx >= num_ids) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Object handle out of range. identity_idx = %lu, num_ids = %lu.", (unsigned long) identity_idx, (unsigned long) num_ids); return(CKR_OBJECT_HANDLE_INVALID); } identity = &cackey_sessions[hSession].identities[identity_idx]; for (attr_idx = 0; attr_idx < ulCount; attr_idx++) { curr_attr = &pTemplate[attr_idx]; pValue = NULL; ulValueLen = (CK_LONG) -1; CACKEY_DEBUG_PRINTF("Looking for attribute 0x%08lx (identity:%lu) ...", (unsigned long) curr_attr->type, (unsigned long) identity_idx); for (sess_attr_idx = 0; sess_attr_idx < identity->attributes_count; sess_attr_idx++) { if (identity->attributes[sess_attr_idx].type == curr_attr->type) { CACKEY_DEBUG_PRINTF(" ... found it, pValue = %p, ulValueLen = %lu", identity->attributes[sess_attr_idx].pValue, identity->attributes[sess_attr_idx].ulValueLen); pValue = identity->attributes[sess_attr_idx].pValue; ulValueLen = identity->attributes[sess_attr_idx].ulValueLen; } } if (curr_attr->pValue && pValue) { if (curr_attr->ulValueLen >= ulValueLen) { memcpy(curr_attr->pValue, pValue, ulValueLen); } else { ulValueLen = (CK_LONG) -1; retval = CKR_BUFFER_TOO_SMALL; } } curr_attr->ulValueLen = ulValueLen; } mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } if (retval == CKR_ATTRIBUTE_TYPE_INVALID) { CACKEY_DEBUG_PRINTF("Returning CKR_ATTRIBUTE_TYPE_INVALID (%i)", (int) retval); } else if (retval == CKR_BUFFER_TOO_SMALL) { CACKEY_DEBUG_PRINTF("Returning CKR_BUFFER_TOO_SMALL (%i)", (int) retval); } else if (retval == CKR_OK) { CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", (int) retval); } else { CACKEY_DEBUG_PRINTF("Returning %i", (int) retval); } return(retval); } CK_DEFINE_FUNCTION(CK_RV, C_SetAttributeValue)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_FindObjectsInit)(CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount) { CK_SLOT_ID slotID; CK_ULONG idx; int mutex_retval; CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (hSession == 0 || hSession >= (sizeof(cackey_sessions) / sizeof(cackey_sessions[0]))) { CACKEY_DEBUG_PRINTF("Error. Session out of range."); return(CKR_SESSION_HANDLE_INVALID); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (!cackey_sessions[hSession].active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Session not active."); return(CKR_SESSION_HANDLE_INVALID); } if (cackey_sessions[hSession].search_active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Search already active."); return(CKR_OPERATION_ACTIVE); } slotID = cackey_sessions[hSession].slotID; if (slotID < 0 || slotID >= (sizeof(cackey_slots) / sizeof(cackey_slots[0]))) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), outside of valid range", slotID); return(CKR_GENERAL_ERROR); } if (cackey_slots[slotID].active == 0) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), slot not currently active", slotID); cackey_mutex_unlock(cackey_biglock); return(CKR_GENERAL_ERROR); } if (cackey_slots[slotID].slot_reset) { CACKEY_DEBUG_PRINTF("The slot has been reset since we last looked for identities -- rescanning"); if (cackey_sessions[hSession].identities != NULL) { cackey_free_identities(cackey_sessions[hSession].identities, cackey_sessions[hSession].identities_count); cackey_sessions[hSession].identities = NULL; cackey_sessions[hSession].identities_count = 0; } if (cackey_slots[slotID].label != NULL) { free(cackey_slots[slotID].label); cackey_slots[slotID].label = NULL; } cackey_mark_slot_reset(&cackey_slots[slotID]); cackey_slots[slotID].slot_reset = 0; } if (cackey_sessions[hSession].identities == NULL) { cackey_sessions[hSession].identities = cackey_read_identities(&cackey_slots[slotID], &cackey_sessions[hSession].identities_count); } if (pTemplate != NULL) { if (ulCount != 0) { cackey_sessions[hSession].search_query_count = ulCount; cackey_sessions[hSession].search_query = malloc(ulCount * sizeof(*pTemplate)); memcpy(cackey_sessions[hSession].search_query, pTemplate, ulCount * sizeof(*pTemplate)); for (idx = 0; idx < ulCount; idx++) { if (pTemplate[idx].ulValueLen == 0) { cackey_sessions[hSession].search_query[idx].pValue = NULL; continue; } cackey_sessions[hSession].search_query[idx].pValue = malloc(pTemplate[idx].ulValueLen); if (cackey_sessions[hSession].search_query[idx].pValue) { memcpy(cackey_sessions[hSession].search_query[idx].pValue, pTemplate[idx].pValue, pTemplate[idx].ulValueLen); } } } else { cackey_sessions[hSession].search_query_count = 0; cackey_sessions[hSession].search_query = NULL; } } else { if (ulCount != 0) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Search query specified as NULL, but number of query terms not specified as 0."); return(CKR_ARGUMENTS_BAD); } cackey_sessions[hSession].search_query_count = 0; cackey_sessions[hSession].search_query = NULL; } cackey_sessions[hSession].search_active = 1; cackey_sessions[hSession].search_curr_id = 0; mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } static int cackey_pkcs11_compare_attributes(CK_ATTRIBUTE *a, CK_ATTRIBUTE *b) { unsigned char *smallbuf, *largebuf; size_t smallbuf_len, largebuf_len; if (a->type != b->type) { return(0); } CACKEY_DEBUG_PRINTF(" ... found matching type ..."); CACKEY_DEBUG_PRINTBUF(" ... our value:", a->pValue, a->ulValueLen); if (b->pValue == NULL) { CACKEY_DEBUG_PRINTF(" ... found wildcard match"); return(1); } if (a->pValue == NULL) { return(0); } if (b->ulValueLen == a->ulValueLen && memcmp(a->pValue, b->pValue, b->ulValueLen) == 0) { CACKEY_DEBUG_PRINTF(" ... found exact match"); return(1); } switch (a->type) { case CKA_MODULUS: if (a->ulValueLen == b->ulValueLen) { break; } if (a->ulValueLen > b->ulValueLen) { smallbuf = b->pValue; smallbuf_len = b->ulValueLen; largebuf = a->pValue; largebuf_len = a->ulValueLen; } else { smallbuf = a->pValue; smallbuf_len = a->ulValueLen; largebuf = b->pValue; largebuf_len = b->ulValueLen; } for (; largebuf_len != smallbuf_len; largebuf++,largebuf_len--) { if (largebuf[0] != 0) { break; } } if (largebuf_len != smallbuf_len) { break; } if (memcmp(largebuf, smallbuf, smallbuf_len) == 0) { CACKEY_DEBUG_PRINTF(" ... found approximate match"); return(1); } break; } return(0); } CK_DEFINE_FUNCTION(CK_RV, C_FindObjects)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE_PTR phObject, CK_ULONG ulMaxObjectCount, CK_ULONG_PTR pulObjectCount) { struct cackey_identity *curr_id; CK_ATTRIBUTE *curr_attr; CK_ULONG curr_id_idx, curr_out_id_idx, curr_attr_idx, sess_attr_idx; CK_ULONG matched_count, prev_matched_count; int mutex_retval; #ifdef CACKEY_DEBUG_SEARCH_SPEEDTEST struct timeval start, end; uint64_t start_int, end_int; #endif CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (pulObjectCount == NULL) { CACKEY_DEBUG_PRINTF("Error. pulObjectCount is NULL."); return(CKR_ARGUMENTS_BAD); } if (phObject == NULL && ulMaxObjectCount == 0) { /* Short circuit, if zero objects were specified return zero items immediately */ *pulObjectCount = 0; CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i) (short circuit)", CKR_OK); return(CKR_OK); } if (phObject == NULL) { CACKEY_DEBUG_PRINTF("Error. phObject is NULL."); return(CKR_ARGUMENTS_BAD); } if (ulMaxObjectCount == 0) { CACKEY_DEBUG_PRINTF("Error. Maximum number of objects specified as zero."); return(CKR_ARGUMENTS_BAD); } if (hSession == 0 || hSession >= (sizeof(cackey_sessions) / sizeof(cackey_sessions[0]))) { CACKEY_DEBUG_PRINTF("Error. Session out of range."); return(CKR_SESSION_HANDLE_INVALID); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (!cackey_sessions[hSession].active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Session not active."); return(CKR_SESSION_HANDLE_INVALID); } if (!cackey_sessions[hSession].search_active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Search not active."); return(CKR_OPERATION_NOT_INITIALIZED); } #ifdef CACKEY_DEBUG_SEARCH_SPEEDTEST gettimeofday(&start, NULL); #endif curr_out_id_idx = 0; for (curr_id_idx = cackey_sessions[hSession].search_curr_id; curr_id_idx < cackey_sessions[hSession].identities_count && ulMaxObjectCount; curr_id_idx++) { curr_id = &cackey_sessions[hSession].identities[curr_id_idx]; CACKEY_DEBUG_PRINTF("Processing identity:%lu", (unsigned long) curr_id_idx); matched_count = 0; for (curr_attr_idx = 0; curr_attr_idx < cackey_sessions[hSession].search_query_count; curr_attr_idx++) { prev_matched_count = matched_count; curr_attr = &cackey_sessions[hSession].search_query[curr_attr_idx]; CACKEY_DEBUG_PRINTF(" Checking for attribute %s (0x%08lx) in identity:%i...", CACKEY_DEBUG_FUNC_ATTRIBUTE_TO_STR(curr_attr->type), (unsigned long) curr_attr->type, (int) curr_id_idx); CACKEY_DEBUG_PRINTBUF(" Value looking for:", curr_attr->pValue, curr_attr->ulValueLen); for (sess_attr_idx = 0; sess_attr_idx < curr_id->attributes_count; sess_attr_idx++) { if (cackey_pkcs11_compare_attributes(&curr_id->attributes[sess_attr_idx], curr_attr)) { matched_count++; break; } } /* If the attribute could not be matched, do not try to match additional attributes */ if (prev_matched_count == matched_count) { break; } } if (matched_count == cackey_sessions[hSession].search_query_count) { CACKEY_DEBUG_PRINTF(" ... All %i attributes checked for found, adding identity:%i to returned list", (int) cackey_sessions[hSession].search_query_count, (int) curr_id_idx); phObject[curr_out_id_idx] = curr_id_idx + 1; ulMaxObjectCount--; curr_out_id_idx++; } else { CACKEY_DEBUG_PRINTF(" ... Not all %i (only found %i) attributes checked for found, not adding identity:%i", (int) cackey_sessions[hSession].search_query_count, (int) matched_count, (int) curr_id_idx); } } cackey_sessions[hSession].search_curr_id = curr_id_idx; *pulObjectCount = curr_out_id_idx; #ifdef CACKEY_DEBUG_SEARCH_SPEEDTEST gettimeofday(&end, NULL); start_int = (start.tv_sec * 1000000) + start.tv_usec; end_int = (end.tv_sec * 1000000) + end.tv_usec; fprintf(stderr, "Search took %lu microseconds\n", (unsigned long) (end_int - start_int)); #endif mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i), num objects = %lu", CKR_OK, *pulObjectCount); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_FindObjectsFinal)(CK_SESSION_HANDLE hSession) { CK_ULONG idx; int mutex_retval; CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (hSession == 0 || hSession >= (sizeof(cackey_sessions) / sizeof(cackey_sessions[0]))) { CACKEY_DEBUG_PRINTF("Error. Session out of range."); return(CKR_SESSION_HANDLE_INVALID); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (!cackey_sessions[hSession].active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Session not active."); return(CKR_SESSION_HANDLE_INVALID); } if (!cackey_sessions[hSession].search_active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Search not active."); return(CKR_OPERATION_NOT_INITIALIZED); } cackey_sessions[hSession].search_active = 0; for (idx = 0; idx < cackey_sessions[hSession].search_query_count; idx++) { if (cackey_sessions[hSession].search_query[idx].pValue) { free(cackey_sessions[hSession].search_query[idx].pValue); } } if (cackey_sessions[hSession].search_query) { free(cackey_sessions[hSession].search_query); } mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_EncryptInit)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_Encrypt)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pEncryptedData, CK_ULONG_PTR pulEncryptedDataLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_EncryptUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, CK_ULONG_PTR pulEncryptedPartLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_EncryptFinal)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pLastEncryptedPart, CK_ULONG_PTR pulLastEncryptedPartLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_DecryptInit)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) { int mutex_retval; hKey--; CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (pMechanism == NULL) { CACKEY_DEBUG_PRINTF("Error. pMechanism is NULL."); return(CKR_ARGUMENTS_BAD); } if (pMechanism->mechanism != CKM_RSA_PKCS) { CACKEY_DEBUG_PRINTF("Error. pMechanism->mechanism not specified as CKM_RSA_PKCS"); return(CKR_MECHANISM_PARAM_INVALID); } if (hSession == 0 || hSession >= (sizeof(cackey_sessions) / sizeof(cackey_sessions[0]))) { CACKEY_DEBUG_PRINTF("Error. Session out of range."); return(CKR_SESSION_HANDLE_INVALID); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (!cackey_sessions[hSession].active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Session not active."); return(CKR_SESSION_HANDLE_INVALID); } if (cackey_sessions[hSession].decrypt_active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Decrypt already in progress."); return(CKR_OPERATION_ACTIVE); } if (hKey >= cackey_sessions[hSession].identities_count) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Key handle out of range (requested key %lu, only %lu identities available).", (unsigned long) hKey, (unsigned long) cackey_sessions[hSession].identities_count); return(CKR_KEY_HANDLE_INVALID); } cackey_sessions[hSession].decrypt_active = 1; cackey_sessions[hSession].decrypt_mechanism = pMechanism->mechanism; cackey_sessions[hSession].decrypt_mech_parm = pMechanism->pParameter; cackey_sessions[hSession].decrypt_mech_parmlen = pMechanism->ulParameterLen; cackey_sessions[hSession].decrypt_identity = &cackey_sessions[hSession].identities[hKey]; mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_Decrypt)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedData, CK_ULONG ulEncryptedDataLen, CK_BYTE_PTR pData, CK_ULONG_PTR pulDataLen) { CK_ULONG datalen_update, datalen_final; CK_RV decrypt_ret; int mutex_retval; CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (pulDataLen == NULL) { CACKEY_DEBUG_PRINTF("Error. pulDataLen is NULL."); return(CKR_ARGUMENTS_BAD); } datalen_update = *pulDataLen; decrypt_ret = C_DecryptUpdate(hSession, pEncryptedData, ulEncryptedDataLen, pData, &datalen_update); if (decrypt_ret != CKR_OK) { CACKEY_DEBUG_PRINTF("Error. DecryptUpdate() returned failure (rv = %lu).", (unsigned long) decrypt_ret); if (decrypt_ret != CKR_BUFFER_TOO_SMALL) { /* Terminate decryption operation */ mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (!cackey_sessions[hSession].active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Session not active."); return(CKR_SESSION_HANDLE_INVALID); } if (!cackey_sessions[hSession].decrypt_active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Decrypt not active."); return(CKR_OPERATION_NOT_INITIALIZED); } cackey_sessions[hSession].decrypt_active = 0; mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } } return(decrypt_ret); } if (pData) { pData += datalen_update; } datalen_final = *pulDataLen - datalen_update; decrypt_ret = C_DecryptFinal(hSession, pData, &datalen_final); if (decrypt_ret != CKR_OK) { CACKEY_DEBUG_PRINTF("Error. DecryptFinal() returned failure (rv = %lu).", (unsigned long) decrypt_ret); return(decrypt_ret); } *pulDataLen = datalen_update + datalen_final; CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_DecryptUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen) { static CK_BYTE buf[16384]; ssize_t buflen; CK_SLOT_ID slotID; CK_RV retval = CKR_GENERAL_ERROR; int mutex_retval; CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (hSession == 0 || hSession >= (sizeof(cackey_sessions) / sizeof(cackey_sessions[0]))) { CACKEY_DEBUG_PRINTF("Error. Session out of range."); return(CKR_SESSION_HANDLE_INVALID); } if (pEncryptedPart == NULL && ulEncryptedPartLen == 0) { /* Short circuit if we are asked to decrypt nothing... */ CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i) (short circuit)", CKR_OK); return(CKR_OK); } if (pEncryptedPart == NULL) { CACKEY_DEBUG_PRINTF("Error. pEncryptedPart is NULL, but ulEncryptedPartLen is not 0."); return(CKR_ARGUMENTS_BAD); } if (ulEncryptedPartLen == 0) { CACKEY_DEBUG_PRINTF("Error. ulEncryptedPartLen is 0, but pPart is not NULL."); return(CKR_ARGUMENTS_BAD); } if (pulPartLen == NULL) { CACKEY_DEBUG_PRINTF("Error. pulPartLen is NULL."); return(CKR_ARGUMENTS_BAD); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (!cackey_sessions[hSession].active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Session not active."); return(CKR_SESSION_HANDLE_INVALID); } if (!cackey_sessions[hSession].decrypt_active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Decrypt not active."); return(CKR_OPERATION_NOT_INITIALIZED); } slotID = cackey_sessions[hSession].slotID; if (slotID < 0 || slotID >= (sizeof(cackey_slots) / sizeof(cackey_slots[0]))) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), outside of valid range", slotID); return(CKR_GENERAL_ERROR); } if (cackey_slots[slotID].active == 0) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), slot not currently active", slotID); cackey_mutex_unlock(cackey_biglock); return(CKR_GENERAL_ERROR); } switch (cackey_sessions[hSession].decrypt_mechanism) { case CKM_RSA_PKCS: /* Ask card to decrypt */ buflen = cackey_signdecrypt(&cackey_slots[slotID], cackey_sessions[hSession].decrypt_identity, pEncryptedPart, ulEncryptedPartLen, buf, sizeof(buf), 0, 1); if (buflen == CACKEY_PCSC_E_NEEDLOGIN && cackey_pin_command != NULL) { if (C_LoginMutexArg(hSession, CKU_USER, NULL, 0, 0) == CKR_OK) { buflen = cackey_signdecrypt(&cackey_slots[slotID], cackey_sessions[hSession].decrypt_identity, pEncryptedPart, ulEncryptedPartLen, buf, sizeof(buf), 0, 1); } } if (buflen < 0) { /* Decryption failed. */ if (buflen == CACKEY_PCSC_E_NEEDLOGIN) { retval = CKR_USER_NOT_LOGGED_IN; } else if (buflen == CACKEY_PCSC_E_TOKENABSENT) { retval = CKR_DEVICE_REMOVED; } else { CACKEY_DEBUG_PRINTF("Failed to send APDU, error = %li", (long int) buflen); retval = CKR_GENERAL_ERROR; } } else if (((unsigned long) buflen) > *pulPartLen && pPart) { /* Decrypted data too large */ retval = CKR_BUFFER_TOO_SMALL; } else { if (pPart) { memcpy(pPart, buf, buflen); } *pulPartLen = buflen; retval = CKR_OK; } break; } mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } CACKEY_DEBUG_PRINTF("Returning %i", (int) retval); return(retval); } CK_DEFINE_FUNCTION(CK_RV, C_DecryptFinal)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pLastPart, CK_ULONG_PTR pulLastPartLen) { int mutex_retval; int terminate_decrypt = 1; CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (hSession == 0 || hSession >= (sizeof(cackey_sessions) / sizeof(cackey_sessions[0]))) { CACKEY_DEBUG_PRINTF("Error. Session out of range."); return(CKR_SESSION_HANDLE_INVALID); } if (pulLastPartLen == NULL) { CACKEY_DEBUG_PRINTF("Error. pulLastPartLen is NULL."); return(CKR_ARGUMENTS_BAD); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (!cackey_sessions[hSession].active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Session not active."); return(CKR_SESSION_HANDLE_INVALID); } if (!cackey_sessions[hSession].decrypt_active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Decrypt not active."); return(CKR_OPERATION_NOT_INITIALIZED); } *pulLastPartLen = 0; if (pLastPart == NULL) { terminate_decrypt = 0; } if (terminate_decrypt) { cackey_sessions[hSession].decrypt_active = 0; } mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_DigestInit)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_Digest)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pDigest, CK_ULONG_PTR pulDigestLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_DigestUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_DigestKey)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hKey) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_DigestFinal)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pDigest, CK_ULONG_PTR pulDigestLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_SignInit)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) { int mutex_retval; hKey--; CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (pMechanism == NULL) { CACKEY_DEBUG_PRINTF("Error. pMechanism is NULL."); return(CKR_ARGUMENTS_BAD); } if (pMechanism->mechanism != CKM_RSA_PKCS) { CACKEY_DEBUG_PRINTF("Error. pMechanism->mechanism not specified as CKM_RSA_PKCS"); return(CKR_MECHANISM_PARAM_INVALID); } if (hSession == 0 || hSession >= (sizeof(cackey_sessions) / sizeof(cackey_sessions[0]))) { CACKEY_DEBUG_PRINTF("Error. Session out of range."); return(CKR_SESSION_HANDLE_INVALID); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (!cackey_sessions[hSession].active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Session not active."); return(CKR_SESSION_HANDLE_INVALID); } if (cackey_sessions[hSession].sign_active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Sign already in progress."); return(CKR_OPERATION_ACTIVE); } if (hKey >= cackey_sessions[hSession].identities_count) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Key handle out of range (requested key %lu, only %lu identities available).", (unsigned long) hKey, (unsigned long) cackey_sessions[hSession].identities_count); return(CKR_KEY_HANDLE_INVALID); } cackey_sessions[hSession].sign_active = 1; cackey_sessions[hSession].sign_mechanism = pMechanism->mechanism; cackey_sessions[hSession].sign_buflen = 128; cackey_sessions[hSession].sign_bufused = 0; cackey_sessions[hSession].sign_buf = malloc(sizeof(*cackey_sessions[hSession].sign_buf) * cackey_sessions[hSession].sign_buflen); CACKEY_DEBUG_PRINTF("Session %lu sign_identity is %p (identity #%lu)", (unsigned long) hSession, (void *) &cackey_sessions[hSession].identities[hKey], (unsigned long) hKey); cackey_sessions[hSession].sign_identity = &cackey_sessions[hSession].identities[hKey]; mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_Sign)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen) { unsigned long start_sign_bufused; CK_RV sign_ret; int mutex_retval; CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (hSession == 0 || hSession >= (sizeof(cackey_sessions) / sizeof(cackey_sessions[0]))) { CACKEY_DEBUG_PRINTF("Error. Session out of range."); return(CKR_SESSION_HANDLE_INVALID); } start_sign_bufused = cackey_sessions[hSession].sign_bufused; sign_ret = C_SignUpdate(hSession, pData, ulDataLen); if (sign_ret != CKR_OK) { CACKEY_DEBUG_PRINTF("Error. SignUpdate() returned failure (rv = %lu).", (unsigned long) sign_ret); if (sign_ret != CKR_BUFFER_TOO_SMALL) { mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (!cackey_sessions[hSession].active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Session not active."); return(CKR_SESSION_HANDLE_INVALID); } if (!cackey_sessions[hSession].sign_active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Sign not active."); return(CKR_OPERATION_NOT_INITIALIZED); } cackey_sessions[hSession].sign_active = 0; mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } } return(sign_ret); } sign_ret = C_SignFinal(hSession, pSignature, pulSignatureLen); if (sign_ret != CKR_OK) { if (sign_ret == CKR_BUFFER_TOO_SMALL) { CACKEY_DEBUG_PRINTF("SignFinal() returned CKR_BUFFER_TOO_SMALL (rv = %lu), undoing C_SignUpdate()", (unsigned long) sign_ret); cackey_sessions[hSession].sign_bufused = start_sign_bufused; return(sign_ret); } CACKEY_DEBUG_PRINTF("Error. SignFinal() returned failure (rv = %lu).", (unsigned long) sign_ret); return(sign_ret); } if (pSignature == NULL) { CACKEY_DEBUG_PRINTF("pSignature specified as NULL, undoing C_SignUpdate()"); cackey_sessions[hSession].sign_bufused = start_sign_bufused; return(sign_ret); } CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_SignUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen) { int mutex_retval; int resizeRetry; int needResize; CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (hSession == 0 || hSession >= (sizeof(cackey_sessions) / sizeof(cackey_sessions[0]))) { CACKEY_DEBUG_PRINTF("Error. Session out of range."); return(CKR_SESSION_HANDLE_INVALID); } if (pPart == NULL && ulPartLen == 0) { /* Short circuit if we are asked to sign nothing... */ CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i) (short circuit)", CKR_OK); return(CKR_OK); } if (pPart == NULL) { CACKEY_DEBUG_PRINTF("Error. pPart is NULL, but ulPartLen is not 0."); return(CKR_ARGUMENTS_BAD); } if (ulPartLen == 0) { CACKEY_DEBUG_PRINTF("Error. ulPartLen is 0, but pPart is not NULL."); return(CKR_ARGUMENTS_BAD); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (!cackey_sessions[hSession].active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Session not active."); return(CKR_SESSION_HANDLE_INVALID); } if (!cackey_sessions[hSession].sign_active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Sign not active."); return(CKR_OPERATION_NOT_INITIALIZED); } switch (cackey_sessions[hSession].sign_mechanism) { case CKM_RSA_PKCS: /* Accumulate directly */ for (resizeRetry = 0; resizeRetry < 11; resizeRetry++) { needResize = 0; if ((cackey_sessions[hSession].sign_bufused + ulPartLen) > cackey_sessions[hSession].sign_buflen) { needResize = 1; } if (!needResize) { break; } CACKEY_DEBUG_PRINTF("Resizing signing buffer (try #%i of 10 -- 11th is fatal)", resizeRetry); if (resizeRetry == 10) { free(cackey_sessions[hSession].sign_buf); cackey_sessions[hSession].sign_buflen = 0; cackey_sessions[hSession].sign_buf = NULL; break; } cackey_sessions[hSession].sign_buflen *= 2; cackey_sessions[hSession].sign_buf = realloc(cackey_sessions[hSession].sign_buf, sizeof(*cackey_sessions[hSession].sign_buf) * cackey_sessions[hSession].sign_buflen); } if (cackey_sessions[hSession].sign_buf == NULL) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Signing buffer is NULL."); return(CKR_GENERAL_ERROR); } memcpy(cackey_sessions[hSession].sign_buf + cackey_sessions[hSession].sign_bufused, pPart, ulPartLen); cackey_sessions[hSession].sign_bufused += ulPartLen; break; } mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } CK_DEFINE_FUNCTION(CK_RV, C_SignFinal)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen) { static CK_BYTE sigbuf[1024]; ssize_t sigbuflen; CK_SLOT_ID slotID; CK_RV retval = CKR_GENERAL_ERROR; int terminate_sign = 1; int mutex_retval; CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } if (pulSignatureLen == NULL) { CACKEY_DEBUG_PRINTF("Error. pulSignatureLen is NULL."); return(CKR_ARGUMENTS_BAD); } if (hSession == 0 || hSession >= (sizeof(cackey_sessions) / sizeof(cackey_sessions[0]))) { CACKEY_DEBUG_PRINTF("Error. Session out of range."); return(CKR_SESSION_HANDLE_INVALID); } mutex_retval = cackey_mutex_lock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Locking failed."); return(CKR_GENERAL_ERROR); } if (!cackey_sessions[hSession].active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Session not active."); return(CKR_SESSION_HANDLE_INVALID); } if (!cackey_sessions[hSession].sign_active) { cackey_mutex_unlock(cackey_biglock); CACKEY_DEBUG_PRINTF("Error. Sign not active."); return(CKR_OPERATION_NOT_INITIALIZED); } slotID = cackey_sessions[hSession].slotID; if (slotID < 0 || slotID >= (sizeof(cackey_slots) / sizeof(cackey_slots[0]))) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), outside of valid range", slotID); return(CKR_GENERAL_ERROR); } if (cackey_slots[slotID].active == 0) { CACKEY_DEBUG_PRINTF("Error. Invalid slot requested (%lu), slot not currently active", slotID); cackey_mutex_unlock(cackey_biglock); return(CKR_GENERAL_ERROR); } switch (cackey_sessions[hSession].sign_mechanism) { case CKM_RSA_PKCS: /* Ask card to sign */ CACKEY_DEBUG_PRINTF("Asking to sign from identity %p in session %lu", (void *) cackey_sessions[hSession].sign_identity, (unsigned long) hSession); sigbuflen = cackey_signdecrypt(&cackey_slots[slotID], cackey_sessions[hSession].sign_identity, cackey_sessions[hSession].sign_buf, cackey_sessions[hSession].sign_bufused, sigbuf, sizeof(sigbuf), 1, 0); if (sigbuflen == CACKEY_PCSC_E_NEEDLOGIN && cackey_pin_command != NULL) { if (C_LoginMutexArg(hSession, CKU_USER, NULL, 0, 0) == CKR_OK) { sigbuflen = cackey_signdecrypt(&cackey_slots[slotID], cackey_sessions[hSession].sign_identity, cackey_sessions[hSession].sign_buf, cackey_sessions[hSession].sign_bufused, sigbuf, sizeof(sigbuf), 1, 0); } } if (sigbuflen < 0) { /* Signing failed. */ if (sigbuflen == CACKEY_PCSC_E_NEEDLOGIN) { retval = CKR_USER_NOT_LOGGED_IN; } else if (sigbuflen == CACKEY_PCSC_E_TOKENABSENT) { retval = CKR_DEVICE_REMOVED; } else { retval = CKR_GENERAL_ERROR; } } else if (((unsigned long) sigbuflen) > *pulSignatureLen && pSignature) { /* Signed data too large */ CACKEY_DEBUG_PRINTF("retval = CKR_BUFFER_TOO_SMALL; sigbuflen = %lu, pulSignatureLen = %lu", (unsigned long) sigbuflen, (unsigned long) *pulSignatureLen); retval = CKR_BUFFER_TOO_SMALL; terminate_sign = 0; } else { terminate_sign = 0; if (pSignature) { memcpy(pSignature, sigbuf, sigbuflen); terminate_sign = 1; } *pulSignatureLen = sigbuflen; retval = CKR_OK; } break; } if (terminate_sign) { if (cackey_sessions[hSession].sign_buf) { free(cackey_sessions[hSession].sign_buf); } cackey_sessions[hSession].sign_active = 0; } mutex_retval = cackey_mutex_unlock(cackey_biglock); if (mutex_retval != 0) { CACKEY_DEBUG_PRINTF("Error. Unlocking failed."); return(CKR_GENERAL_ERROR); } CACKEY_DEBUG_PRINTF("Returning %i", (int) retval); return(retval); } CK_DEFINE_FUNCTION(CK_RV, C_SignRecoverInit)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_SignRecover)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_VerifyInit)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_Verify)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_VerifyUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_VerifyFinal)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_VerifyRecoverInit)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_VerifyRecover)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen, CK_BYTE_PTR pData, CK_ULONG_PTR pulDataLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_DigestEncryptUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, CK_ULONG_PTR pulEncryptedPartLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_DecryptDigestUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_SignEncryptUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, CK_ULONG_PTR pulEncryptedPartLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_DecryptVerifyUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_GenerateKey)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phKey) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_GenerateKeyPair)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_ATTRIBUTE_PTR pPublicKeyTemplate, CK_ULONG ulPublicKeyAttributeCount, CK_ATTRIBUTE_PTR pPrivateKeyTemplate, CK_ULONG ulPrivateKeyAttributeCount, CK_OBJECT_HANDLE_PTR phPublicKey, CK_OBJECT_HANDLE_PTR phPrivateKey) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_WrapKey)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hWrappingKey, CK_OBJECT_HANDLE hKey, CK_BYTE_PTR pWrappedKey, CK_ULONG_PTR pulWrappedKeyLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_UnwrapKey)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hUnwrappingKey, CK_BYTE_PTR pWrappedKey, CK_ULONG ulWrappedKeyLen, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulAttributeCount, CK_OBJECT_HANDLE_PTR phKey) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_DeriveKey)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hBaseKey, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulAttributeCount, CK_OBJECT_HANDLE_PTR phKey) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_SeedRandom)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSeed, CK_ULONG ulSeedLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } CK_DEFINE_FUNCTION(CK_RV, C_GenerateRandom)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pRandomData, CK_ULONG ulRandomLen) { CACKEY_DEBUG_PRINTF("Called."); if (!cackey_initialized) { CACKEY_DEBUG_PRINTF("Error. Not initialized."); return(CKR_CRYPTOKI_NOT_INITIALIZED); } CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_SUPPORTED (%i)", CKR_FUNCTION_NOT_SUPPORTED); return(CKR_FUNCTION_NOT_SUPPORTED); } /* Deprecated Function */ CK_DEFINE_FUNCTION(CK_RV, C_GetFunctionStatus)(CK_SESSION_HANDLE hSession) { CACKEY_DEBUG_PRINTF("Called."); CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_PARALLEL (%i)", CKR_FUNCTION_NOT_PARALLEL); return(CKR_FUNCTION_NOT_PARALLEL); hSession = hSession; /* Supress unused variable warning */ } /* Deprecated Function */ CK_DEFINE_FUNCTION(CK_RV, C_CancelFunction)(CK_SESSION_HANDLE hSession) { CACKEY_DEBUG_PRINTF("Called."); CACKEY_DEBUG_PRINTF("Returning CKR_FUNCTION_NOT_PARALLEL (%i)", CKR_FUNCTION_NOT_PARALLEL); return(CKR_FUNCTION_NOT_PARALLEL); hSession = hSession; /* Supress unused variable warning */ } CK_DEFINE_FUNCTION(CK_RV, C_GetFunctionList)(CK_FUNCTION_LIST_PTR_PTR ppFunctionList) { static CK_FUNCTION_LIST_PTR spFunctionList = NULL; CK_FUNCTION_LIST_PTR pFunctionList; CACKEY_DEBUG_PRINTF("Called."); if (ppFunctionList == NULL) { CACKEY_DEBUG_PRINTF("Error. ppFunctionList is NULL."); return(CKR_ARGUMENTS_BAD); } if (spFunctionList != NULL) { *ppFunctionList = spFunctionList; CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } pFunctionList = malloc(sizeof(*pFunctionList)); pFunctionList->version.major = ((CACKEY_CRYPTOKI_VERSION_CODE) >> 16) & 0xff; pFunctionList->version.minor = ((CACKEY_CRYPTOKI_VERSION_CODE) >> 8) & 0xff; pFunctionList->C_Initialize = C_Initialize; pFunctionList->C_Finalize = C_Finalize; pFunctionList->C_GetInfo = C_GetInfo; pFunctionList->C_GetSlotList = C_GetSlotList; pFunctionList->C_GetSlotInfo = C_GetSlotInfo; pFunctionList->C_GetTokenInfo = C_GetTokenInfo; pFunctionList->C_WaitForSlotEvent = C_WaitForSlotEvent; pFunctionList->C_GetMechanismList = C_GetMechanismList; pFunctionList->C_GetMechanismInfo = C_GetMechanismInfo; pFunctionList->C_InitToken = C_InitToken; pFunctionList->C_InitPIN = C_InitPIN; pFunctionList->C_SetPIN = C_SetPIN; pFunctionList->C_OpenSession = C_OpenSession; pFunctionList->C_CloseSession = C_CloseSession; pFunctionList->C_CloseAllSessions = C_CloseAllSessions; pFunctionList->C_GetSessionInfo = C_GetSessionInfo; pFunctionList->C_GetOperationState = C_GetOperationState; pFunctionList->C_SetOperationState = C_SetOperationState; pFunctionList->C_Login = C_Login; pFunctionList->C_Logout = C_Logout; pFunctionList->C_CreateObject = C_CreateObject; pFunctionList->C_CopyObject = C_CopyObject; pFunctionList->C_DestroyObject = C_DestroyObject; pFunctionList->C_GetObjectSize = C_GetObjectSize; pFunctionList->C_GetAttributeValue = C_GetAttributeValue; pFunctionList->C_SetAttributeValue = C_SetAttributeValue; pFunctionList->C_FindObjectsInit = C_FindObjectsInit; pFunctionList->C_FindObjects = C_FindObjects; pFunctionList->C_FindObjectsFinal = C_FindObjectsFinal; pFunctionList->C_EncryptInit = C_EncryptInit; pFunctionList->C_Encrypt = C_Encrypt; pFunctionList->C_EncryptUpdate = C_EncryptUpdate; pFunctionList->C_EncryptFinal = C_EncryptFinal; pFunctionList->C_DecryptInit = C_DecryptInit; pFunctionList->C_Decrypt = C_Decrypt; pFunctionList->C_DecryptUpdate = C_DecryptUpdate; pFunctionList->C_DecryptFinal = C_DecryptFinal; pFunctionList->C_DigestInit = C_DigestInit; pFunctionList->C_Digest = C_Digest; pFunctionList->C_DigestUpdate = C_DigestUpdate; pFunctionList->C_DigestKey = C_DigestKey; pFunctionList->C_DigestFinal = C_DigestFinal; pFunctionList->C_SignInit = C_SignInit; pFunctionList->C_Sign = C_Sign; pFunctionList->C_SignUpdate = C_SignUpdate; pFunctionList->C_SignFinal = C_SignFinal; pFunctionList->C_SignRecoverInit = C_SignRecoverInit; pFunctionList->C_SignRecover = C_SignRecover; pFunctionList->C_VerifyInit = C_VerifyInit; pFunctionList->C_Verify = C_Verify; pFunctionList->C_VerifyUpdate = C_VerifyUpdate; pFunctionList->C_VerifyFinal = C_VerifyFinal; pFunctionList->C_VerifyRecoverInit = C_VerifyRecoverInit; pFunctionList->C_VerifyRecover = C_VerifyRecover; pFunctionList->C_DigestEncryptUpdate = C_DigestEncryptUpdate; pFunctionList->C_DecryptDigestUpdate = C_DecryptDigestUpdate; pFunctionList->C_SignEncryptUpdate = C_SignEncryptUpdate; pFunctionList->C_DecryptVerifyUpdate = C_DecryptVerifyUpdate; pFunctionList->C_GenerateKey = C_GenerateKey; pFunctionList->C_GenerateKeyPair = C_GenerateKeyPair; pFunctionList->C_WrapKey = C_WrapKey; pFunctionList->C_UnwrapKey = C_UnwrapKey; pFunctionList->C_DeriveKey = C_DeriveKey; pFunctionList->C_SeedRandom = C_SeedRandom; pFunctionList->C_GenerateRandom = C_GenerateRandom; pFunctionList->C_GetFunctionStatus = C_GetFunctionStatus; pFunctionList->C_CancelFunction = C_CancelFunction; pFunctionList->C_GetFunctionList = C_GetFunctionList; spFunctionList = pFunctionList; *ppFunctionList = pFunctionList; CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i)", CKR_OK); return(CKR_OK); } cackey-0.7.10/cackey.spec0000644000000000000000000000215013563537513013660 0ustar rootrootSummary: PC/SC PKCS#11 Provider for Government Smartcards Name: cackey Version: 0.7.10 Release: 1 License: Public Domain Packager: Roy Keene URL: https://cackey.rkeene.org/ Source: %{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-root Group: System Environment/Libraries Requires: pcsc-lite %description CACKey provides a standard interface (PKCS#11) for smartcards connected to a PC/SC compliant reader. It performs a similar function to "CoolKey", but only supports Government Smartcards. It supports all Government Smartcards that implement the Government Smartcard Interoperability Specification (GSC-IS) v2.1 or newer as well as PIV cards that comply with NIST SP 800-73-3. %prep %setup -q %build CFLAGS="%{optflags}" \ ./configure --prefix=%{_prefix} --libdir=%{_libdir} --mandir=%{_mandir} make %{?_smp_mflags} %install if [ ! %{buildroot} = "/" ]; then %{__rm} -rf %{buildroot}; fi make DESTDIR=%{buildroot} install %clean if [ ! %{buildroot} = "/" ]; then %{__rm} -rf %{buildroot}; fi %files %defattr(-,root,root) %{_libdir}/libcackey.so %{_libdir}/libcackey_g.so cackey-0.7.10/cackey_builtin_certs.h0000644000000000000000000075277213563537513016131 0ustar rootroot /* certs/dod/cert-0.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 887, /* certificate_len */ (unsigned char *) "\x30\x82\x03\x73\x30\x82\x02\x5b\xa0\x03\x02\x01\x02\x02\x01\x01\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x33\x30\x1e\x17\x0d\x31\x32\x30\x33\x32\x30\x31\x38\x34\x36\x34\x31\x5a\x17\x0d\x32\x39\x31\x32\x33\x30\x31\x38\x34\x36\x34\x31\x5a\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x33\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xa9\xec\x14\x72\x8a\xe8\x4b\x70\xa3\xda\x10\x03\x84\xa6\xfb\xa7\x36\x0d\x2a\x3a\x52\x16\xbf\x30\x15\x52\x86\x05\x47\x20\xcf\xaa\xa6\xcd\x75\xc4\x64\x6e\xef\xf1\x60\x23\xcb\x0a\x66\x40\xae\xb4\xc8\x68\x2a\x00\x51\x68\x49\x37\xe9\x59\x32\x4d\x95\xbc\x43\x27\xe9\x40\x8d\x3a\x10\xce\x14\xbc\x43\x18\xa1\xf9\xde\xcc\xe7\x85\x76\x73\x5e\x18\x1a\x23\x5b\xbd\x3f\x1f\xf2\xed\x8d\x19\xcc\x03\xd1\x40\xa4\x8f\xa7\x20\x02\x4c\x27\x5a\x79\x36\xf6\xa3\x37\x21\x8e\x00\x5a\x06\x16\xca\xd3\x55\x96\x6f\x31\x29\xbb\x72\x0e\xcb\xe2\x48\x51\xf2\xd4\x37\xa4\x35\xd6\x6f\xee\x17\xb3\xb1\x06\xab\x0b\x19\x86\xe8\x23\x6d\x31\x1b\x28\x78\x65\xc5\xde\x62\x52\xbc\xc1\x7d\xeb\xee\xa0\x5d\x54\x04\xfb\xb2\xcb\x2b\xb2\x23\x54\x91\x82\x4c\xf0\xbf\xba\x74\x40\x3b\x0c\x04\x45\x80\x67\x5c\xc5\xeb\xa2\x57\xc3\x1a\x7f\x0a\x2d\xbd\x7f\xb9\xdc\xc1\x99\xb0\xc8\x07\xe4\x0c\x86\x36\x94\x3a\x25\x2f\xf2\x7d\xe6\x97\x3c\x1b\x94\xb4\x97\x59\x06\xc9\x3a\xe4\x0b\xd9\xea\xe9\xfc\x3b\x73\x34\x6f\xfd\xe7\x98\xe4\xf3\xa1\xc2\x90\x5f\x1c\xf5\x3f\x2e\xd7\x19\xd3\x7f\x02\x03\x01\x00\x01\xa3\x42\x30\x40\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x6c\x8a\x94\xa2\x77\xb1\x80\x72\x1d\x81\x7a\x16\xaa\xf2\xdc\xce\x66\xee\x45\xc0\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x9f\x71\xa4\xc0\xb6\x96\xd2\x80\x43\xa0\x48\xe9\x1f\x76\x04\xf9\xc5\x3c\xad\x66\x18\x58\x63\x9b\xc3\xb6\xe8\x68\x8a\x85\x5a\x42\x66\x12\xb4\xd2\xe6\x8b\x88\x7f\x87\xf4\x98\xf5\xa8\xc6\x09\xc9\x1f\xf0\x2c\x1f\xec\x82\xb8\xf4\xa5\x47\x38\xc1\x33\x2b\xdf\x4c\x7e\x9a\xbe\x0b\x0b\xb1\xcb\x0f\x7c\x50\x28\x10\xcf\x8a\x8d\xa2\xe9\xba\xac\x86\xd7\xd4\xb1\x93\x5f\x22\x8f\x96\x05\xb4\x4e\x0c\x75\x91\x7d\xd3\xf2\xe7\x94\xc2\x94\x14\x76\x4f\x8f\x0c\xab\x10\x87\x58\x32\x85\x07\x75\x86\x12\x0b\x5e\xea\x53\xb4\x0a\xc8\x4c\x84\x92\x1f\xeb\xe8\x41\x86\x3c\xba\xf4\x4e\x41\x4a\xd1\x6c\x58\x47\x41\xc3\x86\x5a\xf2\xee\xe9\xf2\x98\x27\x82\xea\x2e\x36\xd6\xf8\x06\x5e\x82\xf1\xa0\x52\x93\x44\x09\xba\xd2\xa9\x19\x5a\x58\xa3\xa8\x5d\x20\x6d\x4f\x64\xf8\x30\x87\x1b\x90\x13\x48\x81\xcd\xca\x90\xc7\x0d\xc1\xd4\x98\x3f\x8e\xf2\x0e\x57\x68\x33\x12\x8e\x99\x09\xb1\xf0\xe4\xf6\x10\xf4\x36\xf2\x49\xbd\xea\xa3\x38\xc8\x56\x41\x23\x83\x9a\xdf\xa1\x1b\x35\x7c\xeb\x3f\x41\xb3\xf5\x6f\x4b\x3a\x5e\xae\x6f\x93\x76\x98\xd2\xf1\x99\x9d\x45\xc4\x8e\x72", /* certificate */ 2048 /* keysize */ }, /* certs/dod/cert-1.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 884, /* certificate_len */ (unsigned char *) "\x30\x82\x03\x70\x30\x82\x02\x58\xa0\x03\x02\x01\x02\x02\x01\x05\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x32\x30\x1e\x17\x0d\x30\x34\x31\x32\x31\x33\x31\x35\x30\x30\x31\x30\x5a\x17\x0d\x32\x39\x31\x32\x30\x35\x31\x35\x30\x30\x31\x30\x5a\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x32\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xc0\x2c\xc1\xf6\x8d\x3b\xac\xff\x3f\x3c\xd6\x71\xbe\xb8\x74\x22\x07\xec\x70\x41\x15\xfc\xab\x40\xe3\x07\xaa\xc1\xc3\xd8\x9f\xfe\xda\x4c\x3a\xbf\x3f\xc8\xd8\x28\x7b\x4b\x36\x01\xc0\xac\x45\x25\xc3\xd2\x0e\x0a\x8f\x85\x18\x64\x10\x3d\x1a\x13\x70\x2a\x6f\x8e\xd7\xdc\x8d\x93\xb3\x41\x0f\x38\x21\xcd\xad\xab\xc2\x3d\x2a\x05\xd3\x57\x11\x37\x0d\xcd\x8c\x51\xf9\x93\xe3\xcc\x46\x49\x21\x8e\x14\xb4\xcd\xcb\x14\x3e\x38\xcd\x72\x31\xee\xab\x12\xf2\x65\xea\x34\x2e\x56\x5d\xff\xee\x63\x75\xcb\x6d\xba\x91\x34\xfc\x9e\xf3\xf4\x2d\x1c\xbe\x50\xc4\x42\xdf\x59\x88\xff\x6a\xb3\xfa\xa8\x6c\x3d\xcb\x56\x71\x71\x05\x96\xbb\x9f\x80\xe5\x80\x45\x59\x67\x41\xb0\xeb\xc3\xad\x60\xa4\x80\x75\x06\x17\x9c\x0e\xf4\x43\xe0\x99\x0e\x1b\xfb\x7f\xf5\xb3\xcc\xb2\x81\x82\xb1\xfd\x32\xc1\xb8\xbe\x41\xa4\x64\xb5\x60\x3a\x5a\x51\x30\x8c\xce\xde\x41\x2c\x19\x47\x5c\x49\x10\x64\xb9\x74\xa9\x87\x41\xaf\x7d\x6e\xba\xc1\xb8\xa1\xbf\x65\x31\x3a\x04\x67\xf9\xb5\xbb\x8e\x92\x8a\x00\x63\xb8\xb1\xe6\x8c\x38\x5f\x83\xff\x50\xd5\x3b\xa2\x5d\x6b\xb2\x10\xcc\x63\x02\x03\x01\x00\x01\xa3\x3f\x30\x3d\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x49\x74\xbb\x0c\x5e\xba\x7a\xfe\x02\x54\xef\x7b\xa0\xc6\x95\xc6\x09\x80\x70\x96\x30\x0b\x06\x03\x55\x1d\x0f\x04\x04\x03\x02\x01\x86\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x98\x91\x8d\x3f\x89\xc8\xbb\xf5\xc0\x69\x73\x29\x3b\x35\xac\xba\xb3\x08\x76\x3d\x70\x09\x92\xe9\x84\x44\x21\x01\x7d\x14\x76\x1b\xee\x51\x6c\x1d\x8d\x15\x37\x2d\x7b\x31\x69\xf4\x9a\x44\xb8\xaf\x46\xcc\x34\xfa\x23\xcb\x03\x27\x19\xd2\x83\x21\x75\x2b\xe7\xe0\x1b\x99\x26\xdc\x84\x40\x95\xe8\xa8\xd2\xcc\xf6\x58\x5c\x66\xef\x3f\x4a\x97\x10\x82\x1d\xba\x0a\xa2\xdd\x5b\x06\x2b\x9d\xa7\x64\x4e\xeb\x2e\x01\x35\xa4\xb4\x3f\x13\xad\x55\xe4\xd5\x73\xa8\x69\x9b\x11\xf1\x98\xf2\x31\x1e\x6f\x40\xd4\xf8\x78\x9f\x8e\x91\xa0\x6f\x70\x04\x90\x66\xaa\x06\x2b\xce\xe1\x7a\x92\xb5\x7d\xe1\xe0\xd1\x96\xe7\xa1\x3a\x2d\xcc\xb1\x9d\x1f\x05\x44\xed\x87\x99\xd3\x4d\x1a\x70\x39\xc1\x04\x0c\xe5\x7e\xd9\xf1\xaf\xd7\x20\x0e\xf1\x22\x7a\x25\xa4\x73\x99\xcc\x3f\xa4\x07\x27\x96\xa8\xa2\x95\xed\x82\xb9\x16\xd3\x9e\x0b\x87\xc2\xc1\xf2\x88\xf5\x62\xdf\x68\xdf\xc7\xbc\x69\x51\xed\xb1\x5c\xdc\x54\x54\x29\x0f\x09\x39\x9a\xac\x03\xc1\xdb\x0c\x4d\xae\x6f\x0a\x7a\x16\x49\xf1\xbf\x91\xd2\x38\x94\xd3\xf6\x95\x2c\xb7\x6c\xc9\x42\xb6\x8d\xca\x90\x8d\x85\xd9", /* certificate */ 2048 /* keysize */ }, /* certs/dod/cert-10.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1366, /* certificate_len */ (unsigned char *) "\x30\x82\x05\x52\x30\x82\x04\x3a\xa0\x03\x02\x01\x02\x02\x02\x01\xb9\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x32\x30\x1e\x17\x0d\x31\x31\x30\x39\x30\x38\x31\x36\x30\x33\x30\x38\x5a\x17\x0d\x31\x37\x30\x39\x30\x38\x31\x36\x30\x33\x30\x38\x5a\x30\x5d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x18\x30\x16\x06\x03\x55\x04\x03\x13\x0f\x44\x4f\x44\x20\x45\x4d\x41\x49\x4c\x20\x43\x41\x2d\x33\x30\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xe6\x29\x22\xd4\x14\x26\xd1\x98\x1a\x52\x5e\xc5\x84\x83\x73\x7e\xc1\x60\xb3\xb3\xd0\x94\xbe\xfd\x1c\x94\x55\xbf\xf6\x84\x2c\x9b\xc9\xc0\x74\x73\xef\xcc\xc2\x99\xf2\x99\xc9\x6d\xca\x14\xd3\x74\xff\xbe\x10\xf2\xf7\x2d\xbf\xcb\xbb\x06\xa3\xee\x98\x50\x41\x65\x01\xe1\x57\x2c\xb6\xcb\xe4\xca\x1c\xac\x7e\x52\x34\x0e\xb1\x8e\x07\x26\x3e\x32\x35\xaf\xa3\x61\x0a\xc5\xe5\x08\xb6\x12\x79\x8c\x54\xc1\x7a\xe9\xf1\x50\x1f\x5d\x83\x3a\x67\x30\xb3\x29\xdb\x1d\x3a\x4c\x39\x21\x50\xd8\x18\x2c\x8d\x06\x75\xee\x63\x72\x78\x68\xad\x62\x9c\x75\xa4\x94\x06\xd3\x32\x6b\x12\xaf\x06\x07\x29\xbe\x13\xa0\xc0\xa7\xf0\x25\x4f\xb7\xfe\x1f\xb7\x57\xe0\x18\x12\x8d\x21\x6a\x15\xb9\x5a\x54\xfb\x77\x65\xd8\x4c\x3f\xf5\xba\x3c\xc0\x37\xe1\x06\x7e\xc2\xbe\x9e\x23\x8c\x28\xd1\x9a\xd7\xc6\x67\x38\xd7\x73\xc9\xbd\x07\x1d\x85\x6f\xd5\x95\x0a\x9a\xdc\xda\x3a\x4e\x28\xf0\xa5\xeb\x09\xdf\xe5\xdb\x0b\xcd\x47\xaf\x8a\xcd\xbb\x6f\x94\x40\xe3\x59\x9c\x50\x9f\xc9\x0e\xa9\x71\x02\xb9\xdc\xe9\x69\x80\x3a\x89\x3b\x45\x05\x22\x18\x05\x84\xb5\x12\xf0\x3c\xc0\x81\x02\x03\x01\x00\x01\xa3\x82\x02\x1c\x30\x82\x02\x18\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x49\x74\xbb\x0c\x5e\xba\x7a\xfe\x02\x54\xef\x7b\xa0\xc6\x95\xc6\x09\x80\x70\x96\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x35\x61\x66\x28\x09\xbc\x56\x25\x5b\x8b\xcc\xbf\x81\x5e\x61\x2c\x30\x39\xd3\x21\x30\x12\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x08\x30\x06\x01\x01\xff\x02\x01\x00\x30\x0c\x06\x03\x55\x1d\x24\x04\x05\x30\x03\x80\x01\x00\x30\x66\x06\x03\x55\x1d\x20\x04\x5f\x30\x5d\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x05\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x09\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x11\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x12\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x13\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1a\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1b\x30\x37\x06\x03\x55\x1d\x1f\x04\x30\x30\x2e\x30\x2c\xa0\x2a\xa0\x28\x86\x26\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x72\x6c\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x2e\x63\x72\x6c\x30\x82\x01\x01\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x81\xf4\x30\x81\xf1\x30\x3a\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x2e\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x69\x73\x73\x75\x65\x64\x74\x6f\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x5f\x49\x54\x2e\x70\x37\x63\x30\x20\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x01\x86\x14\x68\x74\x74\x70\x3a\x2f\x2f\x6f\x63\x73\x70\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x30\x81\x90\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\x83\x6c\x64\x61\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x67\x64\x73\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x6e\x25\x33\x64\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x25\x32\x63\x6f\x75\x25\x33\x64\x50\x4b\x49\x25\x32\x63\x6f\x75\x25\x33\x64\x44\x6f\x44\x25\x32\x63\x6f\x25\x33\x64\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x25\x32\x63\x63\x25\x33\x64\x55\x53\x3f\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x0a\x88\x56\x1c\xa5\x57\x26\x5a\x62\xcb\x75\xd0\xdd\x86\xc5\x52\xe2\x2f\xf3\xbc\x11\x64\x3f\x8c\x2f\x3e\x11\xfc\x98\x60\x40\xf2\x80\x0d\x28\x82\x9a\x68\xfe\xe0\x48\x4b\x27\xd3\x3a\x0a\x7b\x95\xf6\x03\x0c\x81\x14\x91\x42\x3a\x60\x6c\xe2\x2b\x53\x2d\xec\xdf\x11\xae\xf5\x54\x17\xf0\x01\xf9\x97\x07\xa7\x9b\xab\x0b\xdb\xac\x97\x89\x09\xc6\xef\xf9\x07\x34\x16\x00\xa8\x7e\x11\x53\x9e\x7c\x2f\xa1\x38\xa2\x99\x79\x39\x34\x41\x6e\x7d\xb8\x58\x30\x56\x88\x9e\xe4\xaa\x64\x45\xd9\xa0\x44\x62\x3a\xb7\xe5\x31\xd3\x91\x80\xf1\x1b\x10\xb2\x67\x70\xd5\x5b\xab\x59\xb4\x5a\x48\x16\x42\xc4\x02\x4c\xda\x6c\x68\xca\x50\x1d\x31\xbe\x37\x99\xc7\xcf\x53\xcc\x42\x29\x56\xc3\x9d\x17\xca\x03\xe7\x10\x5a\xf1\x39\x3c\x1c\xcc\xfb\x1b\x97\x0a\x26\xf3\x31\xdf\xe0\xab\x5c\x24\x9d\x9e\xde\x38\x7d\x02\x51\x67\x46\xf9\x93\x70\x85\xed\x0a\x55\xc2\xf4\xc1\x68\x5a\x9f\x08\xc9\x1d\x7b\x9b\x76\xdc\x54\xef\x39\x8c\x18\xe5\x0c\x44\xee\xf7\x06\xb2\x1f\xf5\xcb\xe6\x0e\xbd\xd4\xa1\xff\xd4\xf9\x91\x07\x22\x52\x79\xb7\xc0\xfd\xec\xb2\xf8\x85\xf4\x44\xfb\x5c", /* certificate */ 2048 /* keysize */ }, /* certs/dod/cert-11.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1366, /* certificate_len */ (unsigned char *) "\x30\x82\x05\x52\x30\x82\x04\x3a\xa0\x03\x02\x01\x02\x02\x02\x01\xb8\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x32\x30\x1e\x17\x0d\x31\x31\x30\x39\x30\x38\x31\x36\x30\x32\x31\x34\x5a\x17\x0d\x31\x37\x30\x39\x30\x38\x31\x36\x30\x32\x31\x34\x5a\x30\x5d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x18\x30\x16\x06\x03\x55\x04\x03\x13\x0f\x44\x4f\x44\x20\x45\x4d\x41\x49\x4c\x20\x43\x41\x2d\x32\x39\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\x92\x62\x2f\x41\xc2\x20\x00\x16\x06\x55\x64\x9f\xbd\xa7\x88\x15\x6e\x82\x9b\x48\xc1\x85\x77\xbd\x02\xab\x0c\xd9\xf1\x2b\x60\x81\x01\xba\x3e\x75\x70\x8e\x12\xa6\xa7\x38\x84\x90\xb3\xe9\x40\x80\x12\xdc\x6a\xca\x51\xcd\xad\x2d\x86\x10\xcc\x44\xbc\x0e\xc5\x58\x38\x19\xb2\x14\x32\x25\x41\x54\x58\x5c\x43\x0e\xc8\x6c\x73\x0f\xc3\x0c\x18\x18\x16\x04\x9a\x52\x3d\x81\xa2\x71\xce\x3c\x32\x00\x9f\x71\x55\xba\xf8\xce\x36\x77\x1e\x21\xb7\x28\x94\xe7\x3d\x3e\xa6\xf6\xc0\x7a\x31\x60\x91\x28\x97\x77\x22\x50\xf2\xc6\x93\x6e\xb2\x1b\xc5\x41\xc6\xf9\xa1\x37\xfb\x10\xbf\xda\x56\xa6\xfb\x52\x4d\x5f\xbf\xef\xc4\x96\x77\x28\xe5\x32\xff\xe8\xe1\x18\xcc\x43\x52\x18\xac\x8d\x77\x9a\x72\x4c\xe8\x9d\x03\x5e\xb0\xa2\xef\xe4\xdd\xd2\xe7\xe6\xa7\xa6\x52\xad\xe1\x98\x08\x96\x4a\x43\xcc\x73\x3d\x4b\xa2\x8d\x89\xef\xdc\x82\x4c\xb8\x4a\x80\x24\x65\x2b\x1e\x91\x82\xf5\x04\xf6\x72\x1f\x57\x18\x40\x17\xf0\x39\x51\xb6\x8f\xf3\x89\x3b\x67\xf7\x58\x4e\x4a\xbc\xda\xf9\x0e\xc1\xc0\x0c\xbd\xf3\x08\x71\xf8\x83\x0f\xc9\x2e\x80\x95\xf4\x85\x0e\xce\xae\xa9\x02\x03\x01\x00\x01\xa3\x82\x02\x1c\x30\x82\x02\x18\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x49\x74\xbb\x0c\x5e\xba\x7a\xfe\x02\x54\xef\x7b\xa0\xc6\x95\xc6\x09\x80\x70\x96\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\xb8\x43\x83\x64\x21\x7a\xee\x70\x81\xde\xa5\xde\x0c\x60\x28\x87\x78\xae\x5e\x78\x30\x12\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x08\x30\x06\x01\x01\xff\x02\x01\x00\x30\x0c\x06\x03\x55\x1d\x24\x04\x05\x30\x03\x80\x01\x00\x30\x66\x06\x03\x55\x1d\x20\x04\x5f\x30\x5d\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x05\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x09\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x11\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x12\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x13\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1a\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1b\x30\x37\x06\x03\x55\x1d\x1f\x04\x30\x30\x2e\x30\x2c\xa0\x2a\xa0\x28\x86\x26\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x72\x6c\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x2e\x63\x72\x6c\x30\x82\x01\x01\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x81\xf4\x30\x81\xf1\x30\x3a\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x2e\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x69\x73\x73\x75\x65\x64\x74\x6f\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x5f\x49\x54\x2e\x70\x37\x63\x30\x20\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x01\x86\x14\x68\x74\x74\x70\x3a\x2f\x2f\x6f\x63\x73\x70\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x30\x81\x90\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\x83\x6c\x64\x61\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x67\x64\x73\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x6e\x25\x33\x64\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x25\x32\x63\x6f\x75\x25\x33\x64\x50\x4b\x49\x25\x32\x63\x6f\x75\x25\x33\x64\x44\x6f\x44\x25\x32\x63\x6f\x25\x33\x64\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x25\x32\x63\x63\x25\x33\x64\x55\x53\x3f\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x2c\x6b\x2c\x79\x35\xdb\xf0\x1e\x1c\x87\x7b\xab\xe1\xe8\x69\x6a\x37\x8b\xdb\x7a\x4f\x55\x60\x69\x95\x2f\x53\x9d\xc6\xca\x43\xb6\xd4\x37\x91\xd6\x03\x5d\x7e\x5a\xb1\xb8\x1d\xf7\x9e\x81\xd3\xae\x50\x54\x30\xa4\x6f\x4b\x2e\xbb\x14\x1b\x17\xaa\x5c\x10\xd3\x94\x7a\x31\x39\x96\xa4\x54\x79\xf5\xe9\x56\x2e\x55\xc3\x1b\x16\xea\xaa\x02\xc8\xcf\x51\xf7\x32\x81\x22\xc6\x34\x3a\xa9\xcd\x9a\xaa\x48\x93\xc7\xe9\xfb\x1e\x32\x7e\x71\xc4\x76\xf0\x45\x54\x12\x1d\x55\xea\xbd\x5c\x32\x87\x3a\xae\x93\x9a\x6e\x99\x22\x5f\xa8\x51\x35\xee\xb2\x53\x60\x5f\xf6\x4f\x45\xb8\x16\x84\x1d\x65\x55\xcd\x15\xca\x10\x01\x1f\xa9\xd2\x9c\xa7\x57\x91\xa3\xd7\xe7\xb0\x86\x3d\x2d\xf4\x89\x3a\xd8\xc9\x77\x70\x50\xc6\x6c\xef\xf2\xeb\x98\xf8\x10\xaa\x3d\xda\xc8\x5c\x29\xad\xce\xb8\x73\x49\x4c\xa1\x92\xbb\xe6\xed\xcd\xba\x82\x1a\x63\x21\x19\x65\xf4\x06\x19\xbf\x83\xaa\x73\xe5\xd3\x1b\xb1\x98\xff\x45\xdf\xfb\x49\xcc\x73\xe8\xe2\xe7\x07\x96\x00\x31\xe9\x7f\xd9\x24\x08\xe7\xca\x44\x7a\x48\x06\xc3\x42\xd8\x3f\xf9\x79\x87\xa5\x37\x92\x16\xa9\x84\x20\x92\x63", /* certificate */ 2048 /* keysize */ }, /* certs/dod/cert-12.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1366, /* certificate_len */ (unsigned char *) "\x30\x82\x05\x52\x30\x82\x04\x3a\xa0\x03\x02\x01\x02\x02\x02\x01\xb7\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x32\x30\x1e\x17\x0d\x31\x31\x30\x39\x30\x38\x31\x36\x30\x31\x31\x39\x5a\x17\x0d\x31\x37\x30\x39\x30\x38\x31\x36\x30\x31\x31\x39\x5a\x30\x5d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x18\x30\x16\x06\x03\x55\x04\x03\x13\x0f\x44\x4f\x44\x20\x45\x4d\x41\x49\x4c\x20\x43\x41\x2d\x32\x38\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xa0\xbe\x92\xce\x0a\x98\xd3\x08\xe1\xc5\xf7\xee\x5d\x82\x4a\xdb\xcf\xca\x66\xf4\xbd\x70\x6e\x93\x1b\xca\x9b\x39\x01\x50\x18\xc0\xd3\x56\x7a\xcb\x58\x67\xdd\x05\xa4\xd4\x2b\x31\x41\x62\x7a\x0a\xfd\xc2\xfb\x1e\x85\x2c\x8a\xf9\xeb\xa9\xb3\x9f\xb3\xca\x5a\xa4\x78\x56\x55\x17\x41\x97\x89\xf5\xcd\xc7\x30\xc6\xde\xc8\xa5\x16\xea\xd8\xe0\x86\x28\x11\x0c\x78\x0d\x9d\x37\xee\x18\xf9\x16\x2d\x5f\xae\x84\x6e\x34\x8b\xba\x46\x3b\xf4\x3d\x7a\xa3\x3f\xe3\xae\x9b\xa9\x87\x76\x7d\xc3\xb7\xe0\xb2\x2d\x82\x3a\x41\x7f\xb9\x69\xe1\x50\x22\xb1\xbf\x4c\x51\x6a\x4a\xf9\x03\x0e\x14\xb7\x32\xa9\x5f\x8d\x1b\xef\x51\x57\xbc\x87\x29\x5b\x65\x26\x3f\xf9\xf3\xa1\x92\x38\xa8\xd9\x31\xc7\x18\x11\xb7\xeb\x8a\x18\xd3\x90\xa5\xcd\x09\xb2\xb5\x2c\xef\x09\x69\x9e\xc8\xa5\xd7\x62\x22\x0f\xda\x85\xe0\x1a\xa3\x34\xb4\x18\x8c\xa9\x75\x49\xc6\xc7\x6e\x84\x8d\xa9\xa4\x90\x5f\xad\x5b\xae\x13\x97\x5d\xa9\x5f\x60\x0f\xdc\xc4\x91\x92\x36\x03\x7b\xfd\x69\x59\xc9\xd6\xfa\xe7\xdc\xe0\xfe\x5a\x3d\x5c\x3f\xf4\x3f\x00\x1b\x58\x5f\xd3\x09\x47\xef\x50\x72\xc8\x31\x02\x03\x01\x00\x01\xa3\x82\x02\x1c\x30\x82\x02\x18\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x49\x74\xbb\x0c\x5e\xba\x7a\xfe\x02\x54\xef\x7b\xa0\xc6\x95\xc6\x09\x80\x70\x96\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x59\x88\x30\x48\xe6\x6d\xfe\x61\x27\xa6\xc4\xd5\x85\x8d\x5b\x73\x9e\xef\xc1\xcd\x30\x12\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x08\x30\x06\x01\x01\xff\x02\x01\x00\x30\x0c\x06\x03\x55\x1d\x24\x04\x05\x30\x03\x80\x01\x00\x30\x66\x06\x03\x55\x1d\x20\x04\x5f\x30\x5d\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x05\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x09\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x11\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x12\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x13\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1a\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1b\x30\x37\x06\x03\x55\x1d\x1f\x04\x30\x30\x2e\x30\x2c\xa0\x2a\xa0\x28\x86\x26\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x72\x6c\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x2e\x63\x72\x6c\x30\x82\x01\x01\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x81\xf4\x30\x81\xf1\x30\x3a\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x2e\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x69\x73\x73\x75\x65\x64\x74\x6f\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x5f\x49\x54\x2e\x70\x37\x63\x30\x20\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x01\x86\x14\x68\x74\x74\x70\x3a\x2f\x2f\x6f\x63\x73\x70\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x30\x81\x90\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\x83\x6c\x64\x61\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x67\x64\x73\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x6e\x25\x33\x64\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x25\x32\x63\x6f\x75\x25\x33\x64\x50\x4b\x49\x25\x32\x63\x6f\x75\x25\x33\x64\x44\x6f\x44\x25\x32\x63\x6f\x25\x33\x64\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x25\x32\x63\x63\x25\x33\x64\x55\x53\x3f\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x1d\x6b\xde\x17\x1c\x3a\xe9\x7d\x2a\x64\x7d\x74\x03\x20\x76\x64\x4d\x9f\xa0\x1e\xd9\x5b\x45\x4a\x77\x31\xcc\x65\x2b\x5a\xe9\xb6\x5f\x5e\xee\x36\x88\x10\x14\xdb\xb7\x7c\x00\x4c\xb1\x6d\x39\x09\x19\x78\x8c\x32\x69\x77\xaa\x64\x9e\x7c\x71\xd7\x49\xb1\x2c\xa0\xdf\x27\x31\x52\x2a\x99\x82\xf4\xd6\x53\x46\x4a\xcc\xc0\xf3\xbe\x98\x1f\x60\x13\x8b\xe2\x8a\x07\x64\x7e\x85\x4c\xb1\x09\xb1\xe9\x58\x8a\xcd\x99\x7e\x12\xc2\x93\x4b\xd7\xf5\xa4\x14\x3e\xc4\x7b\x08\x30\x43\xc8\x26\x7e\x17\xf6\x53\x49\xbf\x6a\xee\xb6\x03\x92\xc3\x00\x04\xc9\x49\x07\x89\xf0\x41\xad\xd7\xdf\xcc\xd7\xf3\x26\x84\x62\x50\xb2\x14\x36\xca\x0b\x06\x3a\x29\x80\xf9\x83\xab\xa5\x44\x86\xe2\x81\x2c\xed\x20\x03\x4b\x44\xaf\x0f\x98\x41\x54\xc5\xc0\x18\x87\x21\xcb\xd5\x83\x4c\x66\x91\x7b\x16\x13\x57\x91\x97\x74\x92\xbd\x01\x95\x28\x7b\x4e\xe2\xda\xd6\x56\x20\x36\xd2\xcb\x46\x7d\x74\xca\x8a\xe3\xf9\xd6\xc0\x42\x27\x49\x03\xce\x3f\x05\x0f\xaa\xd8\xa5\xbf\x33\x2e\x16\x0f\xae\x1d\xb1\xff\xc9\x4b\xd8\x71\x6b\x93\xc5\xa1\xff\x6a\x3b\x55\x5e\x19\x37\x5e\x5b\x23\xc9", /* certificate */ 2048 /* keysize */ }, /* certs/dod/cert-13.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1366, /* certificate_len */ (unsigned char *) "\x30\x82\x05\x52\x30\x82\x04\x3a\xa0\x03\x02\x01\x02\x02\x02\x01\xb6\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x32\x30\x1e\x17\x0d\x31\x31\x30\x39\x30\x38\x31\x36\x30\x30\x31\x38\x5a\x17\x0d\x31\x37\x30\x39\x30\x38\x31\x36\x30\x30\x31\x38\x5a\x30\x5d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x18\x30\x16\x06\x03\x55\x04\x03\x13\x0f\x44\x4f\x44\x20\x45\x4d\x41\x49\x4c\x20\x43\x41\x2d\x32\x37\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xd3\x9d\xc2\x07\xb0\xf5\x7e\xcc\xee\xae\xb8\xab\xaa\x33\xea\xa7\x92\x6e\x13\x56\x40\x68\xe5\x1f\xc6\x21\xbc\xc0\x81\x97\x61\x2c\x70\xd1\x5a\x15\x17\xfe\x9c\xa3\xef\x48\x69\x89\xb7\x5b\x52\xf9\xac\xe0\x3a\x9c\xa6\x43\x56\x20\x28\x82\x6c\xcd\xf5\x96\xfe\x80\x9d\xd9\x8d\xf1\xd1\xee\x81\x9a\xbc\xec\xf0\x85\x35\x16\x41\xb9\x26\x89\x0c\x26\x7a\x40\x6e\xd0\x09\x80\x51\xc0\x02\xd8\xee\x84\x6f\xcc\x2c\x82\x22\xaa\x35\x85\x5e\xa4\x5e\x85\x04\xd1\x09\x99\xa4\xb8\x7d\x52\xb1\x21\x7a\x4d\xd8\x21\xa7\xbc\x44\x4f\xca\x15\xa2\x8c\x31\x2e\x89\xd6\x39\x2f\x40\x56\x37\x78\xeb\x2e\x5d\x2e\xd1\x18\x47\x16\xed\xac\xa0\x84\xd4\x0b\x82\x98\xbd\x03\x18\x70\xb0\x19\x5d\x8c\x6b\xde\x35\x24\x62\x5a\xc8\xfb\x0f\xba\x7a\xec\xc8\x40\x49\x72\x56\x9e\x1a\x4d\x54\xc0\x4e\xe5\x10\x34\x4f\x61\xd1\xd2\xed\x4d\xdf\xd1\x59\xb0\xeb\x02\x42\x2f\x0c\x1b\x52\x0c\x15\xa0\xf2\xee\xba\x36\x57\xfb\xcc\xac\x11\xf1\x9a\x2d\x4c\x8b\x29\x18\xf1\xf0\x70\x92\x68\xd6\x41\x26\xcc\x5b\x7c\x75\x76\xd8\x05\x60\x52\xd3\x09\xfc\xad\xc0\x40\x1c\xa4\x46\xd6\x30\x2d\x7b\x02\x03\x01\x00\x01\xa3\x82\x02\x1c\x30\x82\x02\x18\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x49\x74\xbb\x0c\x5e\xba\x7a\xfe\x02\x54\xef\x7b\xa0\xc6\x95\xc6\x09\x80\x70\x96\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\xbf\xc8\xed\x44\x0e\xbb\x33\xe6\xc7\xca\x41\x2c\xa5\x31\xb9\xc9\x60\x61\x89\x2e\x30\x12\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x08\x30\x06\x01\x01\xff\x02\x01\x00\x30\x0c\x06\x03\x55\x1d\x24\x04\x05\x30\x03\x80\x01\x00\x30\x66\x06\x03\x55\x1d\x20\x04\x5f\x30\x5d\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x05\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x09\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x11\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x12\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x13\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1a\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1b\x30\x37\x06\x03\x55\x1d\x1f\x04\x30\x30\x2e\x30\x2c\xa0\x2a\xa0\x28\x86\x26\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x72\x6c\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x2e\x63\x72\x6c\x30\x82\x01\x01\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x81\xf4\x30\x81\xf1\x30\x3a\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x2e\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x69\x73\x73\x75\x65\x64\x74\x6f\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x5f\x49\x54\x2e\x70\x37\x63\x30\x20\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x01\x86\x14\x68\x74\x74\x70\x3a\x2f\x2f\x6f\x63\x73\x70\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x30\x81\x90\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\x83\x6c\x64\x61\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x67\x64\x73\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x6e\x25\x33\x64\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x25\x32\x63\x6f\x75\x25\x33\x64\x50\x4b\x49\x25\x32\x63\x6f\x75\x25\x33\x64\x44\x6f\x44\x25\x32\x63\x6f\x25\x33\x64\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x25\x32\x63\x63\x25\x33\x64\x55\x53\x3f\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x11\x7d\xf2\x4e\x5d\xa8\xd6\x46\x1a\xe7\xd9\xd4\x66\xb1\x51\xc6\x81\xe0\xe6\x7f\x3d\x71\xae\x46\xa7\x70\x0b\x83\xb4\xbd\xc0\x40\x33\x50\x9b\x87\x43\x94\x87\x05\x69\x74\xbe\x67\x6d\xdd\x2a\xec\x0a\x31\x04\xbf\x78\x95\x6f\xd8\xb1\xec\x43\x27\x0a\xcf\x00\x80\x01\x16\x3c\x7d\x97\x37\x85\x98\x5b\xa6\x80\x73\x0c\xb3\x77\xfe\xc9\x70\x33\x52\x8b\x7a\x75\xb7\xb9\x2e\xfe\xbc\x2d\x25\x46\x96\xfa\x45\x6d\x78\x28\xcd\xdb\x9b\x99\x4c\x07\x9e\x2c\x62\x0d\x8a\xdb\x7f\x78\x55\x05\x47\x12\x1b\xdb\x99\x02\x37\xf9\x67\x1f\x04\x31\xef\x28\x81\x77\x76\x5a\x2e\x94\x8b\x75\x78\x3d\x89\xcc\x78\xd0\x4b\x05\x98\xa2\xc0\x70\x16\x87\x70\xff\x8b\x7c\x09\xd2\xe1\x2d\x32\xed\x03\xed\x61\x2b\x8d\xda\xce\xcd\xd2\x3c\xe3\xe6\x8f\xf6\x71\xe3\xba\x2f\x5c\x84\x82\x6e\x88\xa6\x5d\x3a\xab\xc1\x6d\xfe\x67\xf9\xe9\xab\xe5\x38\x44\xef\x43\x1b\xe5\x2a\xb1\x30\xfb\xf4\xfb\x6f\x7d\xa4\x20\x00\x54\x60\x22\x3e\x5d\x33\x64\xbb\x94\xea\x5a\x76\x95\x9f\xc8\x8f\x06\x6b\x3a\x60\xe8\xc2\x46\x26\x53\xab\xba\xe6\x28\xcb\xf9\x5b\x8e\xbd\x43\xad\xf1\xc7\x68\x32\xbe", /* certificate */ 2048 /* keysize */ }, /* certs/dod/cert-14.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1360, /* certificate_len */ (unsigned char *) "\x30\x82\x05\x4c\x30\x82\x04\x34\xa0\x03\x02\x01\x02\x02\x02\x01\xb5\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x32\x30\x1e\x17\x0d\x31\x31\x30\x39\x30\x38\x31\x35\x35\x39\x32\x34\x5a\x17\x0d\x31\x37\x30\x39\x30\x38\x31\x35\x35\x39\x32\x34\x5a\x30\x57\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x12\x30\x10\x06\x03\x55\x04\x03\x13\x09\x44\x4f\x44\x20\x43\x41\x2d\x33\x30\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xcd\x3c\x93\x67\x26\x0f\x1e\xe6\x81\x5e\xee\x9f\xce\xf9\x50\x1e\xdd\x62\xa2\x15\x84\x25\xe5\x77\x56\xc2\x53\xc7\xa0\xe0\xc9\x42\x53\x2a\xe6\x4e\x67\x52\x3e\x70\x5d\xc6\x68\xb8\x15\x65\xc8\xdd\x76\xd0\xb2\xd5\x9a\xc9\xaa\x2c\xe3\xc4\x09\x22\x04\xf7\x7d\x89\xa4\x88\xd9\xc2\x83\xec\x59\x7b\x49\x10\xef\x9a\x8d\xc8\x86\xf9\x73\xdd\xf2\x0e\x60\x7a\x9c\xd9\x8f\x4f\x77\x83\x78\x0c\x4b\x4c\x2d\xde\xed\x9f\xb1\xaf\x1c\x43\x32\xac\xb0\xd0\x38\x3a\x54\x9e\x26\x0f\x14\x4b\x8d\xc1\x6e\xf5\x26\x95\x24\x37\x87\xed\xed\xe0\xc3\xd5\xef\xc0\xf0\x0d\x75\xf5\x6f\x9a\xbe\xfd\x64\x3c\x2a\x22\xaf\x38\x12\x2b\x73\x2d\x0d\x09\x7e\x11\xea\xfc\x6b\x32\x73\x4d\x5c\xc4\x59\x17\xda\xc4\x59\x81\x06\x04\xb6\x0b\x02\xd0\x67\xb3\x96\x9c\x79\x13\x43\x15\x24\x5e\xc4\x95\xfd\x50\xd1\x5e\x08\x9e\x1f\xb4\xa1\x96\x92\x39\x2b\x68\xac\xbd\x8c\x3e\x86\x89\x2e\x3e\xb6\xeb\x45\xe0\xbc\x1c\x9b\x2b\x0b\x78\xef\x6d\xf1\x1a\x60\xdd\xe6\x47\xf8\x75\xf4\xf2\xca\x44\xa8\xfb\x80\x59\xe0\x51\x63\x85\x0b\xb6\xfb\x16\x2c\xe3\xf3\xff\x6f\xf7\x6a\xbe\x9b\xcd\x35\x81\x02\x03\x01\x00\x01\xa3\x82\x02\x1c\x30\x82\x02\x18\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x49\x74\xbb\x0c\x5e\xba\x7a\xfe\x02\x54\xef\x7b\xa0\xc6\x95\xc6\x09\x80\x70\x96\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x08\x4e\xd5\xa4\x3c\x2a\x04\x9b\x93\x1b\xb7\x04\x08\x8e\x74\xb9\x06\x7c\x0d\xa3\x30\x12\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x08\x30\x06\x01\x01\xff\x02\x01\x00\x30\x0c\x06\x03\x55\x1d\x24\x04\x05\x30\x03\x80\x01\x00\x30\x66\x06\x03\x55\x1d\x20\x04\x5f\x30\x5d\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x05\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x09\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x11\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x12\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x13\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1a\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1b\x30\x37\x06\x03\x55\x1d\x1f\x04\x30\x30\x2e\x30\x2c\xa0\x2a\xa0\x28\x86\x26\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x72\x6c\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x2e\x63\x72\x6c\x30\x82\x01\x01\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x81\xf4\x30\x81\xf1\x30\x3a\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x2e\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x69\x73\x73\x75\x65\x64\x74\x6f\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x5f\x49\x54\x2e\x70\x37\x63\x30\x20\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x01\x86\x14\x68\x74\x74\x70\x3a\x2f\x2f\x6f\x63\x73\x70\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x30\x81\x90\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\x83\x6c\x64\x61\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x67\x64\x73\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x6e\x25\x33\x64\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x25\x32\x63\x6f\x75\x25\x33\x64\x50\x4b\x49\x25\x32\x63\x6f\x75\x25\x33\x64\x44\x6f\x44\x25\x32\x63\x6f\x25\x33\x64\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x25\x32\x63\x63\x25\x33\x64\x55\x53\x3f\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x99\xf7\xd7\xac\xb1\x25\xbb\xaf\x1f\x03\x35\xbf\x56\x7b\xf5\xa1\x60\xa6\xda\x94\xee\x8f\xdd\xcc\x32\xd1\x35\x0d\x9f\xe5\x5e\xa6\x74\x12\x7f\x01\x2a\x5a\x33\x21\xc0\xd7\x06\xca\xbf\xdd\x1b\x66\x54\x4f\x02\x55\xfc\xa6\xdf\x68\x17\xd2\xbf\xf4\x5d\x6b\x8e\xf9\xc8\x73\xdb\x5b\x54\x3a\xdd\xbd\xe1\x69\xd9\xfa\x91\xdb\x2a\x5a\x0f\xc7\x8e\x88\x35\x08\x23\xab\x64\x67\xdb\xdf\x1f\x6b\xfc\x8e\x5f\x72\x9f\x97\x81\x87\x81\xe5\xa5\x21\x7d\xd8\x4f\xfe\x31\x9b\xa1\x79\xa4\x26\x54\x41\xf0\x45\x90\xaf\x5f\x42\xc1\x1e\x96\x87\xf9\xcf\xc7\xa4\x1a\x44\x53\x91\x11\x34\xd0\x80\x64\xb4\xd9\x13\xd6\x2d\x0e\x88\xc7\xa9\xb1\x20\x24\x56\x7c\x07\xfb\xc4\x7b\xf4\xf9\x9c\x7a\xb5\x0e\x44\xb7\x32\x57\x3a\x4d\x83\x91\xc4\x75\x18\x94\x96\xcf\x5f\xf6\x6f\x36\x2b\xae\x73\x19\xf8\xe0\xfc\x69\xce\x86\x7f\xff\x42\x21\x3e\xf9\x38\xc3\x5e\x7a\x99\x28\xde\x98\x2c\xb0\x9c\x88\x10\xb2\x34\x1e\xaa\x08\x0a\xcb\x4e\x01\xc5\x64\xeb\x4d\xa5\xa7\xf3\x08\x3d\x0b\x7a\x75\x3a\x96\x4a\xf7\xfd\xcf\x1c\xaf\x72\x4c\x71\x42\xd9\xfe\x23\xb9\x5a\xb4\xad\x57\x05\xfd\x24", /* certificate */ 2048 /* keysize */ }, /* certs/dod/cert-15.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1360, /* certificate_len */ (unsigned char *) "\x30\x82\x05\x4c\x30\x82\x04\x34\xa0\x03\x02\x01\x02\x02\x02\x01\xb4\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x32\x30\x1e\x17\x0d\x31\x31\x30\x39\x30\x38\x31\x35\x35\x38\x32\x36\x5a\x17\x0d\x31\x37\x30\x39\x30\x38\x31\x35\x35\x38\x32\x36\x5a\x30\x57\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x12\x30\x10\x06\x03\x55\x04\x03\x13\x09\x44\x4f\x44\x20\x43\x41\x2d\x32\x39\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xbb\x4a\x10\x76\x19\x34\x40\x1e\x72\x2b\x61\x90\x32\x88\xf0\x3b\x75\x1c\x3e\x3d\x6a\x77\x3a\x97\x79\x0b\xec\xe8\x51\x0f\x7e\x6a\x00\x43\x98\xc4\xe6\xa1\xe0\x45\x5b\x2d\x03\xfa\x66\x68\xa5\xa3\xd0\xe0\x92\x81\x3d\xf4\x77\x6d\x03\xdb\xdb\x25\xe6\x76\x60\x94\x3f\xf6\x5f\xdf\x5a\x18\x41\xe2\xf3\x37\x48\xf1\x97\xfe\x2a\xad\x44\xe7\xfc\x31\xe3\x16\xf8\xbc\x9a\x75\xa5\xfd\x2f\x56\x9a\x82\x49\x3a\xcd\x4d\x4f\x70\xcd\x3f\x7f\x00\x11\x16\x83\x0a\xae\x57\x7d\x69\x04\x83\xa0\xf3\x77\xca\x05\xc1\xff\xfb\x85\xdf\x98\x38\xf4\xfb\x80\x13\x3d\x38\x77\x6f\xce\x0c\x9b\x18\x53\xbc\xd8\xf4\x24\xff\x3c\xba\x9b\xb0\x2b\xc7\xe2\x90\xd1\xfd\x03\xf3\x38\xef\xcc\x52\xc3\x7e\xe3\x7a\x6c\xa1\x48\x11\x68\xee\x00\x38\x4d\xca\x38\x7c\x30\x3d\x87\x8d\xee\x20\x24\x06\x04\x5f\x5c\x20\xd1\x05\xc6\x80\xbf\x09\x49\xe0\x6b\x9a\xc4\x0b\x2d\xab\x61\x76\x5e\x1c\x70\xd9\x82\xc8\x8b\x0e\x33\x83\x19\x70\x2e\x2a\xf1\x7e\xe9\x19\x4a\xfb\x08\x1e\x93\xcd\xf3\x57\x77\xb8\x17\xe5\x73\x9f\x35\xa3\x34\x5e\x55\x88\x75\x27\x60\xd0\x15\xa6\x05\xc3\x16\xf6\x4b\xa5\x02\x03\x01\x00\x01\xa3\x82\x02\x1c\x30\x82\x02\x18\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x49\x74\xbb\x0c\x5e\xba\x7a\xfe\x02\x54\xef\x7b\xa0\xc6\x95\xc6\x09\x80\x70\x96\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x9b\xc5\x94\x3f\xef\x61\x61\x57\xa8\xe1\xfe\x59\xae\xe2\x69\x18\xdb\x18\x57\xde\x30\x12\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x08\x30\x06\x01\x01\xff\x02\x01\x00\x30\x0c\x06\x03\x55\x1d\x24\x04\x05\x30\x03\x80\x01\x00\x30\x66\x06\x03\x55\x1d\x20\x04\x5f\x30\x5d\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x05\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x09\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x11\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x12\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x13\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1a\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1b\x30\x37\x06\x03\x55\x1d\x1f\x04\x30\x30\x2e\x30\x2c\xa0\x2a\xa0\x28\x86\x26\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x72\x6c\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x2e\x63\x72\x6c\x30\x82\x01\x01\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x81\xf4\x30\x81\xf1\x30\x3a\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x2e\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x69\x73\x73\x75\x65\x64\x74\x6f\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x5f\x49\x54\x2e\x70\x37\x63\x30\x20\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x01\x86\x14\x68\x74\x74\x70\x3a\x2f\x2f\x6f\x63\x73\x70\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x30\x81\x90\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\x83\x6c\x64\x61\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x67\x64\x73\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x6e\x25\x33\x64\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x25\x32\x63\x6f\x75\x25\x33\x64\x50\x4b\x49\x25\x32\x63\x6f\x75\x25\x33\x64\x44\x6f\x44\x25\x32\x63\x6f\x25\x33\x64\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x25\x32\x63\x63\x25\x33\x64\x55\x53\x3f\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x2e\x7a\x47\xcf\xb4\xb7\xb9\xa3\x56\x8a\x5e\x32\xeb\xa5\xd8\xd6\x54\xc3\xe3\x3a\x6f\xc2\xc5\x88\x14\xad\xb8\x08\xf5\x05\xa8\x4d\x57\x38\xbc\x45\xe4\x86\x0f\x83\x1c\x7b\x48\x86\x3e\x82\x06\xf3\x88\xdb\x54\x28\xc9\x34\x85\xe9\x9f\x03\xbc\xad\x4c\x0f\x9e\x06\x55\xf6\xdf\x13\x02\xdd\x65\xad\x09\x38\x01\xe8\x62\x30\xab\x99\xde\x83\x51\x67\xed\x68\xab\xba\x00\x64\x3d\xf7\xda\x59\x3e\x0d\x13\x5f\xde\xdc\x29\x7b\xdf\xcc\x23\x5b\x9c\x02\x4d\x6a\x99\xb0\x39\x71\x83\xa4\x2b\x71\x2c\xd3\xc6\x84\xe1\x15\x08\x63\x17\xd8\x05\x4d\x54\x3e\x4f\x2d\xe7\x2d\x9a\x23\x36\x08\x52\x69\x5b\x6f\x0e\x71\xef\xa8\x90\x2f\x31\x3e\x73\xae\xf4\x7a\xd2\x99\xdf\x24\x84\x07\xf3\x71\x6f\xc7\xf8\x3a\x7a\x5c\x9a\x5c\x11\x5a\xf7\xc8\x3f\x3a\x6f\x43\xb5\x88\x37\x7a\x41\xaa\x1a\xdf\x18\x14\xf0\xaf\x90\xfe\xa2\x45\x61\xb2\xea\x89\x37\x34\xab\x0d\x3c\xe8\xc0\xd0\x08\x89\x83\x55\xa5\x47\x0b\x4b\x4c\x37\xf5\x29\xa9\xa0\x6f\x1e\x75\xa9\x46\xb5\x72\xfc\x6c\x9e\x2c\xfa\x3f\xde\x8e\x95\x4d\x3d\xbb\x88\x1f\x07\x48\x42\xd1\x10\xbe\x02\x8b\x8d\x30\x30\x08\x7c", /* certificate */ 2048 /* keysize */ }, /* certs/dod/cert-16.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1360, /* certificate_len */ (unsigned char *) "\x30\x82\x05\x4c\x30\x82\x04\x34\xa0\x03\x02\x01\x02\x02\x02\x01\xb3\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x32\x30\x1e\x17\x0d\x31\x31\x30\x39\x30\x38\x31\x35\x35\x37\x30\x31\x5a\x17\x0d\x31\x37\x30\x39\x30\x38\x31\x35\x35\x37\x30\x31\x5a\x30\x57\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x12\x30\x10\x06\x03\x55\x04\x03\x13\x09\x44\x4f\x44\x20\x43\x41\x2d\x32\x38\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xab\x4b\x55\x9a\xd1\x83\xc6\x45\x3d\xd0\x03\x2f\xab\xf1\x98\xab\x34\xc3\x61\xcb\xe4\xcf\xff\x33\x4d\x0c\x16\xde\x8c\x7b\xa4\x23\xc6\x04\xc8\xd3\xd7\xd2\x98\x2e\xc2\x7c\x3d\x79\xdf\xec\xf3\x45\x14\x4f\xf0\xa9\x15\x33\xe1\xd1\xa6\x3c\x16\x84\x99\x3c\x2e\x94\x78\x67\x77\x31\x12\xcf\xa6\xc1\x78\x19\xd3\xc4\xcc\xfc\xb6\xf9\x1c\x55\x4f\x1f\x94\xa7\xcf\xb2\x1b\x27\x59\x6f\xa7\xe7\x78\x19\xc9\x3e\x78\x4d\x52\x48\xd2\x21\x18\xe7\x1d\x22\x68\xbb\xfe\x78\x3d\xb5\x0a\x2f\xb0\xec\x7a\x82\xe9\xd8\x65\xfd\xf0\xdb\x3d\xa4\xf3\x5e\x38\xfd\x4d\xeb\x37\xfa\x02\x00\x2c\x54\xff\x79\xb5\xcb\x9e\x30\xee\xd7\x41\x3c\xf1\x3d\x3e\xf6\x12\x1a\x35\x04\x53\x4d\x34\x17\x71\xff\x64\xb9\x38\x14\xd6\x77\x47\x57\x2d\xb7\xac\xcf\xe1\x37\x50\x24\xee\xd1\xca\x3f\x44\xd7\xe9\xfa\xd2\xe0\x43\x35\x69\x8d\xe6\x50\x95\xdf\xf1\x48\x6f\x24\x5c\xac\x55\x47\xd2\xe3\x75\xb3\x35\x51\x0a\x22\xb6\xf2\x83\x8f\xa2\x71\xbe\x40\xb9\xba\xf4\x4b\x7a\x73\x7a\xf9\xf3\x40\xad\x5f\xdb\x98\x1d\xe6\x13\x7f\xdf\xda\x24\x51\x6b\xd8\xd0\x8b\xd2\x9f\x85\x61\xa1\xf6\xd2\x3f\x02\x03\x01\x00\x01\xa3\x82\x02\x1c\x30\x82\x02\x18\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x49\x74\xbb\x0c\x5e\xba\x7a\xfe\x02\x54\xef\x7b\xa0\xc6\x95\xc6\x09\x80\x70\x96\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x26\xb4\xae\xaa\x2d\x8e\xe9\x8d\x8a\x6f\xb6\xb5\x5b\x9d\xea\x4e\xae\xb1\x9c\x69\x30\x12\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x08\x30\x06\x01\x01\xff\x02\x01\x00\x30\x0c\x06\x03\x55\x1d\x24\x04\x05\x30\x03\x80\x01\x00\x30\x66\x06\x03\x55\x1d\x20\x04\x5f\x30\x5d\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x05\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x09\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x11\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x12\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x13\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1a\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1b\x30\x37\x06\x03\x55\x1d\x1f\x04\x30\x30\x2e\x30\x2c\xa0\x2a\xa0\x28\x86\x26\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x72\x6c\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x2e\x63\x72\x6c\x30\x82\x01\x01\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x81\xf4\x30\x81\xf1\x30\x3a\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x2e\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x69\x73\x73\x75\x65\x64\x74\x6f\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x5f\x49\x54\x2e\x70\x37\x63\x30\x20\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x01\x86\x14\x68\x74\x74\x70\x3a\x2f\x2f\x6f\x63\x73\x70\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x30\x81\x90\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\x83\x6c\x64\x61\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x67\x64\x73\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x6e\x25\x33\x64\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x25\x32\x63\x6f\x75\x25\x33\x64\x50\x4b\x49\x25\x32\x63\x6f\x75\x25\x33\x64\x44\x6f\x44\x25\x32\x63\x6f\x25\x33\x64\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x25\x32\x63\x63\x25\x33\x64\x55\x53\x3f\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x68\xb3\xd1\x49\x11\xab\x5b\xdd\xbd\xb4\x1d\xea\x5a\xde\xa7\xb8\xcf\x87\xda\xa8\x90\xc5\x23\x49\xd0\x49\x27\xbd\xea\x00\x2b\xfc\x7e\x1d\x8b\xe7\x98\xee\x5e\xb2\xe3\xcf\x83\xe1\x88\x83\xb1\x4b\x27\x61\x44\xd5\xa4\x5b\xff\x07\xc5\xc8\x42\xd4\x76\x3c\x70\xe0\x38\x21\x0c\x8d\x13\xcb\xef\x17\x3b\x23\xd2\x1f\xdd\x4d\x84\x36\x8c\xa6\x87\x59\x04\xfb\xd9\x2e\x1e\x69\x9e\x56\x74\x48\xb4\xc6\x52\xb1\x0a\x7d\x2e\x10\x5c\x65\x82\xfc\x0c\x86\x61\x70\xa9\xc5\x3a\x46\x60\x5f\x6d\xbe\x81\x88\x66\xdf\xb3\xc4\x8e\x99\x9b\xb0\xfc\x3d\xde\xc1\xda\x8c\x1b\x44\x20\xd4\xa3\x7a\xc0\x00\x10\x47\x70\x89\x44\x15\x6c\x8b\x57\xea\x7e\xb5\x8f\x78\xd0\x14\x73\xcc\x3f\x95\x91\xec\x5b\xad\x53\x70\x4c\x79\xf5\x81\x21\x98\xd1\x7e\xaf\x38\xb1\x38\x87\xce\x70\xde\x23\x23\x10\x25\xf8\x1a\x8a\xd1\x46\x6a\xa5\x4e\xc6\x77\xf5\xe8\x02\x83\xeb\xdc\x3f\x32\x59\x52\x26\x6c\x00\x69\x64\x25\x90\x15\x09\x96\xe3\xde\x64\xb1\x7c\xa0\x9c\xc0\xd3\xfe\xeb\xe9\x8c\x7b\xa5\x8c\x94\xb1\x01\x04\x67\x33\x04\x79\x49\x58\x6a\xa6\x41\xe9\x58\x27\x56\x95\x98\x03\xf7\xee", /* certificate */ 2048 /* keysize */ }, /* certs/dod/cert-17.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1360, /* certificate_len */ (unsigned char *) "\x30\x82\x05\x4c\x30\x82\x04\x34\xa0\x03\x02\x01\x02\x02\x02\x01\xb2\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x32\x30\x1e\x17\x0d\x31\x31\x30\x39\x30\x38\x31\x35\x35\x30\x32\x35\x5a\x17\x0d\x31\x37\x30\x39\x30\x38\x31\x35\x35\x30\x32\x35\x5a\x30\x57\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x12\x30\x10\x06\x03\x55\x04\x03\x13\x09\x44\x4f\x44\x20\x43\x41\x2d\x32\x37\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\x96\x84\x08\xfd\x7a\xba\xb6\x94\x83\xd0\x9d\x3b\x19\x0b\xcf\x04\xdf\x88\x2a\x9e\xb8\x1a\x58\xeb\x87\x22\x2a\x63\x3a\x7f\x39\xc3\x6b\x6b\xe7\xbc\x1a\xa8\x11\x02\xf5\x61\xcd\x01\xa4\x98\x75\x73\xc6\x17\x8c\x89\x3c\x42\xc7\xe2\x8e\xc9\x89\xb1\xa8\xff\x9f\x9e\x0a\xbb\x68\xde\xba\xde\xb6\x11\x01\x94\x43\x74\x9c\xbd\xcf\xe1\xbe\xe0\xce\x1c\x6d\x6a\x7c\x7c\x7f\x62\xe8\x5e\xda\x36\xea\x94\xc5\x06\x8b\x46\x88\xe2\xc0\xc2\x24\x09\x05\x50\x7f\xf3\xd9\xe5\x12\x05\x5e\xd2\xd7\xce\x35\xc2\x7b\x47\x35\x18\x15\x57\xcd\xc5\x9c\xf7\xe9\x31\x7a\x2a\x8c\x39\xf1\x35\x8e\x2e\xa1\x50\x91\x40\x37\xa2\x8e\x92\xce\x8c\x56\xb7\xfc\xec\x2f\x76\x3c\x82\xde\xc0\xc8\xbb\x47\xd6\x7e\xf7\xa9\x28\x5c\x29\x1e\x96\x00\xad\x27\x86\x74\x84\xb4\x04\xba\xa7\x55\x16\x69\x0e\x93\xd4\xbc\x8c\x62\x4d\x4f\x56\x82\xb6\xc7\xb4\x78\x2f\x7d\xd9\xd3\x43\xed\x73\x26\xf1\x53\xee\xff\xb3\xd5\xb0\xe4\x6e\xb6\xbe\x2d\x1b\x68\x0d\x77\x58\x84\x57\x42\xcf\x40\x70\x8c\xbc\xca\xc0\x39\x75\x4e\xf7\x19\x88\x7c\x6b\xec\x29\xc6\x64\x1d\xe8\x53\x50\xbd\x94\xaa\xe4\x83\xdd\x02\x03\x01\x00\x01\xa3\x82\x02\x1c\x30\x82\x02\x18\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x49\x74\xbb\x0c\x5e\xba\x7a\xfe\x02\x54\xef\x7b\xa0\xc6\x95\xc6\x09\x80\x70\x96\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x1b\x04\x04\x40\x45\x5e\x7d\x2b\x5e\x0b\xcc\x99\x65\x4d\xf3\xa4\xde\x90\x77\x17\x30\x12\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x08\x30\x06\x01\x01\xff\x02\x01\x00\x30\x0c\x06\x03\x55\x1d\x24\x04\x05\x30\x03\x80\x01\x00\x30\x66\x06\x03\x55\x1d\x20\x04\x5f\x30\x5d\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x05\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x09\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x11\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x12\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x13\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1a\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1b\x30\x37\x06\x03\x55\x1d\x1f\x04\x30\x30\x2e\x30\x2c\xa0\x2a\xa0\x28\x86\x26\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x72\x6c\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x2e\x63\x72\x6c\x30\x82\x01\x01\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x81\xf4\x30\x81\xf1\x30\x3a\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x2e\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x69\x73\x73\x75\x65\x64\x74\x6f\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x5f\x49\x54\x2e\x70\x37\x63\x30\x20\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x01\x86\x14\x68\x74\x74\x70\x3a\x2f\x2f\x6f\x63\x73\x70\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x30\x81\x90\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\x83\x6c\x64\x61\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x67\x64\x73\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x6e\x25\x33\x64\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x25\x32\x63\x6f\x75\x25\x33\x64\x50\x4b\x49\x25\x32\x63\x6f\x75\x25\x33\x64\x44\x6f\x44\x25\x32\x63\x6f\x25\x33\x64\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x25\x32\x63\x63\x25\x33\x64\x55\x53\x3f\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x40\xc0\x0c\x4b\x9f\x8d\x23\xa6\x31\xd1\x34\xae\x9e\x91\x5c\x5f\x84\xdd\x9c\x04\x95\x61\xcd\x80\x14\x1f\x6e\xde\x88\x97\x7c\xe9\xaf\xa5\xf5\xf7\x70\x27\xe1\x10\x44\x93\x0a\x31\xa4\x09\xa6\x9f\x70\x4b\x22\x90\x4e\xbf\x16\xff\x62\x4f\xd7\xf4\x82\x35\x42\x17\x07\xee\xb5\xa6\xcb\x6b\x84\xb7\x1a\x6e\x17\x1c\x45\x17\x4c\xd1\xcd\xcf\xe5\xdc\x0c\xd7\xc5\xf6\xc6\xba\x2e\x9c\xb3\x3b\x6f\x5c\x16\x5e\x43\x6c\x25\x4a\x9c\xf5\xb0\xef\xf9\xaa\x13\xce\xba\xa6\x3d\xb2\x50\xdc\x74\x2c\xb8\x14\x15\x79\xbd\xe6\x1d\x91\x1d\x68\x1a\x3e\x15\xb5\x07\x77\x51\xd1\x5f\x03\xac\x01\xa6\xd2\x66\xe8\x0a\xd7\xaf\x33\xa1\x33\x95\x08\x6d\xfc\x88\x92\x92\xf5\x72\xfa\x2e\x8f\x93\x31\xa4\xbf\x29\x23\xa3\x21\x53\xba\x3e\xb0\x75\x20\xe4\x15\x40\x3a\x58\xc8\xc8\x1e\xdd\xcb\x75\x10\xb5\x41\x01\xe6\x16\x5a\x68\xf7\x37\x39\xd6\x11\xb6\x30\x25\xfb\xb4\x7e\xc8\x12\xc6\xd8\x9f\x63\xa9\xd9\x6d\x86\xd2\x36\x47\xa1\x73\x29\x22\xfe\x02\xf4\x63\x2b\x29\x20\x97\xae\xb5\x34\xbc\x58\xe6\x60\xb6\x11\xd7\x82\xa6\xe7\xe2\x37\x7e\x3b\x7b\x06\x78\x26\x6f\x6c\x45\x73", /* certificate */ 2048 /* keysize */ }, /* certs/dod/cert-2.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1427, /* certificate_len */ (unsigned char *) "\x30\x82\x05\x8f\x30\x82\x04\x77\xa0\x03\x02\x01\x02\x02\x01\x51\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x32\x30\x1e\x17\x0d\x31\x30\x30\x31\x31\x34\x31\x37\x33\x39\x32\x37\x5a\x17\x0d\x31\x36\x30\x31\x31\x34\x31\x37\x33\x39\x32\x37\x5a\x30\x5d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x18\x30\x16\x06\x03\x55\x04\x03\x13\x0f\x44\x4f\x44\x20\x45\x4d\x41\x49\x4c\x20\x43\x41\x2d\x32\x36\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xac\x5f\x10\x5b\x3d\x2a\x07\xfd\xee\xcf\x4e\xc6\xb0\x4e\x3d\x5a\xa0\x00\x60\x50\x79\xc2\x02\x45\x66\x4f\x38\x34\x81\x5c\x1c\xbf\x27\x60\x6a\x79\xcc\xa6\x97\x0b\xd6\x89\xe6\xd8\xdb\x95\x7c\x57\x3a\x07\xee\x46\xe5\x64\x2a\x13\x17\x8f\x1d\x30\xfc\x2d\xfa\x36\x7f\x37\x61\x24\xe5\x14\xa2\xfd\x22\x57\x1c\x61\xae\x4d\x2e\x03\x50\x66\x55\x46\xdd\x6a\x27\xf8\xa9\x79\xab\x5c\x2a\xe5\x25\x5d\x5c\x1b\xfb\x71\x0f\xb5\xb8\x15\x8f\x5f\x94\x7b\x03\xcf\xee\xab\x92\x08\x0a\xe4\xbd\xa3\xa1\x5d\x83\xd7\x3d\xc7\x9f\xd4\x44\x10\x3a\xa2\x5f\x5f\xe4\x86\x94\x6f\x03\xa0\x35\xf3\x83\xd8\xe1\xb8\x19\x9f\x7a\xba\x75\xcf\x00\x05\xd0\xdb\x23\xa4\x6a\x25\xd7\x69\x70\x45\xc6\x5d\x78\x8b\x07\x5f\x45\xac\x9d\xd6\xa3\x4b\x5d\x18\xcf\x8f\x4c\x0a\x11\xa1\xd9\x11\xdb\xf9\x9c\xa5\xd5\x8f\x9c\xea\x0f\x47\xbd\x25\x82\x94\xf9\x60\x92\x4a\x14\xf8\xba\x9b\xa9\x6c\xdf\xca\x15\x11\xa1\x8b\x39\xbe\xfa\x19\x4d\xbc\xbb\x14\x6f\xdd\x60\x7d\xb2\x9c\x90\x07\x7c\x80\x47\xb9\x85\x8c\xb8\x3e\xa3\x75\xb9\xae\x5e\x77\x91\x73\xc1\x75\x89\x55\xba\x4d\x86\xe4\xad\xbb\x02\x03\x01\x00\x01\xa3\x82\x02\x5a\x30\x82\x02\x56\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x49\x74\xbb\x0c\x5e\xba\x7a\xfe\x02\x54\xef\x7b\xa0\xc6\x95\xc6\x09\x80\x70\x96\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x32\xdf\xc8\x6d\xf3\xff\x3e\x29\xfd\xe9\x0c\x97\x29\x50\xf0\xa2\x10\x2c\x6e\x2f\x30\x0c\x06\x03\x55\x1d\x24\x04\x05\x30\x03\x80\x01\x00\x30\x12\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x08\x30\x06\x01\x01\xff\x02\x01\x00\x30\x81\x9f\x06\x03\x55\x1d\x20\x04\x81\x97\x30\x81\x94\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x05\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x09\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x0a\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x12\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x13\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x14\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x06\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x0d\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x11\x30\x3f\x06\x03\x55\x1d\x1f\x04\x38\x30\x36\x30\x34\xa0\x32\xa0\x30\x86\x2e\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x67\x65\x74\x63\x72\x6c\x3f\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x30\x81\xfe\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x81\xf1\x30\x81\xee\x30\x3f\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x33\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x67\x65\x74\x49\x73\x73\x75\x65\x64\x54\x6f\x3f\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x30\x20\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x01\x86\x14\x68\x74\x74\x70\x3a\x2f\x2f\x6f\x63\x73\x70\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x30\x81\x88\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x7c\x6c\x64\x61\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x67\x64\x73\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x6e\x25\x33\x64\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x25\x32\x63\x6f\x75\x25\x33\x64\x50\x4b\x49\x25\x32\x63\x6f\x75\x25\x33\x64\x44\x6f\x44\x25\x32\x63\x6f\x25\x33\x64\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x25\x32\x63\x63\x25\x33\x64\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x6a\xc0\x50\x29\x84\xf8\xdc\x67\x13\xb1\x96\xee\xba\x5c\xd4\xe5\x92\xf9\xcd\x64\x65\x33\x85\x28\x0b\xa0\x1a\xab\x53\x1d\x8c\x40\x17\x91\xba\x66\xda\x6b\x6b\xbc\xac\x8e\x61\x01\xc3\x67\x35\x11\x59\x52\x85\x70\x5d\xa1\x86\xe7\x7a\xc1\x1c\xc3\xd8\x5e\xcb\x77\xbb\xcc\x5c\xdc\x1a\xdd\x04\x5f\xfa\x88\xed\xb3\x6e\xb5\xb4\x44\xcb\x3a\x35\x9d\xa0\x4e\x1c\xc0\x45\xb5\xf6\xd4\xcd\x06\x79\xd2\x1a\x39\xec\x25\x26\x71\x9c\xd9\xb8\x6f\x93\x6c\xd6\x3b\x34\x3b\x67\x99\xaa\x5f\xa5\xb8\x6d\x4c\xc7\x09\xea\xc9\xc0\x74\x99\xd9\x59\x8b\x29\x89\x90\x2b\x81\x95\xd9\x87\xfd\x55\xf8\x58\x75\x52\xa6\x7f\x22\x68\x6d\x85\xd6\x7d\xae\x8a\x0d\x2f\x34\xbf\xd7\x28\x6c\xc6\x5b\xad\xbc\xff\x1b\x3a\xc6\x64\x85\xa4\x9c\x7d\x84\x95\x9f\xa8\x03\x65\xe4\x7f\x4d\xcc\x0c\x75\x7a\x4a\x05\x44\x58\x80\x8b\x39\x34\x4f\x33\x3f\x2b\x44\xf1\xd6\x74\xef\xef\x7c\x9a\xd8\xdc\x0b\x18\x3d\xf2\xe5\x9d\x50\x3b\x23\x29\xe5\xf4\xcf\x60\xea\x60\x4f\x1c\x60\xc1\x1a\xb2\x9c\x5a\x02\x04\xb0\x7c\xc1\xc9\x15\x6a\xdb\x2a\xaf\x0b\x08\xbb\x3e\x71\x7a\xa6\x3c\xe5\x1d\x44\x22", /* certificate */ 2048 /* keysize */ }, /* certs/dod/cert-3.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1421, /* certificate_len */ (unsigned char *) "\x30\x82\x05\x89\x30\x82\x04\x71\xa0\x03\x02\x01\x02\x02\x01\x50\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x32\x30\x1e\x17\x0d\x31\x30\x30\x31\x31\x34\x31\x37\x33\x38\x30\x35\x5a\x17\x0d\x31\x36\x30\x31\x31\x34\x31\x37\x33\x38\x30\x35\x5a\x30\x57\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x12\x30\x10\x06\x03\x55\x04\x03\x13\x09\x44\x4f\x44\x20\x43\x41\x2d\x32\x36\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xc2\xe4\x71\xba\xff\x44\x1f\xa5\x11\xe5\x8e\x58\x1a\x35\x7e\x04\x42\x7c\xfb\x54\xe1\xce\x5e\x25\xa3\xf0\x03\xc0\xab\x6c\x2b\x3e\x00\x8b\x1f\xca\x8d\x46\x13\x11\x17\x4d\x15\xe9\x90\xe6\xe9\x9d\xd7\xd3\xd2\x8d\xe6\x97\x56\xbc\x5c\x68\xae\xff\x1f\xe9\x4c\x2e\x46\x41\x06\xb6\x8d\x0d\x31\xec\x73\x41\x22\x07\x77\xee\x44\xbe\x3b\x60\xb3\x42\x94\x64\x47\xef\x24\x5f\xc5\xba\xb6\xdc\x43\x31\x04\xcf\xc1\xda\x5f\x23\xbd\x70\x95\x5c\x3f\xa6\x58\x2b\x5e\x18\xac\xd1\x90\xd3\xd6\xad\x56\x10\x5b\x27\x40\xeb\x90\xc2\x4c\x7c\xab\x17\x66\xc2\x29\x96\x23\x75\x7f\x0c\x0b\x00\xe7\xe7\x0b\xf9\x28\xf2\x95\xd3\xa9\x6f\x9d\x28\x4f\x62\xea\x69\xce\x8c\x06\x48\x7f\xca\x1c\x29\x44\x35\x73\x36\x4a\xe8\x9e\x7b\xd4\x37\xcf\x9a\x93\x3c\x53\x54\xe6\x1c\x93\xb5\xef\x79\x69\x74\x44\x08\x6a\x4d\xef\x12\xd8\x2f\x63\xaf\x99\xcb\x45\x3b\x8a\x09\x74\x14\x2f\xcd\xfb\x5e\x26\x60\x68\x61\x20\x82\x57\x71\x14\x6f\x25\x3c\x3d\xaf\x0f\xda\x37\x9a\x6d\xfc\xa6\x45\x8c\xbe\xb5\xdb\xe2\x94\x0b\xd0\x47\xc2\xb6\x54\xa3\x32\x9a\x69\xfa\x22\x37\xd4\xda\x3b\x38\x99\x02\x03\x01\x00\x01\xa3\x82\x02\x5a\x30\x82\x02\x56\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x49\x74\xbb\x0c\x5e\xba\x7a\xfe\x02\x54\xef\x7b\xa0\xc6\x95\xc6\x09\x80\x70\x96\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x6a\x5f\xb9\xf4\x7a\x36\x2c\xe2\x75\xf0\xbb\x64\x32\xc1\xf1\xb4\x4c\xa5\x2c\xfd\x30\x0c\x06\x03\x55\x1d\x24\x04\x05\x30\x03\x80\x01\x00\x30\x12\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x08\x30\x06\x01\x01\xff\x02\x01\x00\x30\x81\x9f\x06\x03\x55\x1d\x20\x04\x81\x97\x30\x81\x94\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x05\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x09\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x0a\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x12\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x13\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x14\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x06\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x0d\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x11\x30\x3f\x06\x03\x55\x1d\x1f\x04\x38\x30\x36\x30\x34\xa0\x32\xa0\x30\x86\x2e\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x67\x65\x74\x63\x72\x6c\x3f\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x30\x81\xfe\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x81\xf1\x30\x81\xee\x30\x3f\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x33\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x67\x65\x74\x49\x73\x73\x75\x65\x64\x54\x6f\x3f\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x30\x20\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x01\x86\x14\x68\x74\x74\x70\x3a\x2f\x2f\x6f\x63\x73\x70\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x30\x81\x88\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x7c\x6c\x64\x61\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x67\x64\x73\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x6e\x25\x33\x64\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x25\x32\x63\x6f\x75\x25\x33\x64\x50\x4b\x49\x25\x32\x63\x6f\x75\x25\x33\x64\x44\x6f\x44\x25\x32\x63\x6f\x25\x33\x64\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x25\x32\x63\x63\x25\x33\x64\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x7a\x3e\x6c\xac\x06\xcf\xf2\x6e\xcb\xfd\xed\xb0\x68\xd2\xc2\x96\xf4\xe3\x3c\x37\x10\x2d\x66\x95\xa7\x1d\x56\x69\x1d\x4a\x26\x29\xa5\x2f\x55\xe6\x3f\xd3\xb0\x32\x45\x8d\x14\xa1\xdb\x75\xa4\x6d\x98\xfc\x6e\xf5\xca\x7e\xd8\xca\xce\x52\xa4\x85\x01\x98\x9d\x19\x22\x60\x5a\xca\xc2\x2e\xf5\x22\x13\x0b\x18\xad\x6b\xc6\x1c\xf2\xd9\xa6\x92\xb4\xfb\x90\x07\x18\xaf\x42\x9b\x2b\x50\x2a\xc5\x2d\x03\xe8\x06\x2c\x9f\xf6\x79\x1e\x89\x4d\x2d\x39\x76\x20\x5f\xc8\x98\xa8\xde\x0e\x61\x0a\x2c\xbe\x0a\x04\x5e\x36\x75\xcf\x6d\x6b\x05\xed\x2a\x5e\xa3\x0c\x72\x90\xcc\x98\xce\x2c\xf9\xa9\x97\x1b\xc5\xfc\xdf\xc0\x2c\xa5\x90\x39\xac\xa0\xaf\x63\xdc\x63\x86\xaa\xcc\x1d\x3f\xe7\xdb\x62\xda\x12\x0b\x63\x3c\x43\x49\xf8\x05\x39\x55\x2d\xc6\x80\x96\x51\x01\x64\x51\x5c\xcb\x26\x7a\xea\xb6\xa8\x29\x80\xe2\x77\xc2\xe8\x8c\x16\x72\x85\x7d\x6f\x8e\x34\xa5\x5f\x50\xbd\xc3\x4e\x8d\xf5\x7a\x7d\xc8\xd6\x61\xae\xdc\xfa\x48\x12\x54\x12\x1d\x48\x5e\x96\xf0\xe5\xfb\xa8\xa1\x75\x61\x4c\x56\x82\x2d\x88\xd7\x18\xb9\x09\x55\xbf\xb1\x7e\x59\x94\xc2\x2c\x60\x93", /* certificate */ 2048 /* keysize */ }, /* certs/dod/cert-4.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1427, /* certificate_len */ (unsigned char *) "\x30\x82\x05\x8f\x30\x82\x04\x77\xa0\x03\x02\x01\x02\x02\x01\x4f\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x32\x30\x1e\x17\x0d\x31\x30\x30\x31\x31\x34\x31\x37\x33\x36\x33\x32\x5a\x17\x0d\x31\x36\x30\x31\x31\x34\x31\x37\x33\x36\x33\x32\x5a\x30\x5d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x18\x30\x16\x06\x03\x55\x04\x03\x13\x0f\x44\x4f\x44\x20\x45\x4d\x41\x49\x4c\x20\x43\x41\x2d\x32\x35\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xa2\x47\x73\xdf\x40\xa0\x15\xa6\xa7\xed\xa0\xe9\xc8\x7f\xfb\xd2\x8e\x4f\x09\xe5\xc5\x8d\x5c\x64\x1a\x43\x7e\xe1\x73\xb9\xaf\x10\x45\x7d\x33\x2d\xea\x60\x26\x73\x62\x21\x8b\x2f\xae\x9c\x17\xcc\xd5\xe6\x38\xa1\x2d\xee\x02\xb3\xf0\xb9\xde\xa6\x8b\x88\xd1\xb4\x63\x3d\xc8\x88\x88\x1c\x7f\x5e\x42\xeb\x1d\x93\xf3\xab\x78\xe9\x94\x1d\x03\x3d\x4d\x3e\x19\x17\x7c\xef\x09\x22\x82\xfe\xc3\xe4\x9f\x9e\xcd\xd9\xbd\x82\x84\x39\x0c\x52\xb7\x7d\xbb\x41\x7f\xf5\x8d\xa4\x2a\xf6\xd0\x5c\x62\x31\xc8\xe3\xea\xb7\xb7\x78\xd6\x9b\x4e\x62\x5e\xb5\x12\xdb\xca\x74\x5d\xb8\x6a\x11\x43\x49\x15\x83\xb9\x69\x63\x8f\x4d\x62\xc2\xf2\x04\x77\x59\x04\xab\x05\xce\xac\x14\x5e\x99\x7d\x1f\x4e\x8b\xd4\xc9\xa2\x97\xba\xce\xd0\x9c\xe3\x9d\x36\xfe\x8c\x81\xfc\x68\x39\x4d\x9e\x23\xe2\x83\xb3\xd3\xab\xe0\xd9\xdf\x99\x64\x0a\xc8\x34\xf2\xac\xe2\xf5\x50\x9e\x5e\x6d\xd1\x0f\x45\xb2\x52\xeb\x4e\x92\x6f\x1f\x69\xc8\xa1\x37\x18\x6d\x61\xc8\x86\xaa\xcf\xc4\xb7\xcc\x37\x49\xfa\x7c\x1b\x66\x72\x81\x4a\x46\x8c\x41\x4a\xab\x20\x0a\x76\xf7\xce\x12\xd4\xd0\x06\x55\x02\x03\x01\x00\x01\xa3\x82\x02\x5a\x30\x82\x02\x56\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x49\x74\xbb\x0c\x5e\xba\x7a\xfe\x02\x54\xef\x7b\xa0\xc6\x95\xc6\x09\x80\x70\x96\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x26\xdb\xeb\xb1\x45\x2e\xd8\x12\x90\x4d\xf5\x12\x41\xf5\xc3\xf0\x1e\xcc\xe0\xce\x30\x0c\x06\x03\x55\x1d\x24\x04\x05\x30\x03\x80\x01\x00\x30\x12\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x08\x30\x06\x01\x01\xff\x02\x01\x00\x30\x81\x9f\x06\x03\x55\x1d\x20\x04\x81\x97\x30\x81\x94\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x05\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x09\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x0a\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x12\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x13\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x14\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x06\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x0d\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x11\x30\x3f\x06\x03\x55\x1d\x1f\x04\x38\x30\x36\x30\x34\xa0\x32\xa0\x30\x86\x2e\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x67\x65\x74\x63\x72\x6c\x3f\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x30\x81\xfe\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x81\xf1\x30\x81\xee\x30\x3f\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x33\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x67\x65\x74\x49\x73\x73\x75\x65\x64\x54\x6f\x3f\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x30\x20\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x01\x86\x14\x68\x74\x74\x70\x3a\x2f\x2f\x6f\x63\x73\x70\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x30\x81\x88\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x7c\x6c\x64\x61\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x67\x64\x73\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x6e\x25\x33\x64\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x25\x32\x63\x6f\x75\x25\x33\x64\x50\x4b\x49\x25\x32\x63\x6f\x75\x25\x33\x64\x44\x6f\x44\x25\x32\x63\x6f\x25\x33\x64\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x25\x32\x63\x63\x25\x33\x64\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x69\x90\x0d\x6e\x22\xe9\xbb\x05\xb6\xe6\xcf\x38\x24\xa8\x90\x33\x79\x9a\xe2\xd9\x60\x11\x22\xd5\xec\x28\x47\x90\x20\x37\xe2\x84\x84\xb2\x68\xf6\x7d\xfe\x8b\x4b\x11\xb9\x1d\xbf\xdb\xcc\xdc\xe9\x72\x7e\x46\xc9\x8c\x48\xa9\x36\x86\x60\x90\x99\xda\xf8\x58\xdb\x72\xd0\xa9\x8e\x6e\x60\xc8\xbc\x60\xeb\x04\xd0\x0e\xf8\x71\x85\xe7\x5b\xe9\xc1\xfb\xec\x92\x95\xaa\x03\x69\xfd\xc8\x34\x05\x65\xd5\x02\x4f\x4f\x99\x83\x1a\xc8\x46\x5c\x3b\xfe\xf8\x71\xd8\x7c\x3b\x3d\x5c\xd1\xcd\x82\x4c\x43\x8d\xf5\x1a\xa6\xa8\x2f\x4b\x02\x74\xd7\x28\xd6\x91\x46\xd0\x4d\x63\x8d\xad\xf4\x94\x88\x98\x23\x23\x8b\xb6\xed\x8e\x40\x4e\x86\xf4\xd9\xe9\xd1\x36\x4a\xd4\x53\xc0\x4b\x96\xf0\xb1\xb8\x6e\x40\x9c\x6a\x32\x7c\x65\x6d\xb6\x60\xed\x81\x4a\x50\x57\x53\x63\x66\xe8\x77\xc7\x79\xdc\x77\x23\x0b\x3d\x63\x4a\x6d\xbb\xe8\x4f\x43\x24\xcf\x6d\x98\x5c\x11\xe8\x2f\x88\xa5\x3a\xe5\x4e\xc4\xd8\xd0\xfe\x9c\x98\xe4\x32\xad\x8e\x27\x14\x55\xab\xda\xc8\xb7\x76\x42\xfb\x59\x18\x92\xb8\x0a\x2b\x9a\x66\xcc\x30\xfb\xc4\x63\x6a\x26\xb7\xb7\x91\x1d\x18\xa2\x3e\x9c", /* certificate */ 2048 /* keysize */ }, /* certs/dod/cert-5.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1421, /* certificate_len */ (unsigned char *) "\x30\x82\x05\x89\x30\x82\x04\x71\xa0\x03\x02\x01\x02\x02\x01\x4e\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x32\x30\x1e\x17\x0d\x31\x30\x30\x31\x31\x34\x31\x37\x33\x33\x31\x32\x5a\x17\x0d\x31\x36\x30\x31\x31\x34\x31\x37\x33\x33\x31\x32\x5a\x30\x57\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x12\x30\x10\x06\x03\x55\x04\x03\x13\x09\x44\x4f\x44\x20\x43\x41\x2d\x32\x35\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xe1\xe2\x60\xb7\xce\x51\xb7\x66\x8e\x48\x60\xfb\x0b\xa8\xba\x5a\x51\xd4\xd8\x2a\x65\xf4\xd2\x96\xed\xa3\x58\x99\xa2\x89\xa8\x55\x86\x85\x61\xad\x08\xff\xb3\x12\x16\x75\xd2\x38\xfa\x1c\xee\x9a\xa0\x62\x5a\x91\xe1\xcc\xe1\xc9\x0d\x35\x7e\x17\x5f\x7f\x14\xac\x01\x75\xe4\x5f\x4a\x5f\x2d\x22\xcb\x49\xd4\x82\xb1\x19\x17\xae\x6d\x32\x38\x29\x72\x97\x0b\x9b\x6e\x15\xd0\x23\x08\x7b\x2d\x4b\x44\xbb\xa1\x15\xc9\x96\x6e\xa6\xd9\x14\x02\x88\x9c\x5e\xdf\xf9\x82\x31\x14\x46\xa8\x8b\x01\x3e\xe4\xae\xae\xfa\x53\x50\x37\x54\xba\x64\x53\x68\xa1\xa2\x8f\x7c\x80\x97\xf9\x3b\xf2\x8f\xe5\xf2\xff\x46\xf8\x8a\xec\x58\x25\x80\x77\x46\x60\x61\xba\x6e\x60\x3e\x1f\x7a\x3c\xa4\xd7\x17\x0e\x57\x9f\xa3\x2e\xb7\x40\x8a\x80\xb6\xe3\xd7\xd7\xcf\x6d\x01\x13\xf2\x80\x93\x47\xf3\xb9\x69\x9b\x0b\x56\x7d\xf7\x8b\x40\xa8\x70\xc2\x4e\x8d\x04\x19\x7e\x8b\x39\x54\x23\x0f\xbb\x8a\xf0\x7c\x77\xd5\xe9\x84\x56\xcc\x05\xb7\x43\x72\xfe\xef\x62\x42\x07\x85\x48\x4f\x44\xe9\x82\xf4\x10\x96\xb4\xb1\x23\xc5\xe8\x1f\x7b\xea\x9b\x93\x0b\xff\xcb\xee\x84\xcc\x32\x07\x02\x03\x01\x00\x01\xa3\x82\x02\x5a\x30\x82\x02\x56\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x49\x74\xbb\x0c\x5e\xba\x7a\xfe\x02\x54\xef\x7b\xa0\xc6\x95\xc6\x09\x80\x70\x96\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x2e\x0b\x65\xf9\xd6\x65\xde\x4b\xa3\x25\x75\xa4\xa1\x2e\x85\x21\x40\x73\xb9\x0a\x30\x0c\x06\x03\x55\x1d\x24\x04\x05\x30\x03\x80\x01\x00\x30\x12\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x08\x30\x06\x01\x01\xff\x02\x01\x00\x30\x81\x9f\x06\x03\x55\x1d\x20\x04\x81\x97\x30\x81\x94\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x05\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x09\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x0a\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x12\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x13\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x14\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x06\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x0d\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x11\x30\x3f\x06\x03\x55\x1d\x1f\x04\x38\x30\x36\x30\x34\xa0\x32\xa0\x30\x86\x2e\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x67\x65\x74\x63\x72\x6c\x3f\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x30\x81\xfe\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x81\xf1\x30\x81\xee\x30\x3f\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x33\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x67\x65\x74\x49\x73\x73\x75\x65\x64\x54\x6f\x3f\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x30\x20\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x01\x86\x14\x68\x74\x74\x70\x3a\x2f\x2f\x6f\x63\x73\x70\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x30\x81\x88\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x7c\x6c\x64\x61\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x67\x64\x73\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x6e\x25\x33\x64\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x25\x32\x63\x6f\x75\x25\x33\x64\x50\x4b\x49\x25\x32\x63\x6f\x75\x25\x33\x64\x44\x6f\x44\x25\x32\x63\x6f\x25\x33\x64\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x25\x32\x63\x63\x25\x33\x64\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x96\x0b\xc8\x16\xbb\x92\x62\xe8\x12\x8d\x60\x25\xe6\x12\xac\x77\xb1\x93\x96\xa5\xaa\x58\xf8\x1f\x80\x33\xd5\xcc\x7e\x2d\x2c\xb1\x84\x4e\x2b\xd6\x45\x0f\x0d\x38\xb5\x3a\xa6\x88\x9d\x59\xae\xf0\xce\xa5\x7a\xc5\xf8\xee\x9d\x79\xe3\xa7\x73\x5e\x6c\xbb\xb8\xab\x64\x48\xbc\x3b\xba\x5a\x1a\x5d\x55\x53\x98\xf4\x68\x54\x8e\x35\xb8\x23\x07\xb6\xa4\x7c\x75\xc5\x14\xa3\x22\x9e\x9f\x11\xb6\x16\x30\x91\x2c\xd8\x9e\xa0\x02\xac\xa2\xe1\xc7\x83\x41\xe1\xc1\xcd\x62\x84\x58\x37\x91\x03\x5c\x38\x58\x30\x1c\x11\x61\xd2\x01\x49\x84\x6a\xe0\x71\x04\x74\xbb\x94\x70\x7a\xf9\xf0\xcf\x3b\x16\xe9\x79\xb5\x0b\xa2\x05\xc2\x72\x03\xe5\xdf\x60\x3a\x64\x72\xb3\x03\x06\x40\x12\xd1\xd3\x0b\xa3\x0b\x9e\x42\x6d\xb0\xeb\x95\x47\x9a\x36\x46\x82\x24\x65\x53\xd5\xbc\x16\x08\x5f\x20\xee\x57\x5c\x02\x24\xd9\xc7\xd4\x16\xbc\x4b\x88\x18\x3a\xcc\x0c\x2a\x23\x71\x7d\x08\xc1\x7f\xf6\xb2\xf1\x13\xa7\xed\x82\x4e\xec\x0b\xe1\x13\xae\xc2\x35\x81\x40\xd5\x0e\x9e\xd7\x79\x18\xdd\x3e\x67\x0f\x43\xb0\x76\xd2\xa8\xce\x7a\x6d\x77\xfa\x27\xc9\x58\xad\xb1\x69\xda\x17", /* certificate */ 2048 /* keysize */ }, /* certs/dod/cert-6.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1366, /* certificate_len */ (unsigned char *) "\x30\x82\x05\x52\x30\x82\x04\x3a\xa0\x03\x02\x01\x02\x02\x02\x03\xa2\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x32\x30\x1e\x17\x0d\x31\x33\x30\x32\x30\x34\x32\x30\x34\x38\x31\x32\x5a\x17\x0d\x31\x39\x30\x32\x30\x34\x32\x30\x34\x38\x31\x32\x5a\x30\x5d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x18\x30\x16\x06\x03\x55\x04\x03\x13\x0f\x44\x4f\x44\x20\x45\x4d\x41\x49\x4c\x20\x43\x41\x2d\x33\x32\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xa3\xfa\xaa\x86\xca\x8a\x1a\x1b\x03\x4e\x71\x6d\x41\xb6\xd9\x65\x9a\x6e\xff\x36\x2a\x3f\x02\xd3\x7c\x95\x65\x88\x5a\xa4\xf7\xaf\x63\xb7\x52\xc7\x1a\xfb\xbb\x95\x73\x07\x42\x61\x8b\x4a\xa6\x7b\xe9\x56\x07\x36\x1b\xaa\x37\x02\x20\x1c\xa4\xce\xfb\xb6\xd0\x69\xab\xfc\x38\x4c\xc8\xdb\x46\x56\xf7\xa2\x5e\x7e\xe7\x31\xb4\xee\xc1\xff\xcd\x64\xbf\x79\x82\x41\x2b\x77\xd2\xf8\x7d\xab\x4c\x8f\xf7\xc6\x1e\x3c\xf8\x8e\x2f\x3d\x14\x83\xda\x92\x98\x09\xd8\xd0\xc6\x5a\x59\x36\x8b\x87\xa2\x89\xdd\xbe\x4a\x5e\xcb\xcd\xb6\x47\x7e\x41\xa6\x09\x54\x6c\x41\x96\x74\x5b\x06\xc3\xd4\xc1\x2e\x46\x7d\x5e\x36\xdf\x8d\xa2\x46\x71\xac\x4a\xba\xc4\xb1\xf7\xc9\x17\x0a\x2f\xdd\xa3\xec\x84\x21\xcf\xa8\x05\xea\xb9\xe3\x2e\x6f\x9f\x7e\x7d\xbb\x1d\x16\x75\x4f\x92\x1d\x03\xe6\x11\x38\x98\x36\x7a\xa1\xd4\x00\x3c\xad\x10\x58\xaf\x15\xc7\x36\x4b\xe3\x3b\x9b\x4d\xb5\xb4\x90\xbe\xad\xab\xd3\xc0\x84\xb3\xfc\xdc\x15\x88\x09\x8c\x11\x50\x50\x2f\xe4\x70\xec\xb7\x0a\xae\x4a\x53\xe2\x36\xc4\x05\x6e\x80\x75\x12\x8d\x37\x46\xf2\x4b\x0c\x38\x1c\x49\x1f\xac\x83\x02\x03\x01\x00\x01\xa3\x82\x02\x1c\x30\x82\x02\x18\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x0a\xb0\xaa\x38\x56\x47\x7b\x16\x7d\xbe\xab\x93\x96\xbc\x54\xdd\x85\xfb\xed\x2c\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x49\x74\xbb\x0c\x5e\xba\x7a\xfe\x02\x54\xef\x7b\xa0\xc6\x95\xc6\x09\x80\x70\x96\x30\x12\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x08\x30\x06\x01\x01\xff\x02\x01\x00\x30\x0c\x06\x03\x55\x1d\x24\x04\x05\x30\x03\x80\x01\x00\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x66\x06\x03\x55\x1d\x20\x04\x5f\x30\x5d\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x05\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x09\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x11\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x12\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x13\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1a\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1b\x30\x37\x06\x03\x55\x1d\x1f\x04\x30\x30\x2e\x30\x2c\xa0\x2a\xa0\x28\x86\x26\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x72\x6c\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x2e\x63\x72\x6c\x30\x82\x01\x01\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x81\xf4\x30\x81\xf1\x30\x3a\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x2e\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x69\x73\x73\x75\x65\x64\x74\x6f\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x5f\x49\x54\x2e\x70\x37\x63\x30\x20\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x01\x86\x14\x68\x74\x74\x70\x3a\x2f\x2f\x6f\x63\x73\x70\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x30\x81\x90\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\x83\x6c\x64\x61\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x67\x64\x73\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x6e\x25\x33\x64\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x25\x32\x63\x6f\x75\x25\x33\x64\x50\x4b\x49\x25\x32\x63\x6f\x75\x25\x33\x64\x44\x6f\x44\x25\x32\x63\x6f\x25\x33\x64\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x25\x32\x63\x63\x25\x33\x64\x55\x53\x3f\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x0f\xbd\x8f\x47\xff\xb9\xc9\xbd\x43\xe5\xce\xbe\xb5\xf3\x39\xcb\x45\x16\x59\xa3\xdf\xb6\x52\x24\x3c\x09\x55\x4b\xd9\xbf\x95\x7a\xbd\x76\xd9\xe0\x30\x87\xcd\x4a\xa9\xa3\x2d\x9e\xd9\x28\x04\xc6\x96\xae\x01\x14\x80\xd0\x25\x56\xf1\x58\x03\x55\xef\xd2\xa8\x22\x52\xab\x81\xef\x00\xfe\xaf\xc7\x49\xd2\x8c\x20\x2e\xa4\x71\x81\xf7\x26\xcb\x0e\xa5\x6d\xd5\x41\x77\x7b\x2d\x33\xbb\x9b\xb3\x7c\x9c\x3f\x3d\xff\xc2\xee\x79\xf2\x89\x0a\x10\x8c\x90\x74\x5d\x34\x67\x70\xbe\x02\xfe\x80\x46\x19\x07\xce\x7d\x2f\x96\xa8\xc4\x13\xd0\xef\x9f\x29\xb1\x34\xa9\xb9\x8c\xa5\x89\x34\xb3\x8c\x3e\x47\xf8\x66\x8c\x91\xd1\xee\xab\xc1\xea\x71\x85\xc9\x5f\xb0\xa9\xee\xdb\x00\xd4\x30\x2a\x42\xce\x57\x63\x10\x22\x30\xa8\x9c\x86\x41\x12\x5d\xbe\x50\x7c\x13\xfa\xeb\x28\x73\x5f\x72\x33\x89\x5f\x7f\x0d\x68\xa4\x3d\xfd\x16\x26\xe8\x0a\x93\xfe\x7b\x1f\x86\x81\x80\x27\xbe\x67\x71\x86\x1b\x7d\xc7\x6f\xb7\xa9\x71\x01\xc6\x63\xb3\x73\x7d\x01\x6b\x33\x22\xed\x79\x89\x8a\x0e\xe6\x72\x02\x73\x37\x3f\xcb\x31\x81\xed\xa4\xfb\x0b\x6a\x3b\x52\x84\xba\x4c\xf7\x8e", /* certificate */ 2048 /* keysize */ }, /* certs/dod/cert-7.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1360, /* certificate_len */ (unsigned char *) "\x30\x82\x05\x4c\x30\x82\x04\x34\xa0\x03\x02\x01\x02\x02\x02\x03\xa1\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x32\x30\x1e\x17\x0d\x31\x33\x30\x32\x30\x34\x32\x30\x34\x34\x30\x35\x5a\x17\x0d\x31\x39\x30\x32\x30\x34\x32\x30\x34\x34\x30\x35\x5a\x30\x57\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x12\x30\x10\x06\x03\x55\x04\x03\x13\x09\x44\x4f\x44\x20\x43\x41\x2d\x33\x32\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xb3\xe2\x95\x1d\x93\x36\x2d\x25\xa5\x0e\xfd\x78\xe9\xef\xea\x93\xd1\x3a\xc9\xd8\x57\xbd\x19\xdf\xd1\xc7\xa2\xd1\xe8\xd9\xfd\xd2\x8e\x15\xa8\xdd\xbd\x3e\x64\xf4\xb6\xfe\x9c\x03\xdf\x4b\xb0\x65\xb7\xab\x04\x18\x32\x19\x6c\x13\x01\x52\xd1\xe6\xb5\xc8\x41\x12\xb7\xbe\x3b\xcb\x4d\x40\x10\x88\xca\x9e\xb6\xfd\x35\x77\x6d\x26\xf6\x64\xad\x11\x87\x0c\xa9\x25\x7a\x58\x9f\xb0\xbd\x98\xf6\x93\x5f\x1b\xef\xef\xb2\x97\xad\xf8\x15\xe7\xdc\xe6\xa0\x6a\x75\x0d\x51\xdf\x55\x1d\x68\x41\x52\x49\x2e\xc7\x9c\x68\x57\x56\x47\x8f\xde\xf6\x52\x2e\x81\x6f\x56\xbc\x06\x89\x12\x94\x9f\x23\xbd\x3f\x81\xc7\x86\x02\x75\x30\x5e\x33\xa1\xdc\xe1\x13\xbb\xfd\x79\x56\x01\x3c\x4a\x19\xf4\x2c\xeb\x90\x64\x64\xd7\xe8\x0a\x2f\x51\x86\xd5\x08\x9b\x84\xfb\xf9\xe9\x8b\x42\xca\x65\xd2\x90\x07\x1c\x82\x97\x8c\x44\x23\x57\x06\x2c\x75\x69\x28\x70\xb2\xed\x3e\x4c\xd5\xe3\x96\x77\x15\xfd\xba\x95\xcf\x5b\x96\x69\x02\x77\xd6\x80\xd9\x8f\x87\x29\xe3\xe7\x05\x76\xaf\xca\x8d\x12\x60\x34\x72\xc7\xb3\x9d\x38\x6e\x4c\x96\x32\x9e\x90\x35\xad\x75\x8b\xd1\x62\x40\x09\x02\x03\x01\x00\x01\xa3\x82\x02\x1c\x30\x82\x02\x18\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x2f\xca\x93\x53\x03\xac\x6f\x75\xf5\x76\xfa\xbe\xfe\x8e\xea\x10\x8b\xb7\xe7\x90\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x49\x74\xbb\x0c\x5e\xba\x7a\xfe\x02\x54\xef\x7b\xa0\xc6\x95\xc6\x09\x80\x70\x96\x30\x12\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x08\x30\x06\x01\x01\xff\x02\x01\x00\x30\x0c\x06\x03\x55\x1d\x24\x04\x05\x30\x03\x80\x01\x00\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x66\x06\x03\x55\x1d\x20\x04\x5f\x30\x5d\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x05\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x09\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x11\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x12\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x13\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1a\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1b\x30\x37\x06\x03\x55\x1d\x1f\x04\x30\x30\x2e\x30\x2c\xa0\x2a\xa0\x28\x86\x26\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x72\x6c\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x2e\x63\x72\x6c\x30\x82\x01\x01\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x81\xf4\x30\x81\xf1\x30\x3a\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x2e\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x69\x73\x73\x75\x65\x64\x74\x6f\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x5f\x49\x54\x2e\x70\x37\x63\x30\x20\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x01\x86\x14\x68\x74\x74\x70\x3a\x2f\x2f\x6f\x63\x73\x70\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x30\x81\x90\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\x83\x6c\x64\x61\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x67\x64\x73\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x6e\x25\x33\x64\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x25\x32\x63\x6f\x75\x25\x33\x64\x50\x4b\x49\x25\x32\x63\x6f\x75\x25\x33\x64\x44\x6f\x44\x25\x32\x63\x6f\x25\x33\x64\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x25\x32\x63\x63\x25\x33\x64\x55\x53\x3f\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x30\x8d\xd5\x56\x63\xbd\x99\x06\x8b\x4d\xb6\xd2\x0e\x03\xb9\xc6\x84\xd2\x9b\x77\x41\x1a\x88\xd2\xff\xc3\xda\xe2\xe6\x67\x61\xbd\xd9\x7a\xed\x38\x39\x5e\xab\x0b\x58\x34\xf9\xda\xe8\x62\x79\xaf\x39\x72\xf3\x4a\xa7\xe3\x4e\x39\x10\xcd\xe9\xd2\x08\xea\xd4\x9e\x9a\xa7\x35\x35\x93\x93\x02\x59\xe2\x4c\x00\x1c\xf3\xfc\x6b\x21\x53\x4a\x8c\x61\xe7\x61\xcb\xd0\x46\x0b\xd1\x3f\x9c\x69\xf5\xef\x50\x8a\xf0\x40\xb3\x2b\x56\x5a\x1d\x6b\x62\x59\x05\xb3\x8f\x27\x18\x05\x0a\x43\x5b\x02\xef\xdd\x52\x5e\x5b\xc0\xa9\x1c\x56\xe3\x95\x6c\x97\x4f\x01\x83\x56\x72\x5d\xd7\x7d\x51\xe3\x5a\x54\x2e\xb8\x98\xfd\x72\x4e\x25\x8f\x8b\x16\xd1\xb0\xe1\x33\xe3\x92\x7c\x10\x55\x33\x24\x66\xaf\x0f\x33\x06\x53\x48\x03\x87\x9f\xb4\x64\x74\xb5\xd2\x3d\x22\x72\xb7\xd1\x8e\x37\x11\x13\x39\xdf\x9e\xe7\xd0\x0c\x0b\x8a\x59\x11\x32\x65\xff\xf6\xb9\x46\xbd\x3f\x36\x9e\xa7\x94\x00\x57\xf0\xc0\x19\xe1\x2c\xdc\x4c\xf7\x2f\x4c\x90\x1d\x43\xef\xae\x08\xe3\x73\x9e\x3a\xbf\x99\xec\x22\xb9\x07\x58\xae\xd9\x35\x52\x4b\x51\xbb\x81\x36\x8f\x9f\x6e\x21\x0a\xa6\x8e\x87", /* certificate */ 2048 /* keysize */ }, /* certs/dod/cert-8.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1366, /* certificate_len */ (unsigned char *) "\x30\x82\x05\x52\x30\x82\x04\x3a\xa0\x03\x02\x01\x02\x02\x02\x03\x9f\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x32\x30\x1e\x17\x0d\x31\x33\x30\x31\x31\x36\x31\x34\x35\x32\x34\x33\x5a\x17\x0d\x31\x39\x30\x31\x31\x36\x31\x34\x35\x32\x34\x33\x5a\x30\x5d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x18\x30\x16\x06\x03\x55\x04\x03\x13\x0f\x44\x4f\x44\x20\x45\x4d\x41\x49\x4c\x20\x43\x41\x2d\x33\x31\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xe8\xae\x02\x2c\x40\x4c\x3a\x52\xe8\x8b\x73\x92\xb4\x77\xe7\x38\x4b\xc0\xf0\xaa\x4a\x18\x5c\xc7\xf7\x35\xc3\x4a\xf0\xf0\x96\x77\xa5\x97\xbe\x27\xef\xc4\x44\x21\x80\xea\x16\x34\xb7\x30\xd1\x44\x38\x7f\x2a\xce\x04\xc6\x91\x65\xa9\x6e\x50\x7c\xc8\x4e\xfe\xbd\xc0\xb5\x4b\x16\xe4\x38\x52\x15\xdb\xb3\xb7\xf7\x53\x3d\xf2\xb1\x07\xdb\x91\x66\x5d\xc1\xb7\xf2\x77\x66\xc4\x51\x9a\x63\x94\x11\x4b\x02\x1d\x0d\x4b\x7c\xb3\x00\x47\x07\x79\x18\xfa\x78\xb3\x93\x1f\xd4\x76\x6d\x99\x04\xc5\x1e\x36\x46\xfc\x06\x34\x0b\xe3\x68\x6f\x1e\x7c\x9f\x2c\xcf\x61\xb8\x4b\xff\xb4\xdf\x06\x9f\xa0\x5f\x94\x5e\xeb\x35\xff\x09\x5d\x35\x40\x07\xf2\x9d\xed\x96\x09\xd9\x76\xea\xfe\x6e\x31\xfe\xcb\xf4\x45\xeb\x30\x78\x48\x68\x6c\xa1\x29\x3e\x86\x7d\x93\x41\x4a\xea\xe7\x0c\x4c\xe5\x91\x50\x2a\xa5\x43\x66\xbc\x22\xc0\xfc\x1b\x2c\xe4\xf3\x2f\x62\x1e\x04\xd4\x21\xbf\xac\x1f\x26\x77\x35\xd0\x1d\xbc\xe2\xbb\x46\xc2\xf2\xeb\xe4\x14\xae\xf8\xb3\x6b\xb3\xfa\x71\x38\xb0\x71\x29\xed\xd1\x8b\x1b\xd7\x02\x1b\xde\xca\xec\x7e\xee\xa1\xdc\x48\xa5\xf1\x3e\x94\xa9\x02\x03\x01\x00\x01\xa3\x82\x02\x1c\x30\x82\x02\x18\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x86\xf1\x5b\x68\x6f\xdd\x30\xf3\x94\x82\x68\xd4\x4c\xf7\x44\x1d\xb8\xca\x68\x81\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x49\x74\xbb\x0c\x5e\xba\x7a\xfe\x02\x54\xef\x7b\xa0\xc6\x95\xc6\x09\x80\x70\x96\x30\x12\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x08\x30\x06\x01\x01\xff\x02\x01\x00\x30\x0c\x06\x03\x55\x1d\x24\x04\x05\x30\x03\x80\x01\x00\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x66\x06\x03\x55\x1d\x20\x04\x5f\x30\x5d\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x05\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x09\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x11\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x12\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x13\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1a\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1b\x30\x37\x06\x03\x55\x1d\x1f\x04\x30\x30\x2e\x30\x2c\xa0\x2a\xa0\x28\x86\x26\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x72\x6c\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x2e\x63\x72\x6c\x30\x82\x01\x01\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x81\xf4\x30\x81\xf1\x30\x3a\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x2e\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x69\x73\x73\x75\x65\x64\x74\x6f\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x5f\x49\x54\x2e\x70\x37\x63\x30\x20\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x01\x86\x14\x68\x74\x74\x70\x3a\x2f\x2f\x6f\x63\x73\x70\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x30\x81\x90\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\x83\x6c\x64\x61\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x67\x64\x73\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x6e\x25\x33\x64\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x25\x32\x63\x6f\x75\x25\x33\x64\x50\x4b\x49\x25\x32\x63\x6f\x75\x25\x33\x64\x44\x6f\x44\x25\x32\x63\x6f\x25\x33\x64\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x25\x32\x63\x63\x25\x33\x64\x55\x53\x3f\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x59\x32\xad\xaa\xc3\xf8\xdf\x9c\x64\x9c\x71\x09\x34\xc1\xbd\xbc\x63\x00\x1e\x2d\xdb\xed\xa9\xc8\x08\xe3\xb9\x18\xe4\xaf\xca\xae\x14\xc1\xdd\xbb\xf9\x73\x83\x83\x57\x8e\x94\xc9\xa0\xaa\x03\x07\xce\x67\x9c\xb5\xe5\x17\x59\x3f\x28\xb8\x17\x36\xda\xba\x8d\xc3\x96\x11\x01\x6a\x50\xd6\x06\xda\x68\xa4\x4a\xd2\x0b\x85\x7c\xcd\x88\xdf\xff\x5e\x77\xe6\xf5\xa4\x48\x91\xd0\x4e\xa2\x67\x6a\xf8\x68\xef\xaa\x17\x45\xef\xd8\x96\x0a\xdd\xcf\xf0\x3e\x87\xb6\xbf\x88\x3f\xd3\x54\xbe\x3e\x12\xce\xa1\xf9\x0b\x6f\x32\xd1\x54\xbf\x84\x5b\x35\xa0\xdb\x07\x64\xb5\xab\xe9\x79\x1e\xe2\xf2\xaa\x74\x72\xe7\x91\x12\xf7\xc7\xbb\x6e\xee\xe5\x74\x90\x10\x24\x8b\xb7\xe7\xcd\x9c\x85\x90\x47\xe4\xe2\x6f\x7f\x20\xbd\x2c\xbb\x83\x96\x23\x4d\xa8\x4c\xd8\x7e\x2e\x5e\x15\x29\xb8\x25\x7d\x57\x35\x0b\x2d\x15\x54\x8c\xa9\xdc\xe0\xe5\x37\x9d\xa8\x4f\x20\x95\x83\x2b\xc5\x12\x36\x3d\xa8\x73\xe1\x4e\x88\x49\xa5\xb9\xbb\xfa\x09\x4a\x28\x5a\x33\xb9\xe4\x92\x79\x5b\x7b\xf8\xa5\x4f\xf3\xc9\x34\xcd\x99\x8c\xb0\xba\x60\x7e\x9f\x84\x3e\xe6\x3c\xfa\x7e\x5a\xeb\xe6", /* certificate */ 2048 /* keysize */ }, /* certs/dod/cert-9.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1360, /* certificate_len */ (unsigned char *) "\x30\x82\x05\x4c\x30\x82\x04\x34\xa0\x03\x02\x01\x02\x02\x02\x03\x9d\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x5b\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x44\x6f\x44\x20\x52\x6f\x6f\x74\x20\x43\x41\x20\x32\x30\x1e\x17\x0d\x31\x33\x30\x31\x31\x36\x31\x34\x34\x39\x33\x30\x5a\x17\x0d\x31\x39\x30\x31\x31\x36\x31\x34\x34\x39\x33\x30\x5a\x30\x57\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x44\x6f\x44\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x50\x4b\x49\x31\x12\x30\x10\x06\x03\x55\x04\x03\x13\x09\x44\x4f\x44\x20\x43\x41\x2d\x33\x31\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xc6\x27\x10\x2f\x90\x96\x38\xd9\xdf\xe6\x5f\x3f\xba\x89\xfb\x66\x82\xeb\xb6\xa5\xed\xf0\x56\x90\x16\x40\xe7\x6c\xa2\xb0\x79\x66\x59\xd7\x98\x62\x31\xd1\x33\x22\x53\xe3\x1e\x5c\xa4\x56\x66\xa6\x4d\x56\xfb\xc3\xe2\x42\x12\xab\xf9\xc0\x4a\x4b\x40\xef\x91\x13\x86\x39\x30\x51\xd6\x6e\x8e\x27\xb7\x41\x89\x29\x01\xee\x58\x46\x73\x04\x71\x44\x5c\x69\x43\x3e\x32\xe6\x64\xdf\xb3\x6b\x99\x2c\x70\xa2\xd0\x3e\x4d\xd8\x58\x12\x6d\x45\xf0\x3d\x93\x54\xbe\xdf\xe2\xfb\xcf\x11\xff\xfc\x8a\x01\x37\xef\xa7\x2e\xba\x40\x0c\x6a\x3e\x1c\xe4\x0a\x32\x80\x69\xbd\x22\x39\xec\x4b\x76\xc9\xb1\x5a\x93\x3c\x21\x84\x38\xdd\x73\x13\x82\xf9\x5d\x0c\x81\x0a\xa9\xb2\x53\x74\xd9\x0b\x8e\xc0\xe8\x97\xbb\x3d\x5f\x13\x8c\xb5\xb9\x3b\xec\xf6\xbb\x9d\x8e\x20\xf6\x6b\xbc\x9d\x14\x32\xdc\x7e\xb9\xe2\x63\xb0\x6a\xc1\x80\xb9\x16\xfc\x91\xef\xac\xb2\x09\x9f\x52\x47\x58\x13\x5e\x62\x7e\x9a\x12\x86\x5b\xc5\x20\x1f\xe1\x8e\x66\x00\x76\x53\xec\xe7\x22\x89\x21\x4c\x5f\xb9\xe9\xbe\xa0\x52\x93\x0e\xa6\xc8\xde\xcc\xb7\x82\xad\x22\x6d\x8b\xd0\x30\x53\x36\x55\x57\x02\x03\x01\x00\x01\xa3\x82\x02\x1c\x30\x82\x02\x18\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x44\xe3\x46\xa3\x41\xee\x60\xb1\x5e\xa7\x93\x25\xf4\xa0\x53\xee\xb7\x49\xbe\xbb\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x49\x74\xbb\x0c\x5e\xba\x7a\xfe\x02\x54\xef\x7b\xa0\xc6\x95\xc6\x09\x80\x70\x96\x30\x12\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x08\x30\x06\x01\x01\xff\x02\x01\x00\x30\x0c\x06\x03\x55\x1d\x24\x04\x05\x30\x03\x80\x01\x00\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x86\x30\x66\x06\x03\x55\x1d\x20\x04\x5f\x30\x5d\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x05\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x09\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x11\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x12\x30\x0b\x06\x09\x60\x86\x48\x01\x65\x02\x01\x0b\x13\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1a\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x1b\x30\x37\x06\x03\x55\x1d\x1f\x04\x30\x30\x2e\x30\x2c\xa0\x2a\xa0\x28\x86\x26\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x72\x6c\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x2e\x63\x72\x6c\x30\x82\x01\x01\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x81\xf4\x30\x81\xf1\x30\x3a\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x2e\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x69\x73\x73\x75\x65\x64\x74\x6f\x2f\x44\x4f\x44\x52\x4f\x4f\x54\x43\x41\x32\x5f\x49\x54\x2e\x70\x37\x63\x30\x20\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x01\x86\x14\x68\x74\x74\x70\x3a\x2f\x2f\x6f\x63\x73\x70\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x30\x81\x90\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\x83\x6c\x64\x61\x70\x3a\x2f\x2f\x63\x72\x6c\x2e\x67\x64\x73\x2e\x64\x69\x73\x61\x2e\x6d\x69\x6c\x2f\x63\x6e\x25\x33\x64\x44\x6f\x44\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x25\x32\x30\x32\x25\x32\x63\x6f\x75\x25\x33\x64\x50\x4b\x49\x25\x32\x63\x6f\x75\x25\x33\x64\x44\x6f\x44\x25\x32\x63\x6f\x25\x33\x64\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x25\x32\x63\x63\x25\x33\x64\x55\x53\x3f\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x47\x51\x52\xdc\xf4\xa0\x73\x9a\x42\xe7\x0b\xec\x23\x91\x8d\x25\x75\xb4\x44\x82\x34\xaa\xf9\x46\x75\x51\xc3\xf6\x0e\xf8\xe7\xe3\x2f\xb4\x20\xc3\xef\xa1\x65\x34\xe0\x9d\x87\xc1\xe6\x2e\x62\xf0\x27\xe8\xeb\xc5\xcf\x35\x95\xd2\x40\x80\x8b\x92\x09\xb6\xa6\x1b\xd5\x12\x64\x31\xdb\xb5\xd4\x0e\xdf\x0a\x8a\xb6\x56\xf5\xbc\x76\x92\x93\x19\x7c\xbf\x65\x7d\x72\x81\xd8\x64\x7b\x39\x34\x8a\x76\x58\xcc\x1d\x43\xf7\x07\xcf\x1c\x83\x03\x73\xbe\x38\x17\xdb\x74\xad\x69\x09\x11\x7c\xed\xd8\xd6\x02\x8d\x66\x3d\xab\x6b\xca\x33\xdb\xc7\x7a\x66\xc5\xde\xa7\x27\x48\x0f\x66\x12\xee\x68\x24\xc0\xef\x91\xea\x06\x19\x2a\x50\x58\x13\xe0\x22\xfc\x0e\xb1\x24\xfb\xeb\x8e\x42\x02\x0f\x77\x88\x15\x8b\xe6\xf2\xf5\x53\xb7\x7c\xe0\x55\x9b\x13\xd6\xb6\x70\xca\x73\x70\xe3\x53\x25\xc1\x28\x1e\x7b\xc4\x2c\x49\x6e\x90\xdb\xaa\xcb\x5b\x03\x1b\xc2\x87\x87\xf5\xab\xbe\x51\x71\x73\x6d\x26\x66\x7b\x9b\x1d\x17\xe0\xed\xe3\xc0\xde\x1d\x27\xb1\xed\x0d\x34\x46\x3e\xdd\x2e\x5e\xf4\x82\x70\xda\xd1\x93\x1b\x79\xdd\xd6\x4a\xe7\xce\xf9\x3f\x73\x1f\xce\x8a\xe6\x16", /* certificate */ 2048 /* keysize */ }, /* certs/federal/CPCA_TRCA.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1472, /* certificate_len */ (unsigned char *) "\x30\x82\x05\xbc\x30\x82\x04\xa4\xa0\x03\x02\x01\x02\x02\x02\x17\xd8\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x59\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0d\x30\x0b\x06\x03\x55\x04\x0b\x13\x04\x46\x50\x4b\x49\x31\x21\x30\x1f\x06\x03\x55\x04\x03\x13\x18\x46\x65\x64\x65\x72\x61\x6c\x20\x43\x6f\x6d\x6d\x6f\x6e\x20\x50\x6f\x6c\x69\x63\x79\x20\x43\x41\x30\x1e\x17\x0d\x31\x33\x31\x32\x32\x33\x31\x31\x31\x36\x35\x31\x5a\x17\x0d\x31\x36\x31\x32\x32\x33\x31\x31\x31\x36\x35\x31\x5a\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xe8\x24\x04\x59\xcc\x98\xc7\x7c\x64\xb1\x6a\xd7\x3b\x29\x48\xc7\xbb\x58\xea\xdf\xa2\xc4\x2a\x93\xd1\x68\xd6\x8b\x83\xc2\x2a\x40\xe6\x6a\xec\x6e\x1a\xdf\xe9\x23\xef\x54\x61\xda\xe5\xa2\xed\x76\x00\x69\x04\xd5\x4c\xf2\xbf\xc4\x1b\x68\x85\x51\xae\x07\xa7\x38\xd9\x0a\xb3\x52\x11\x36\x9f\x22\x81\xde\x04\x48\x77\xbe\xa8\xaf\xb2\xf1\x78\x2e\xac\xc4\x58\x87\x50\x86\x02\x0c\x7b\x37\x68\x08\x9d\x62\x4d\xb5\x09\xb7\xf1\x16\x73\xdb\x04\xe8\x46\xe9\x88\x93\x25\xc8\xda\x6d\xa3\xa8\x8c\x21\xdf\xc6\xd7\x36\x58\x20\xdb\xad\xf6\x8c\x12\x80\x22\x97\x58\xf4\xe3\x42\x8b\x7d\xd1\xf4\x7e\xb9\x7f\x56\xef\xba\x31\xbc\x49\xec\x12\xaf\x08\x80\xb9\xe2\x97\x62\x60\x7f\xef\x83\xf9\x63\xde\xeb\x70\x6e\xab\xc4\x4f\x0f\x34\x12\xa6\xcb\xad\x26\x43\xcb\x8f\x03\xc6\xf3\x9e\x24\x1e\x2a\x83\xb0\x6a\xe6\x29\xff\x57\x1e\xb1\x6e\x5f\x4f\x40\xd5\x42\xb5\xaa\xd5\xb4\x51\xe4\xb2\x7b\x5b\x06\xfc\x82\xa2\xcc\xb1\x16\xbf\x3e\x44\xc7\xa3\x64\xb7\x82\xf6\x68\x72\xdb\xe6\xfe\x7b\x61\xdb\xfe\xae\x75\x76\xcc\xdc\x6c\x52\xd9\xbc\x07\xa8\x39\x66\xeb\x8f\x9a\xcb\x02\x03\x01\x00\x01\xa3\x82\x02\x56\x30\x82\x02\x52\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x81\x97\x06\x03\x55\x1d\x20\x04\x81\x8f\x30\x81\x8c\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x01\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x02\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x06\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x0d\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x11\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x10\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x24\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x27\x30\x4f\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x43\x30\x41\x30\x3f\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x33\x68\x74\x74\x70\x3a\x2f\x2f\x68\x74\x74\x70\x2e\x66\x70\x6b\x69\x2e\x67\x6f\x76\x2f\x66\x63\x70\x63\x61\x2f\x63\x61\x43\x65\x72\x74\x73\x49\x73\x73\x75\x65\x64\x54\x6f\x66\x63\x70\x63\x61\x2e\x70\x37\x63\x30\x81\x8d\x06\x03\x55\x1d\x21\x04\x81\x85\x30\x81\x82\x30\x18\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x01\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x02\x30\x18\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x02\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x03\x30\x18\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x06\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x07\x30\x18\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x07\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x04\x30\x18\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x10\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x05\x30\x3d\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x0b\x04\x31\x30\x2f\x30\x2d\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x21\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x72\x6f\x6f\x74\x5f\x73\x69\x61\x2e\x70\x37\x63\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\xad\x0c\x7a\x75\x5c\xe5\xf3\x98\xc4\x79\x98\x0e\xac\x28\xfd\x97\xf4\xe7\x02\xfc\x30\x35\x06\x03\x55\x1d\x1f\x04\x2e\x30\x2c\x30\x2a\xa0\x28\xa0\x26\x86\x24\x68\x74\x74\x70\x3a\x2f\x2f\x68\x74\x74\x70\x2e\x66\x70\x6b\x69\x2e\x67\x6f\x76\x2f\x66\x63\x70\x63\x61\x2f\x66\x63\x70\x63\x61\x2e\x63\x72\x6c\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x48\xf5\x4a\xee\xfb\xce\x75\x30\x86\x32\x6c\x21\xa4\x57\xa8\x28\x29\xe9\x08\xaa\x76\xcb\xcf\xac\xbd\xb4\x00\x2a\x78\xa1\xf0\xe7\xb1\xcf\x2e\x12\x5d\x0a\x1b\xb5\x7f\xb0\xa7\xd8\xd7\x62\x6f\x88\xbd\xbb\x6e\xdc\x92\x5a\xd9\xc6\xca\x04\xd7\xe5\x79\xf8\xfd\x84\xe3\xb6\x01\x00\xa9\xe9\x80\x1c\xca\xb4\x79\xe7\x32\x91\xa1\x4a\xff\x92\x70\x96\x85\x00\x50\xbf\x5a\x74\xc2\x10\x91\xdd\xb1\x4f\xf7\x46\xdc\x30\x39\xbc\x29\x14\x05\xce\xcd\xa1\xac\xb5\x82\x88\xfe\xde\x39\x91\x29\xf2\x00\xbf\xe7\xad\x66\xc0\x12\x0a\x83\x8f\x79\xc9\xf0\x0f\x79\xcd\xd9\xf2\x6d\xd9\x46\x96\x6e\x8b\xc7\xbe\x76\x43\x9a\xde\x6a\xb1\xdb\x06\xdb\x20\x9b\x20\x5e\x34\x62\xf1\x66\x01\xd0\x04\x79\xa1\x19\x6d\x15\xe7\x3b\x83\x7a\x18\x8c\x74\xfe\x4b\x73\x00\xb8\x47\x4a\xb4\x2b\xd0\x12\x34\x03\x23\x3d\x6b\x3c\x21\xbd\xcc\xcd\xea\x89\x48\xcd\x28\xe5\x2b\x87\x21\x88\xe0\x9f\x08\xf5\x81\xaf\x1b\x92\xc4\x4f\xab\x86\x92\xc6\xb1\x13\xc2\x87\x6e\xef\x6d\x91\x9a\xc6\x54\x74\x5a\x2d\x87\x2f\x28\xb6\x7d\x5c\x69\x44\xfc\xc8\x1d\x1c\xd3\xb5\x39\xf0\x36\xad\x0a\xa8\x76", /* certificate */ 2048 /* keysize */ }, /* certs/federal/CommonPolicy.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 933, /* certificate_len */ (unsigned char *) "\x30\x82\x03\xa1\x30\x82\x02\x89\xa0\x03\x02\x01\x02\x02\x10\x29\x36\x47\xaa\xe3\x8a\xac\x86\x4a\x23\x56\xf2\xca\xb7\x61\xaf\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x4e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x75\x73\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0d\x30\x0b\x06\x03\x55\x04\x0b\x13\x04\x46\x42\x43\x41\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x43\x6f\x6d\x6d\x6f\x6e\x20\x50\x6f\x6c\x69\x63\x79\x30\x1e\x17\x0d\x30\x37\x31\x30\x31\x35\x31\x35\x35\x38\x30\x30\x5a\x17\x0d\x32\x37\x31\x30\x31\x35\x31\x36\x30\x38\x30\x30\x5a\x30\x4e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x75\x73\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0d\x30\x0b\x06\x03\x55\x04\x0b\x13\x04\x46\x42\x43\x41\x31\x16\x30\x14\x06\x03\x55\x04\x03\x13\x0d\x43\x6f\x6d\x6d\x6f\x6e\x20\x50\x6f\x6c\x69\x63\x79\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\x97\x8d\xbd\x33\x27\xe4\xad\x5b\xfb\x78\xbd\x2f\x47\x47\x6e\xc7\x78\xe9\x93\x9c\xa4\xde\xc9\x1c\xfd\x2f\x1b\x39\x38\xac\x47\x17\xc0\x7e\x77\x29\x00\x3b\x03\x1f\x68\x0f\xcd\x4d\xa5\xee\x77\xb8\x2c\x62\x6b\x31\xf6\xfa\x72\x09\x7d\x30\x29\x06\x7c\xe7\x7c\xa3\x3d\x84\x18\x8a\x1d\xae\x2c\x92\xa8\x1f\xe8\x5e\x4f\x8d\x8e\xeb\x3f\x1a\xf8\x9c\x0a\x67\x9d\xb0\x67\x4d\xf0\x2e\xd0\x30\xde\xc3\x94\xb0\xa0\xcf\x2e\x0a\x34\x7f\x54\x09\xd3\x36\xbd\xa4\x49\x57\x52\x73\xe9\x9d\xfe\xe4\x48\x79\x46\x1b\x5b\x8d\x32\xe4\xa5\x48\x64\xf3\x22\x0d\x92\x9d\x08\x15\xbf\x60\x3c\x83\xf7\x47\x22\x25\x22\xad\x29\x71\xb7\x77\xef\x17\xc9\xa2\xb6\x94\x5e\xc8\x30\x90\xa4\x14\x48\x5c\x56\x57\x0b\x41\x4c\x05\xd4\x2a\x4c\x3f\xae\x12\x9b\x59\x11\x75\x70\x07\x22\x69\x2d\x2c\xd3\x31\xcc\x92\x7e\xcc\xcd\xa4\x7e\x94\x47\xaa\x9c\x09\x08\xf6\x4b\xaf\x52\xe8\x6a\x40\x91\xc5\x55\xbd\x40\xb1\xc8\x6d\x57\x86\x95\x17\xe6\x1f\x73\xbe\x47\x2e\x3e\x8b\x4c\x17\xb9\xb9\x25\x1c\xa5\x52\x17\x36\x08\x59\xc0\x42\xbe\x0a\x2b\xb4\x56\x51\x3c\x1b\x55\xc9\x8c\x90\x77\xeb\x02\x03\x01\x00\x01\xa3\x7b\x30\x79\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x2f\x58\x97\xd8\xa9\x05\x98\xa5\x56\x1f\xfb\xd9\xab\x75\xef\x02\x3c\x36\x34\xc7\x30\x12\x06\x09\x2b\x06\x01\x04\x01\x82\x37\x15\x01\x04\x05\x02\x03\x01\x00\x01\x30\x23\x06\x09\x2b\x06\x01\x04\x01\x82\x37\x15\x02\x04\x16\x04\x14\x76\xb7\x60\x96\xdd\x14\x56\x29\xac\x75\x85\xd3\x70\x63\xc1\xbc\x47\x86\x1c\x8b\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x60\xae\xf3\x48\x16\x40\x72\xa6\x08\x88\xc9\xbc\x47\x2c\x24\x4b\x5d\xa0\x91\x73\xed\x65\x78\x90\xf0\x67\x90\x7a\xa5\xbf\x0a\xad\xb6\x2a\xf9\x99\x67\xdf\x83\xc5\x77\x1f\x34\x09\x38\xf9\x7e\x9e\x41\xe0\x48\x60\xfe\xe2\xaa\x5d\x87\x88\xea\x88\xfd\x5c\x45\xb2\xc9\x6a\xda\x7d\xa4\xad\xb1\x4f\xbf\x1c\x0d\x9f\x1e\x9a\xc0\xd5\x14\x73\x38\x2b\x8a\x78\x40\x6e\x30\xf7\x62\xe1\xcd\x99\xfc\x51\x69\x67\x6c\x11\xdd\xb8\x10\xa3\x68\xde\x26\xa5\x56\xfd\x36\x6c\x37\x98\x6c\xfb\xee\x7c\x3c\x6c\x6b\x70\x3f\xf7\x48\x37\x09\x8f\x0b\x42\x81\xad\x46\x46\xb8\x0b\x83\x06\xf4\x1b\x38\xa0\x7f\x4f\xcd\x0b\xef\x83\x89\x87\x97\x1c\x8a\x30\x67\xdc\xfd\x54\xa1\x03\x7e\x01\xcb\x85\x4c\xb1\x0b\x29\xc3\xbe\xec\x7c\xe1\x3f\x0f\x09\x52\x3c\x2f\xa7\x9a\x48\xfe\x37\xe9\x11\x06\x58\xe1\x36\x41\x8a\xc4\xb6\xbf\x8e\xdd\xce\x4a\xb3\xbc\x1a\xc0\xcd\xfa\x1a\x99\xd2\x71\x9b\xfa\xcf\xbc\xf2\xc4\x54\xa3\x88\x35\x76\xcc\x1b\x2c\x46\x6f\x0c\xb4\xd1\xc3\x61\x76\x92\x74\x11\xea\x4b\x80\x8d\x1c\x89\x11\x8b\xec\x5b\xff\x17\xc9\x48\xfc\xe7\xe0\x06\x11\xe2\x84\x5e", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-0.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1368, /* certificate_len */ (unsigned char *) "\x30\x82\x05\x54\x30\x82\x04\x3c\xa0\x03\x02\x01\x02\x02\x04\x44\x3e\xa7\x3a\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x30\x36\x30\x38\x30\x35\x31\x34\x31\x36\x33\x30\x5a\x17\x0d\x32\x36\x30\x38\x30\x35\x31\x34\x34\x36\x33\x30\x5a\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xe8\x24\x04\x59\xcc\x98\xc7\x7c\x64\xb1\x6a\xd7\x3b\x29\x48\xc7\xbb\x58\xea\xdf\xa2\xc4\x2a\x93\xd1\x68\xd6\x8b\x83\xc2\x2a\x40\xe6\x6a\xec\x6e\x1a\xdf\xe9\x23\xef\x54\x61\xda\xe5\xa2\xed\x76\x00\x69\x04\xd5\x4c\xf2\xbf\xc4\x1b\x68\x85\x51\xae\x07\xa7\x38\xd9\x0a\xb3\x52\x11\x36\x9f\x22\x81\xde\x04\x48\x77\xbe\xa8\xaf\xb2\xf1\x78\x2e\xac\xc4\x58\x87\x50\x86\x02\x0c\x7b\x37\x68\x08\x9d\x62\x4d\xb5\x09\xb7\xf1\x16\x73\xdb\x04\xe8\x46\xe9\x88\x93\x25\xc8\xda\x6d\xa3\xa8\x8c\x21\xdf\xc6\xd7\x36\x58\x20\xdb\xad\xf6\x8c\x12\x80\x22\x97\x58\xf4\xe3\x42\x8b\x7d\xd1\xf4\x7e\xb9\x7f\x56\xef\xba\x31\xbc\x49\xec\x12\xaf\x08\x80\xb9\xe2\x97\x62\x60\x7f\xef\x83\xf9\x63\xde\xeb\x70\x6e\xab\xc4\x4f\x0f\x34\x12\xa6\xcb\xad\x26\x43\xcb\x8f\x03\xc6\xf3\x9e\x24\x1e\x2a\x83\xb0\x6a\xe6\x29\xff\x57\x1e\xb1\x6e\x5f\x4f\x40\xd5\x42\xb5\xaa\xd5\xb4\x51\xe4\xb2\x7b\x5b\x06\xfc\x82\xa2\xcc\xb1\x16\xbf\x3e\x44\xc7\xa3\x64\xb7\x82\xf6\x68\x72\xdb\xe6\xfe\x7b\x61\xdb\xfe\xae\x75\x76\xcc\xdc\x6c\x52\xd9\xbc\x07\xa8\x39\x66\xeb\x8f\x9a\xcb\x02\x03\x01\x00\x01\xa3\x82\x01\xb6\x30\x82\x01\xb2\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x82\x01\x0f\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x0b\x04\x82\x01\x01\x30\x81\xfe\x30\x2d\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x21\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x72\x6f\x6f\x74\x5f\x73\x69\x61\x2e\x70\x37\x63\x30\x81\xcc\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x81\xbf\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x2c\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x11\x06\x09\x60\x86\x48\x01\x86\xf8\x42\x01\x01\x04\x04\x03\x02\x00\x07\x30\x2b\x06\x03\x55\x1d\x10\x04\x24\x30\x22\x80\x0f\x32\x30\x30\x36\x30\x38\x30\x35\x31\x34\x31\x36\x33\x30\x5a\x81\x0f\x32\x30\x31\x36\x30\x38\x30\x35\x30\x32\x34\x36\x33\x30\x5a\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x09\x2a\x86\x48\x86\xf6\x7d\x07\x41\x00\x04\x10\x30\x0e\x1b\x08\x56\x37\x2e\x31\x3a\x34\x2e\x30\x03\x02\x04\x90\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x69\x57\x40\x9b\xcb\x68\x4a\xc0\x26\x62\xfd\xea\x48\x79\x9a\xea\xd6\xa8\x61\xd5\x13\xaa\xec\x10\x07\x36\xc8\x7f\xd5\xb8\xf3\x6f\x63\x7a\xc9\xe0\xee\xb8\x62\x49\xd9\xc8\x8b\x1e\x5e\xe7\xb8\x5f\x90\x7f\xd2\x14\x3b\x77\x71\x07\xc0\x4a\x46\xd5\xe4\xd8\x51\x92\x99\x77\x39\xe1\x96\x0f\xfc\x76\x6e\x55\xe2\x98\x7e\x40\x03\x5b\xe6\x60\xd3\x60\x5f\x64\x4d\x70\x13\x4f\x0f\x3e\x7f\x93\xc7\xa4\x89\x30\x2b\x9f\x5d\xcf\xe4\x7a\xa7\x3a\x0c\x23\x0b\xf0\x3f\x16\xa8\x4f\x13\xd2\x4f\x7c\x01\xa8\x26\xa9\x10\x4f\x8b\x42\x22\x0e\x95\xd4\x7d\xba\xc4\x33\xdb\x80\x4e\xcc\xdc\x12\x04\xf5\x47\x39\xf6\xdf\x0c\x24\x8c\x56\x63\xe4\x42\x4c\xc8\x76\x16\x24\xcc\x16\x5f\xd7\xca\x74\x52\x70\x95\x5e\x4a\xbd\xec\x91\x78\xec\x7c\x2c\x80\x37\x59\xb7\x93\x57\x6f\x65\xa3\x89\x80\x62\xc4\x35\xcd\x3a\xd3\x11\x3e\xbd\x49\x19\x89\xd4\x51\xb1\xaa\x14\xf0\x3e\x2e\xd6\x3b\xde\x5e\xea\xee\xa7\x8e\x7d\x98\xe3\x9a\xe1\x30\x81\x8f\xf2\x76\xf6\x4b\x51\x89\x1b\xfb\xd7\xb0\x12\x37\x75\x32\xa2\xdd\x25\xa6\x81\x34\x3d\x3d\x2f\x1a\xc8\x06\xb5\x59\xb0\x6b\xbe\x63\x7b", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-1.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1553, /* certificate_len */ (unsigned char *) "\x30\x82\x06\x0d\x30\x82\x04\xf5\xa0\x03\x02\x01\x02\x02\x04\x4e\x39\x81\x28\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x31\x35\x30\x36\x31\x33\x31\x34\x33\x35\x30\x34\x5a\x17\x0d\x32\x35\x30\x36\x31\x33\x31\x35\x30\x35\x30\x34\x5a\x30\x81\x87\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x28\x30\x26\x06\x03\x55\x04\x0b\x13\x1f\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x48\x6f\x6d\x65\x6c\x61\x6e\x64\x20\x53\x65\x63\x75\x72\x69\x74\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x10\x30\x0e\x06\x03\x55\x04\x0b\x13\x07\x44\x48\x53\x20\x43\x41\x34\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\x9e\xb3\xe5\x02\x80\xda\x18\xce\x4a\xfc\x15\xbb\x44\x96\x77\xf4\xc9\xb0\x9b\xf6\x5d\xdd\x96\x37\xbc\x93\xa3\xd3\x82\x48\xf8\x90\xf9\x4f\x3d\xa0\x01\x3c\xc6\x52\x29\xa3\xef\x7b\x98\xc2\xb7\x0e\x3c\x14\xe0\x67\x5e\x30\xfd\x1c\x76\x92\x9a\xad\xc2\xfb\x04\x14\x8f\x08\xad\xa3\xd5\xfd\xe8\xe4\xf3\x62\x61\x4e\x91\x0c\x90\x51\xea\x98\x1f\xba\xf1\x3a\x2c\x90\xc0\x9a\x92\x99\x19\xc2\x48\x4e\x72\xe3\xba\x2d\xb9\x68\xc0\x32\xe9\xd9\x4d\x5f\x46\x8d\x16\xed\x89\x02\x90\x7d\xc8\x31\x3d\x56\xb2\x0e\x0c\xd8\x59\xb0\x3e\x8b\x1b\x88\x82\x6b\x59\x80\x4f\x1b\x46\x41\xf2\x2a\x7d\x98\x53\xfd\xa4\x8d\x9d\xf7\x1b\xcc\x87\x5d\x65\x8b\xe1\x42\x56\x0c\x17\x9d\xd2\xf7\xea\x00\x26\xfd\xb5\x5f\x21\xcb\x1c\xef\x75\x3d\x6e\xf9\x52\xd7\x96\x57\x15\x99\xbf\x12\xdf\x41\x99\xa4\xc3\x37\x80\xc4\x92\x37\xed\x89\xe9\x46\xb1\xc6\xbe\xd8\xe3\x79\x15\x60\xb5\x42\xa2\xdf\x08\xf7\x0a\x9b\xd1\x49\x52\xcc\xcb\x4e\x42\x00\xa9\x60\xb0\x6e\x7a\xbe\xf1\xb7\x96\x09\x1e\x22\x82\x6b\xc2\x20\x55\xfa\xc6\x38\x1b\x76\xa8\x4f\xbf\x9e\x7c\x98\x11\x9c\x9a\x71\x09\x87\x02\x03\x01\x00\x01\xa3\x82\x02\x76\x30\x82\x02\x72\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x81\x97\x06\x03\x55\x1d\x20\x04\x81\x8f\x30\x81\x8c\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x06\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x0d\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x10\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x11\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x24\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x27\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x28\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x29\x30\x41\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x35\x30\x33\x30\x31\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x25\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x75\x72\x79\x2e\x67\x6f\x76\x2f\x64\x68\x73\x63\x61\x5f\x61\x69\x61\x2e\x70\x37\x63\x30\x41\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x0b\x04\x35\x30\x33\x30\x31\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x25\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x75\x72\x79\x2e\x67\x6f\x76\x2f\x64\x68\x73\x63\x61\x5f\x73\x69\x61\x2e\x70\x37\x63\x30\x81\xee\x06\x03\x55\x1d\x1f\x04\x81\xe6\x30\x81\xe3\x30\x35\xa0\x33\xa0\x31\x86\x2f\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x75\x72\x79\x2e\x67\x6f\x76\x2f\x55\x53\x5f\x54\x72\x65\x61\x73\x75\x72\x79\x5f\x52\x6f\x6f\x74\x5f\x43\x41\x2e\x63\x72\x6c\x30\x81\xa9\xa0\x81\xa6\xa0\x81\xa3\xa4\x81\xa0\x30\x81\x9d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x13\x04\x43\x52\x4c\x31\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x7c\xc3\x4a\x5c\xba\x1f\x36\xab\x83\x51\x7d\xf4\xe0\xe5\x0e\x90\x7f\x1c\x13\x41\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x53\x90\xc0\x84\x16\x84\x8c\xcb\x35\xbc\xe4\xc9\xaf\x19\xf9\x4e\xc1\xa0\x54\xab\xb2\x0f\x9a\x55\x74\xf8\x4a\xd3\x49\x8d\xd5\x8f\x09\x93\xb9\x7c\xfe\x8a\x53\xd3\x96\xda\x07\x07\x03\x3f\xc6\xca\x50\xba\xe4\x9a\xdb\x14\xce\x96\xa3\xb6\x67\xfa\xba\xd3\xad\x96\x6f\x0e\x77\x7b\xbb\x28\xda\x7d\xe5\x03\x9e\x72\x38\x57\x03\xf0\x62\xb3\xd4\x42\x59\x72\xae\xee\xd8\x0b\xd6\x99\x8e\x9e\x9f\x32\x6f\x12\xf8\xc5\x0d\xeb\xd0\xe9\x6f\xb3\x4c\x14\x7b\x76\xf3\xbe\x82\x61\x17\x28\xfa\xad\x2d\xfc\x44\x8d\xd5\x3f\x98\x2e\xba\x86\x02\x13\xe3\xc3\x3d\x7e\xa2\x94\xf2\xae\x16\x37\x35\x20\x51\xb4\x9f\x31\x53\x33\x48\x70\x33\xf7\xe2\xbf\x6d\x77\x44\x97\xb6\x28\x9d\x9b\x15\xff\x74\x32\xe2\x1a\x2d\x18\xbf\x30\xfd\xd2\xc4\x96\x34\x02\x8e\x00\xd9\x77\x33\x28\x48\x3d\xea\xc2\xb8\x00\xc5\xaa\x90\x0b\x52\x49\x18\xe7\x34\xda\xf9\x99\x4f\x1c\x37\xff\xe2\x97\xde\x75\x93\x78\x70\x90\xe9\xbf\xd5\xf8\xf7\xf4\x6d\x7a\xb6\x08\x8f\x47\x06\xc3\xc5\x32\x58\x56\x8e\x6d\x20\x0e\x54\x40\x6b\x61\xef\x93\xcf\xe9\x74\x45\x0d\xc6\x55\x0f\x26\x86\x90\x4a\xd9\x82", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-10.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 2030, /* certificate_len */ (unsigned char *) "\x30\x82\x07\xea\x30\x82\x06\xd2\xa0\x03\x02\x01\x02\x02\x04\x45\xf9\x4a\xb5\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x30\x37\x30\x33\x31\x35\x32\x31\x33\x37\x30\x37\x5a\x17\x0d\x31\x37\x30\x33\x31\x35\x32\x32\x30\x37\x30\x37\x5a\x30\x78\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0d\x30\x0b\x06\x03\x55\x04\x0b\x13\x04\x4e\x41\x53\x41\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x4e\x41\x53\x41\x20\x4f\x70\x65\x72\x61\x74\x69\x6f\x6e\x61\x6c\x20\x43\x41\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xe4\x4b\x31\x6b\x18\x2a\x48\xcc\x71\xf4\x7a\xd8\x49\x28\x64\x55\xf8\x3c\xe9\xb0\x00\x05\x23\x61\x1a\xb7\x97\x2f\x69\x45\x6d\x95\x52\xdb\x06\x97\x45\xf7\xe5\x8b\x42\x34\x48\x27\x8f\x93\x6f\xba\xfb\xb7\x36\x04\x43\xe1\xc2\xa8\xc7\xaf\xb3\xb3\x49\x9f\xd0\x19\xa5\xa9\xf4\x62\x49\xa7\x2f\xa7\x2f\xe9\xf2\xe6\x88\xcb\x14\x44\x80\x08\x18\x32\x9f\x1c\x22\xb7\x5b\x80\x42\x03\x17\xd6\x20\x26\x41\xd2\x57\x05\xbe\x1d\x77\xb3\xd3\x00\xed\x73\xa0\x95\x86\x4d\x34\x1b\x09\x7f\xb2\x3f\x28\x58\x53\x56\x59\xe7\xfd\x31\x44\x2c\x8c\xbd\xc1\x71\xa7\x9d\xd6\x90\x10\xcc\xcd\x09\x6d\xb0\x3b\x8c\xd9\x37\x34\x08\x2d\x7b\xe6\xdf\x2f\xf5\x0a\x1f\x8d\x9a\x21\x60\x42\xc8\xe6\x32\x1e\xe4\xc5\x61\xfd\xf2\x7d\xba\x7b\x60\x5b\xe2\x34\xbb\xec\x87\x74\x56\xf6\x24\x69\x1c\x91\x68\xd8\xc8\x01\x56\xcb\x62\x42\x0a\x5e\x91\xe4\x39\x08\x79\xaa\xbb\xc9\x2a\x0f\xa9\xfd\x4c\x71\x37\x2e\x9f\xd9\x71\x94\x0b\x66\xf5\xb3\x3e\xd0\xf8\x13\xf3\x5a\xeb\x76\x88\x78\x23\xbe\x1a\x77\xe1\xb1\xaf\x21\x88\x56\x4e\x11\xf2\x22\x91\x74\x81\x78\x92\xc2\x93\x2e\x7e\x2a\x31\x02\x03\x01\x00\x01\xa3\x82\x04\x63\x30\x82\x04\x5f\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x4f\x06\x03\x55\x1d\x20\x04\x48\x30\x46\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x06\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x0d\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x04\x30\x82\x01\x0f\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x82\x01\x01\x30\x81\xfe\x30\x2d\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x21\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6e\x6f\x63\x61\x5f\x61\x69\x61\x2e\x70\x37\x63\x30\x81\xcc\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\xbf\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x2c\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x81\xd7\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x0b\x04\x81\xca\x30\x81\xc7\x30\x2d\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x21\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6e\x6f\x63\x61\x5f\x73\x69\x61\x2e\x70\x37\x63\x30\x81\x95\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x81\x88\x6c\x64\x61\x70\x3a\x2f\x2f\x6e\x64\x61\x63\x2e\x61\x72\x63\x2e\x6e\x61\x73\x61\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x4e\x41\x53\x41\x25\x32\x30\x4f\x70\x65\x72\x61\x74\x69\x6f\x6e\x61\x6c\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x4e\x41\x53\x41\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x30\x82\x01\xa1\x06\x03\x55\x1d\x1f\x04\x82\x01\x98\x30\x82\x01\x94\x30\x82\x01\x5c\xa0\x82\x01\x58\xa0\x82\x01\x54\xa4\x81\xa0\x30\x81\x9d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x13\x04\x43\x52\x4c\x31\x86\x81\xae\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x63\x6e\x3d\x43\x52\x4c\x31\x2c\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x61\x75\x74\x68\x6f\x72\x69\x74\x79\x52\x65\x76\x6f\x63\x61\x74\x69\x6f\x6e\x4c\x69\x73\x74\x30\x32\xa0\x30\xa0\x2e\x86\x2c\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x55\x53\x5f\x54\x72\x65\x61\x73\x75\x72\x79\x5f\x52\x6f\x6f\x74\x5f\x43\x41\x2e\x63\x72\x6c\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\xaa\x6d\xb5\x89\x9e\x27\x1a\xe9\xac\x2d\xf1\xe6\x6f\x8d\x23\xb6\xa0\xbf\x93\xc1\x30\x19\x06\x09\x2a\x86\x48\x86\xf6\x7d\x07\x41\x00\x04\x0c\x30\x0a\x1b\x04\x56\x37\x2e\x31\x03\x02\x00\x81\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\xa8\x3b\x4f\xeb\x3a\xc6\xa8\x76\x54\x10\x19\xe8\x98\x17\x4b\xad\x43\x84\xa2\x1c\xe7\x2b\x9f\x4e\xf7\x9d\xc3\x23\xf8\xcb\xa5\x68\x64\x50\x5f\xba\x2f\xed\xd2\xd3\xb1\x1c\xd6\xc7\xe8\x24\xee\x48\x1a\x70\xed\x5b\x87\x24\x25\xeb\x3a\xb1\x94\x48\x31\x25\xe1\x07\x0a\xb8\xbf\xe2\xb8\x4c\x13\xdd\x8e\xaf\x99\x5e\xe7\x9b\x59\xb5\xc5\x14\xe1\x0b\x54\x7d\x39\xdc\x4c\x4e\x0e\xa7\xad\x24\x31\x4a\x1a\xd6\x92\xe1\xb2\x37\xcc\xfe\xe1\xeb\xfe\x0a\xc5\x3d\x06\xa7\xa6\x0a\x14\x91\x0d\x9b\xbc\x67\xdc\x6a\xba\x6d\x7a\x3f\x4c\x6f\x14\x0c\x75\xa5\x6f\xee\xc9\xff\x0e\x4c\x9a\x5b\xd7\xf5\x9b\x29\x28\xe5\x29\x61\x2b\x47\x3e\x4b\x66\x5c\xc4\xa8\xe4\x58\xf9\xbd\xd3\xb9\x34\x2c\x84\xf6\x7b\xa3\x3b\x45\xe3\x01\xd5\x74\x18\x90\x12\xd0\x6c\x64\xc9\x8d\x60\x81\x2e\x11\x06\xc0\x61\x05\x16\x95\x9c\x46\x16\xed\x53\x9b\xf7\x3c\xb7\xaa\x51\xbe\x05\x97\x91\xb6\x87\x8a\xfe\xea\x3e\x97\x41\xd5\x34\xbf\xab\x44\x98\x1e\xf6\x01\x31\xa1\xd5\x79\xc0\x0a\xe6\xf2\x88\x00\x10\xa4\xc4\x69\x0a\xa9\x5e\xc3\xe8\x8b\x30\xad\xed\xe1\xf7\x58\x37\x99\x07\x4c\x14\xc8", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-11.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 2030, /* certificate_len */ (unsigned char *) "\x30\x82\x07\xea\x30\x82\x06\xd2\xa0\x03\x02\x01\x02\x02\x04\x44\x3e\xa7\xe9\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x30\x36\x30\x39\x32\x30\x31\x38\x34\x31\x30\x38\x5a\x17\x0d\x31\x36\x30\x39\x32\x30\x31\x39\x31\x31\x30\x38\x5a\x30\x78\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0d\x30\x0b\x06\x03\x55\x04\x0b\x13\x04\x4e\x41\x53\x41\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x4e\x41\x53\x41\x20\x4f\x70\x65\x72\x61\x74\x69\x6f\x6e\x61\x6c\x20\x43\x41\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\x9b\x6e\xfb\x99\x21\xa9\xff\xe1\x94\xa1\x8f\x38\x7d\xd7\x08\x6d\xb2\x2b\x96\x1e\x2c\xa1\x4e\x0b\xbb\x28\xd0\x67\xff\xa2\x8b\x54\xcd\xc2\x02\x25\x67\x74\xde\x6e\xe1\xb9\xfe\xc7\x0a\x09\x70\x59\xb0\x5b\xf1\x7c\xaf\xb3\x1b\xd6\xff\x26\x60\xdd\x1b\x41\xca\xfe\xd9\xeb\x63\x49\xf7\xaa\xbb\x3c\xa9\x14\x39\x2b\x97\xbc\x13\x4f\x1c\xaa\xcc\x11\x49\x02\x26\xbf\x77\x13\x99\x67\x0d\x1b\x08\xce\xe5\xbe\xc3\x81\xf4\x34\x17\x70\x9a\x2b\xbb\xdb\xf9\xe9\xc4\x60\x9c\x7a\x64\xf1\xb4\xe4\xd1\xce\x64\xe4\x1d\xf5\x5f\x5c\x07\x70\xe1\xe1\x6a\x94\x19\x46\xa9\x8d\x73\x10\x50\x9f\xe9\xd7\xfe\xa0\x4a\x9b\xab\xfa\x33\xf3\x45\xee\xb2\x59\x78\x7d\x3e\x01\x3f\xc3\xa3\x58\x51\xc1\xf2\xe8\x5f\x17\xf4\x7c\xd6\x6e\xd1\x56\xf1\x27\x00\x35\xfb\xfd\x7d\x57\xe8\xc7\x30\xdb\x02\xaf\x16\x14\xe3\xff\xdc\x4c\xbf\x77\xff\x64\xc8\xce\x3f\xb3\xf6\x39\x2e\xf8\xd9\xa3\x28\x37\xd0\xb0\x24\xb3\xb9\x51\x9d\x0c\x61\x82\xae\x1c\xca\x18\x9d\x99\xf0\xf6\x39\x1f\x99\x10\x28\x10\xa1\xde\x3c\x6f\xf6\x7b\x69\xd4\xb8\xa3\xef\x8a\x4b\xc9\x86\x2f\xa4\xe4\xa8\xfc\xa2\x81\x02\x03\x01\x00\x01\xa3\x82\x04\x63\x30\x82\x04\x5f\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x4f\x06\x03\x55\x1d\x20\x04\x48\x30\x46\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x06\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x0d\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x04\x30\x82\x01\x0f\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x82\x01\x01\x30\x81\xfe\x30\x2d\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x21\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6e\x6f\x63\x61\x5f\x61\x69\x61\x2e\x70\x37\x63\x30\x81\xcc\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x81\xbf\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x2c\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x81\xd7\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x0b\x04\x81\xca\x30\x81\xc7\x30\x2d\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x21\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6e\x6f\x63\x61\x5f\x73\x69\x61\x2e\x70\x37\x63\x30\x81\x95\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x81\x88\x6c\x64\x61\x70\x3a\x2f\x2f\x6e\x64\x61\x63\x2e\x61\x72\x63\x2e\x6e\x61\x73\x61\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x4e\x41\x53\x41\x25\x32\x30\x4f\x70\x65\x72\x61\x74\x69\x6f\x6e\x61\x6c\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x4e\x41\x53\x41\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x30\x82\x01\xa1\x06\x03\x55\x1d\x1f\x04\x82\x01\x98\x30\x82\x01\x94\x30\x82\x01\x5c\xa0\x82\x01\x58\xa0\x82\x01\x54\xa4\x81\xa0\x30\x81\x9d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x13\x04\x43\x52\x4c\x31\x86\x81\xae\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x63\x6e\x3d\x43\x52\x4c\x31\x2c\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x61\x75\x74\x68\x6f\x72\x69\x74\x79\x52\x65\x76\x6f\x63\x61\x74\x69\x6f\x6e\x4c\x69\x73\x74\x30\x32\xa0\x30\xa0\x2e\x86\x2c\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x55\x53\x5f\x54\x72\x65\x61\x73\x75\x72\x79\x5f\x52\x6f\x6f\x74\x5f\x43\x41\x2e\x63\x72\x6c\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x3a\x8f\xea\xb8\x04\xb9\x4c\xff\xbf\xd7\x00\x0b\x2b\x1a\x4b\x00\x38\xdb\xbb\xbe\x30\x19\x06\x09\x2a\x86\x48\x86\xf6\x7d\x07\x41\x00\x04\x0c\x30\x0a\x1b\x04\x56\x37\x2e\x31\x03\x02\x00\x81\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x11\x7c\x0e\x1f\x1e\x3c\x2b\xaa\xd0\x25\xb6\xc5\x0b\x67\x9c\xa0\x76\x76\xc8\xda\x9a\x45\x07\x5e\x7f\x8b\xb0\x14\x21\xc2\x3f\x09\xd9\x85\x20\xdf\xd7\xcc\xa7\x3b\xf9\x58\x5c\xc7\x1a\xa6\x34\x92\xa1\x00\x3b\x96\x77\x24\x72\xb7\x26\x1c\xdb\xac\xa7\x45\x96\x72\x4c\xdd\x7b\x6c\x8f\xea\xef\x78\xb9\xdc\xb3\x26\xfe\x91\x80\x99\x3e\x0e\xb0\xdb\x8e\xb6\xd1\xa2\x4a\xd1\xae\x7d\x61\x3d\x8f\xc7\xcd\x1b\x40\xb2\x40\x1b\x9c\xb9\xa3\x62\xd8\x15\x49\x23\xfa\xc3\x73\x90\xbb\x4e\x52\xef\x37\x30\xed\x24\xe2\x8b\x57\x1f\xe2\x54\x7a\xf8\x95\xd9\x97\x62\xcc\x13\x71\x74\x2d\xda\xc7\x46\x5d\x57\x3a\xd2\xdf\x22\xed\xcd\x18\xce\xf7\xea\x89\x89\x3d\x23\xe0\xe6\xdb\x65\x4c\xdd\x42\xad\xd4\x21\xee\x04\xd5\x01\xcf\x37\x1a\xe8\xf2\x83\xf8\x2f\xf5\x21\x73\x06\x2b\xa0\x53\xa9\x8d\x60\xbc\xbe\xf6\xe0\xae\xcb\xa4\x45\x70\x37\x03\x6e\x7f\x2d\x9d\x89\x30\x8e\xce\xb6\xba\xa7\x2b\xa1\xf0\x90\x05\xf5\x6b\xf1\x0b\x89\x5f\x62\xfb\x06\x0d\x2c\xce\x9d\x53\xee\x23\xbf\xa9\x3e\x5c\x7e\x7f\xc3\xe8\x45\x76\xfe\x61\xad\x02\xd1\x1c\x26\x2b\x80\xff\xc1\xab\x32", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-12.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1560, /* certificate_len */ (unsigned char *) "\x30\x82\x06\x14\x30\x82\x04\xfc\xa0\x03\x02\x01\x02\x02\x04\x4e\x39\x81\x01\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x31\x35\x30\x34\x31\x39\x31\x35\x31\x37\x34\x35\x5a\x17\x0d\x32\x35\x30\x34\x31\x39\x31\x35\x34\x37\x34\x35\x5a\x30\x81\x82\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x10\x30\x0e\x06\x03\x55\x04\x0b\x13\x07\x4f\x43\x49\x4f\x20\x43\x41\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xbc\x0a\x35\xaf\x1b\x80\x99\x91\x62\xaf\xbf\x0a\x09\x5b\x05\x18\x8d\x36\x42\x69\xd8\x0c\xd2\xe3\xe3\xa1\x15\x1a\x22\x2f\x62\x32\x6d\x97\xce\x28\x95\x5d\xb2\x51\xe2\x6f\xa0\xdf\xc4\x01\xd7\x2e\x6c\x44\xa2\xed\x6c\x50\x52\xf0\xaa\xf4\x78\xf9\x4e\xca\x18\xdf\x02\x72\x75\xd6\x33\xda\xa7\xe8\xf7\x0b\x69\x8c\xeb\xf9\x45\x15\x96\xf6\x37\xfd\x33\x3a\xe8\x04\x29\x2a\xfb\x21\x23\x09\x7b\x5c\x4c\xc9\xae\x86\xf1\x1b\xd9\x6d\x35\x02\x34\x2b\x5e\xea\x83\x27\x35\xba\xcc\xf9\xe9\xb3\xa6\x9b\xaf\xb6\x61\x5c\xca\x87\x7a\xb7\xcb\xec\xbd\x0d\x88\xdd\x9a\x28\xf8\xbf\x6e\x01\x68\xea\x8e\x22\x01\xfb\x59\xc8\x87\x36\x1c\x91\xd7\x49\x00\x2b\x5c\x72\x97\x31\xb1\xe7\x88\x7d\x6d\xf7\x0c\xee\x4e\x21\x36\xfd\x52\xa2\x15\xcf\xa2\xdd\xc5\xaa\xe7\xe7\x30\x16\x30\xa7\x9e\xd5\xbb\x5c\xfa\xdf\xd4\xcf\x3e\x37\x7a\xe0\xdd\x66\xca\x3a\xc2\xbd\x7e\x13\x72\x41\xd5\xd3\x2d\x18\x34\x80\x52\xa0\x9d\x78\x1a\xb3\x2f\x27\xbe\x9f\x0c\x3e\xbc\x82\x0f\xa2\xfb\xbb\xa1\xdb\x93\xfa\xd3\xf6\xd1\x9c\xba\x59\x08\x54\xcc\x32\x6d\xb4\xcd\xeb\x2a\xa3\x00\x99\x63\x77\x02\x03\x01\x00\x01\xa3\x82\x02\x82\x30\x82\x02\x7e\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x81\xa5\x06\x03\x55\x1d\x20\x04\x81\x9d\x30\x81\x9a\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x02\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x03\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x04\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x0d\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x11\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x27\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x24\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x28\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x29\x30\x40\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x34\x30\x32\x30\x30\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x24\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x75\x72\x79\x2e\x67\x6f\x76\x2f\x74\x6f\x63\x61\x5f\x61\x69\x61\x2e\x70\x37\x63\x30\x40\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x0b\x04\x34\x30\x32\x30\x30\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x24\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x75\x72\x79\x2e\x67\x6f\x76\x2f\x74\x6f\x63\x61\x5f\x73\x69\x61\x2e\x70\x37\x63\x30\x81\xee\x06\x03\x55\x1d\x1f\x04\x81\xe6\x30\x81\xe3\x30\x35\xa0\x33\xa0\x31\x86\x2f\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x75\x72\x79\x2e\x67\x6f\x76\x2f\x55\x53\x5f\x54\x72\x65\x61\x73\x75\x72\x79\x5f\x52\x6f\x6f\x74\x5f\x43\x41\x2e\x63\x72\x6c\x30\x81\xa9\xa0\x81\xa6\xa0\x81\xa3\xa4\x81\xa0\x30\x81\x9d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x13\x04\x43\x52\x4c\x31\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\xd7\xce\x28\x4c\xc8\x24\x6a\x56\x46\x5b\x75\x65\x8b\x67\xc4\xfa\xc8\xe0\x88\xa5\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x26\x18\x25\xc2\x66\xe2\x5f\xd2\xd8\x40\xc9\x65\xfd\xaf\x22\xee\x88\xc7\x72\x67\x00\xba\x5b\xfb\x1f\x5d\x1a\x58\xcd\xf4\x0a\xc2\x69\xaa\x32\x7a\x14\xe7\x99\x6c\x08\xb9\x45\x0a\x83\x63\x4b\xb0\xcd\xe9\x5a\x77\x15\xdb\x31\xa1\x18\x2c\x64\x6d\x23\xba\xed\x9f\x6f\x33\xb7\xd4\x69\x09\x8b\x2c\xe1\x00\x75\x51\xda\xae\x18\x52\xda\x28\xf0\x58\xbc\xea\xb1\xb4\x6c\xd5\x17\x9a\xd2\x41\xdc\x2f\x0b\x14\xe1\x47\xa7\xcd\xf0\xf7\x33\xca\x0a\xba\x44\x14\x4b\xb3\x3b\x40\x93\x4e\xb8\xc7\x9a\x93\x20\x8c\xe7\xe5\x1c\xe2\x81\x9c\xcc\xaf\x61\x2a\xb7\xc0\xd6\xdf\xab\x5a\xbf\x5d\x80\xa5\xbf\xfd\xcb\xd0\xbf\x25\xbd\xa1\xbc\xdb\xe2\x19\xa5\x02\x33\x1a\xba\x61\x20\x59\xae\xc3\x6e\x67\x31\xa5\x24\x4f\x73\x73\x45\x06\x88\x3d\xa6\x71\x45\x1c\xd7\x38\x5b\xe1\xba\x1f\x2f\xb9\x6c\xe8\xe1\x83\xf6\x84\xf3\x9f\x54\xed\x7c\x10\xc5\xc7\xd0\xce\xb7\xf5\x11\x0a\xb6\xa0\xcc\x22\x49\x65\x06\xe3\x4e\x1c\x3f\x11\x70\xcb\xbe\x08\x9f\xf1\x4b\x17\x54\xae\xb6\xb9\x29\xaa\x3a\x4c\xa2\x23\x6e\x2a\x3d\xfc\x98\x42\xaf\x95\xcb\xed\xe7\xb7\x6b\x4b\x63\x92\xdf\x69", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-13.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 2080, /* certificate_len */ (unsigned char *) "\x30\x82\x08\x1c\x30\x82\x07\x04\xa0\x03\x02\x01\x02\x02\x04\x4a\x61\xd1\x92\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x31\x30\x31\x31\x30\x37\x31\x34\x34\x36\x30\x38\x5a\x17\x0d\x32\x30\x31\x31\x30\x37\x31\x35\x31\x36\x30\x38\x5a\x30\x81\x82\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x10\x30\x0e\x06\x03\x55\x04\x0b\x13\x07\x4f\x43\x49\x4f\x20\x43\x41\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xb5\xad\x41\xa7\x7d\x1e\x93\xd8\x1f\x43\xd3\x6d\x06\xd6\x42\x55\x57\xb0\x91\x7a\x61\xf3\xe2\xdf\xe0\xbf\x5e\xb0\xa7\x1c\xbf\xff\xbf\x2a\x14\x25\x26\xf3\xb2\xc5\xda\xff\xd2\xb4\xb1\xd8\x7d\x77\x7d\xae\x3e\x15\x45\x82\x9f\x1d\x92\xc2\xa4\xf1\x32\x56\x1f\x83\xd0\x60\x68\x2c\x7c\xfc\x8a\xf7\x5b\x21\xa4\x66\x27\xd9\x83\x14\x49\xd3\x3b\xd5\xa0\x2c\x6b\x82\xfe\xad\x45\x40\x17\xaa\xdf\x44\xb3\x04\xcb\xba\x36\xcd\x29\x59\xbf\x48\x74\x08\xf5\x9b\xf5\x92\x5e\x36\x05\x2d\x7c\x73\x58\xd4\xe4\x0b\xe7\xd7\x41\x57\x0b\x98\x57\x4d\x26\x69\xf7\xe6\xcb\xc4\x7b\xf3\xe9\xec\x2d\xaa\x24\x82\x7b\xa7\x84\xd8\x4b\x11\x69\x3a\x46\x01\x3f\xa5\x5b\xa7\xad\x80\x29\x71\xae\x6a\x61\xa0\xf8\xb4\x50\x3b\x9f\x93\x0c\xca\xe6\x63\xac\x71\x78\xad\x71\x07\x0e\x03\xba\x73\xee\xef\xdb\x2d\xee\xe4\x3c\x3e\xbe\xf1\x7e\x5f\xb4\xad\x70\xc3\x04\x25\xd7\xfb\x92\x27\x66\x6f\x63\x1d\xc4\x78\xf2\x34\xc4\x32\x0b\x6d\xfd\x93\x18\xc7\x35\x03\x5f\x7f\xe6\x3b\xc6\xdc\x94\xf9\xa0\xbb\x78\x76\x37\xa0\x93\x50\x45\x13\x08\x2b\x8a\x28\x3a\x89\x69\xb3\x82\xdb\x28\xcd\x02\x03\x01\x00\x01\xa3\x82\x04\x8a\x30\x82\x04\x86\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x6b\x06\x03\x55\x1d\x20\x04\x64\x30\x62\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x02\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x03\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x04\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x0d\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x11\x30\x82\x01\x0f\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x82\x01\x01\x30\x81\xfe\x30\x2d\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x21\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x74\x6f\x63\x61\x5f\x61\x69\x61\x2e\x70\x37\x63\x30\x81\xcc\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\xbf\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x2c\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x81\xe2\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x0b\x04\x81\xd5\x30\x81\xd2\x30\x2d\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x21\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x74\x6f\x63\x61\x5f\x73\x69\x61\x2e\x70\x37\x63\x30\x81\xa0\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x81\x93\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x4f\x43\x49\x4f\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x30\x82\x01\xa1\x06\x03\x55\x1d\x1f\x04\x82\x01\x98\x30\x82\x01\x94\x30\x32\xa0\x30\xa0\x2e\x86\x2c\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x55\x53\x5f\x54\x72\x65\x61\x73\x75\x72\x79\x5f\x52\x6f\x6f\x74\x5f\x43\x41\x2e\x63\x72\x6c\x30\x82\x01\x5c\xa0\x82\x01\x58\xa0\x82\x01\x54\xa4\x81\xa0\x30\x81\x9d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x13\x04\x43\x52\x4c\x31\x86\x81\xae\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x63\x6e\x3d\x43\x52\x4c\x31\x2c\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x61\x75\x74\x68\x6f\x72\x69\x74\x79\x52\x65\x76\x6f\x63\x61\x74\x69\x6f\x6e\x4c\x69\x73\x74\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\xa2\x13\xa8\xe5\xc6\x07\x54\x6c\x24\x3d\x4e\xb7\x2b\x27\xa2\xa7\x71\x1a\xb5\xaf\x30\x19\x06\x09\x2a\x86\x48\x86\xf6\x7d\x07\x41\x00\x04\x0c\x30\x0a\x1b\x04\x56\x37\x2e\x31\x03\x02\x00\x81\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x49\x06\x90\x3e\xc9\x1d\x52\xfa\x8a\x40\x72\xcf\xb9\xd8\x95\xaf\xe3\x2f\x87\xd5\x6c\x9f\x7e\x83\xc3\x3c\x8e\xff\xf2\x64\x25\xce\xc9\x34\x51\x2e\x4b\x79\x0a\x87\xae\xba\xb6\x7e\xba\x42\x1e\x9d\x0b\xd9\xea\x07\xb2\xe5\x87\x28\xac\x85\xb9\x33\x06\x56\x00\x54\xb9\xa4\x3c\x4f\xe3\x3a\x23\xcd\xf0\xc0\x2a\x52\xe8\xa9\x76\xa9\x5b\x8a\x8f\x9a\x34\x35\x17\x75\x55\xbd\xa8\x1c\xed\x0c\xa0\x65\x51\x11\xba\x19\x4b\x28\x8f\x2c\x5d\x89\x8c\x8c\x13\x5c\xa3\xc2\x3e\x4a\x99\xe0\xb1\x51\xac\xd5\x27\xeb\x07\xc3\x35\x39\xe7\x61\xc0\x11\x03\x11\xcd\x8c\x99\x69\xa3\x9b\x3c\x67\x16\x04\x9e\xca\xf7\x98\x07\x35\xa9\x53\x26\x4e\x4b\x13\x89\x1f\x15\x29\x8e\x1c\xeb\xba\x32\xa1\x89\xfb\x7a\xa9\x1f\x4a\xcd\x01\x49\x33\xd2\x78\x74\xbc\x66\x82\xa7\x93\x45\xd4\x6c\x8e\xc7\xbb\xac\x13\x58\xf9\x66\x26\xea\xb4\x70\x97\x39\xa8\x28\xb4\xeb\x23\x1c\x4a\x0f\x82\x58\x15\xb2\xd5\x3c\x6f\x3e\x6f\x80\x80\x17\x31\xa3\x47\x6d\x28\x4a\x6f\x91\xf6\x5b\x52\x58\x6b\xee\x29\x69\x24\x04\xc0\xb7\x10\x05\x8f\x0b\xe1\xef\x31\x6d\x93\xdb\x4a\x1e\xa3\xc6\xd8\xb0\x79", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-14.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 2080, /* certificate_len */ (unsigned char *) "\x30\x82\x08\x1c\x30\x82\x07\x04\xa0\x03\x02\x01\x02\x02\x04\x4a\x61\xd1\x47\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x31\x30\x30\x39\x31\x32\x31\x34\x34\x36\x34\x31\x5a\x17\x0d\x32\x30\x30\x39\x31\x32\x31\x35\x31\x36\x34\x31\x5a\x30\x81\x82\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x10\x30\x0e\x06\x03\x55\x04\x0b\x13\x07\x4f\x43\x49\x4f\x20\x43\x41\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xbc\xd4\xb4\xaa\x6f\x35\xad\x67\x40\x1a\x0d\x12\xef\xfb\x63\xd5\xbd\xdc\xec\x67\x19\x4a\xd3\x93\x57\x07\x8f\xac\x18\xba\x9f\x94\xee\xde\x8f\x81\x44\x52\x14\x56\xdd\x34\x11\x08\xc2\x86\x77\x1e\x3b\x64\xea\x40\x03\xb8\xda\xd3\xfa\xea\x4c\xf2\xda\xdc\x6f\x3a\xba\x49\x2c\x5f\xe6\x78\xb6\x54\x24\xef\x7a\xce\x0c\xfe\xf7\xac\xce\x4f\xd7\xf9\xb4\x58\xa2\xee\xdc\xfa\xa2\xa5\x67\x74\x6e\x0f\xca\x1c\x02\xaa\x9f\x89\x47\x52\xd9\x41\x2f\x32\x74\x66\x2b\x99\x2c\xf7\x69\x91\xa7\x50\x1f\xcc\x2a\x0f\x3f\xaf\x7d\x14\xb4\xa0\x6a\xc0\xae\x70\x2d\x30\xd3\x4a\xc0\x41\x3f\xb0\x6a\xd8\x0d\xc8\x28\x54\xbb\x86\x84\x8e\x2c\x56\x3b\xc4\xe8\xa4\x22\xe3\x45\xe6\xb8\x36\x44\xa6\xe1\x53\xad\x58\xe4\xb3\x9d\xe7\x05\xc6\xf9\x20\xe3\x3e\x75\x8a\xed\x4b\x80\x2c\x2f\x05\x30\xa1\x4f\xdb\x9d\xc0\x76\xe8\x52\x8c\x75\xb0\xa9\xc0\x66\x8e\x5b\xc6\x89\x62\x64\x5c\xba\x50\x40\xb6\x40\x0c\x5e\xa0\x5f\xc3\x22\x4d\xf4\x94\x6a\x21\x1f\x79\xb1\xfa\xe3\xe7\xfb\x12\x14\xc3\x8c\x21\x5e\x4d\x10\x8b\x8e\xfc\x7b\x27\xe8\x1f\xc4\xa2\x09\x83\x78\xd8\xa8\x2f\x04\xff\x02\x03\x01\x00\x01\xa3\x82\x04\x8a\x30\x82\x04\x86\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x6b\x06\x03\x55\x1d\x20\x04\x64\x30\x62\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x02\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x03\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x04\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x0d\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x11\x30\x82\x01\x0f\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x82\x01\x01\x30\x81\xfe\x30\x2d\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x21\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x74\x6f\x63\x61\x5f\x61\x69\x61\x2e\x70\x37\x63\x30\x81\xcc\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\xbf\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x2c\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x81\xe2\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x0b\x04\x81\xd5\x30\x81\xd2\x30\x2d\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x21\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x74\x6f\x63\x61\x5f\x73\x69\x61\x2e\x70\x37\x63\x30\x81\xa0\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x81\x93\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x4f\x43\x49\x4f\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x30\x82\x01\xa1\x06\x03\x55\x1d\x1f\x04\x82\x01\x98\x30\x82\x01\x94\x30\x32\xa0\x30\xa0\x2e\x86\x2c\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x55\x53\x5f\x54\x72\x65\x61\x73\x75\x72\x79\x5f\x52\x6f\x6f\x74\x5f\x43\x41\x2e\x63\x72\x6c\x30\x82\x01\x5c\xa0\x82\x01\x58\xa0\x82\x01\x54\xa4\x81\xa0\x30\x81\x9d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x13\x04\x43\x52\x4c\x31\x86\x81\xae\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x63\x6e\x3d\x43\x52\x4c\x31\x2c\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x61\x75\x74\x68\x6f\x72\x69\x74\x79\x52\x65\x76\x6f\x63\x61\x74\x69\x6f\x6e\x4c\x69\x73\x74\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\xa6\xb2\x16\x2a\x4a\xaa\x2f\xe6\x2f\xd9\x11\x02\x51\x22\x7c\xe3\xb4\xd9\x33\xcc\x30\x19\x06\x09\x2a\x86\x48\x86\xf6\x7d\x07\x41\x00\x04\x0c\x30\x0a\x1b\x04\x56\x37\x2e\x31\x03\x02\x00\x81\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x8e\x73\xb5\x0c\x67\x4c\x1d\x0e\x27\xb8\xda\x9c\x4b\xaf\xbe\x13\xa3\x87\xb7\x85\xaa\xab\x39\x4d\xfc\x73\xfe\xca\xd9\xa0\xb1\xb3\xb4\x75\x4b\x15\x71\x73\xaf\xa4\x94\x3f\xaf\x6f\xaf\x05\x5e\x25\x65\x6a\xa4\x42\x07\xb8\x74\x12\xc2\xb3\x4c\x03\x46\x91\xb2\x9c\x42\xe2\x9b\x53\x4b\x08\xc1\x4c\x4d\x89\x7b\xf0\x90\x79\x49\x33\xd8\x40\x0e\x9b\x10\x7e\xf6\xad\x02\x6a\x21\xe9\xa9\x98\x67\x97\x8e\x7e\x6e\xba\x1c\x07\xe1\xa0\xff\xdd\x15\xe8\x5c\x95\x76\xbf\xfc\xbf\x2f\xf2\x32\x97\x22\x24\x04\x5f\x10\x4f\x9f\xe6\xac\x5f\x58\xaf\x67\xff\x92\x4c\xb5\xaf\x37\xf0\x0a\x4f\x11\x2e\x21\xb3\x53\x72\xa9\xc1\x6c\x91\x61\xe5\x98\x13\xec\x9e\xeb\x0f\x91\x36\xaa\x36\x7d\xd3\x51\x7a\x2d\x7e\xc0\xba\x77\xf1\x51\xde\x79\xdf\xde\xbb\x6c\x6a\x28\xde\xdd\x42\x7d\x28\x5e\x46\xf8\x79\x75\xa1\x40\x4a\x88\x4f\xec\x7e\xf2\x4d\x8b\xe1\x28\x7d\x00\xeb\x1f\x9c\x10\xf4\xdc\x35\xa7\x84\x5d\x27\x13\xa6\x8d\x8b\x79\x2b\x75\x7e\x8b\x2f\xe3\x92\xf3\x3f\x93\xe1\xca\x6a\x2e\x19\x9f\x92\xab\xe8\x69\x4d\x01\xbb\xe1\xa8\x67\x67\xee\x30\x53\x1e\x57\xd7\x34\xf2", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-15.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1563, /* certificate_len */ (unsigned char *) "\x30\x82\x06\x17\x30\x82\x04\xff\xa0\x03\x02\x01\x02\x02\x04\x4e\x39\x80\xef\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x31\x35\x30\x34\x31\x39\x31\x35\x30\x34\x32\x39\x5a\x17\x0d\x32\x35\x30\x34\x31\x39\x31\x35\x33\x34\x32\x39\x5a\x30\x76\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x53\x53\x41\x31\x3f\x30\x3d\x06\x03\x55\x04\x0b\x13\x36\x53\x6f\x63\x69\x61\x6c\x20\x53\x65\x63\x75\x72\x69\x74\x79\x20\x41\x64\x6d\x69\x6e\x69\x73\x74\x72\x61\x74\x69\x6f\x6e\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xd4\xe9\x6b\xb0\xc2\x37\xd5\x66\x8e\x3f\x01\x96\x44\x3d\x3d\x96\xe2\x42\x50\x4b\xc8\xf6\x2d\xef\x09\x75\x49\xda\xf7\xe4\x57\x39\x00\xf7\x06\x56\x3e\xe4\x7e\x93\xb1\x01\xca\x4e\x37\xbb\x5a\x5f\x30\x11\x0c\x5c\xd7\x8e\x8e\x16\x45\xc9\x67\x55\xce\xab\x5b\xe9\xa7\xed\x42\x7d\xac\xfe\x9e\x4c\x88\x09\x50\x48\xcd\xe6\x25\x23\x7e\xec\xf5\xc9\xfa\xc3\x70\xc0\xe3\x0a\x88\x9d\x14\x09\xa5\xe6\x71\x7c\x98\x69\xea\xfa\x81\x4f\x68\xac\x9e\xe9\xab\xe2\x17\xd8\x34\xa3\xc0\x36\x52\xd4\x0b\x96\xe3\x3a\xeb\xed\x41\xd7\xbd\x0e\x1a\x6b\x98\xfa\x11\x9d\xa5\x86\x40\x09\x50\xbd\xe2\x8d\x21\x43\xcb\x35\xb6\x78\xf7\xdb\x80\x8f\x4d\xd0\xcc\x5c\x57\x25\x72\x7f\xc4\xeb\x5f\x57\xd7\xd0\x65\x10\x95\x9d\x02\x51\x33\xce\x45\x62\x7a\x86\x62\xec\x90\x49\x25\x79\xa0\xcd\x82\x2e\xeb\xbd\xa0\x40\x77\xd5\xd8\x5d\x3a\x75\x75\xaf\xaf\xad\x91\x9f\x27\xf8\xd2\x7d\x29\xc3\x3a\x4d\x63\x5b\x2a\x62\xff\x34\xce\x88\x24\xe6\xd7\xcf\x9b\xed\xc8\x9c\x05\xf2\x8c\x54\xb3\xfd\x8d\xf4\x40\x89\x85\x08\xf4\x45\xbc\x0b\x0d\x75\x57\x54\xc9\x42\x54\x8c\x75\x66\xa5\xfb\x02\x03\x01\x00\x01\xa3\x82\x02\x92\x30\x82\x02\x8e\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x81\xb3\x06\x03\x55\x1d\x20\x04\x81\xab\x30\x81\xa8\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x06\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x0d\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x11\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x10\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x24\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x27\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x28\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x29\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x02\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x03\x30\x41\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x35\x30\x33\x30\x31\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x25\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x75\x72\x79\x2e\x67\x6f\x76\x2f\x73\x73\x61\x63\x61\x5f\x61\x69\x61\x2e\x70\x37\x63\x30\x41\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x0b\x04\x35\x30\x33\x30\x31\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x25\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x75\x72\x79\x2e\x67\x6f\x76\x2f\x73\x73\x61\x63\x61\x5f\x73\x69\x61\x2e\x70\x37\x63\x30\x81\xee\x06\x03\x55\x1d\x1f\x04\x81\xe6\x30\x81\xe3\x30\x35\xa0\x33\xa0\x31\x86\x2f\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x75\x72\x79\x2e\x67\x6f\x76\x2f\x55\x53\x5f\x54\x72\x65\x61\x73\x75\x72\x79\x5f\x52\x6f\x6f\x74\x5f\x43\x41\x2e\x63\x72\x6c\x30\x81\xa9\xa0\x81\xa6\xa0\x81\xa3\xa4\x81\xa0\x30\x81\x9d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x13\x04\x43\x52\x4c\x31\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x16\xcd\xd6\xce\x7f\xcf\x17\xf9\x7e\x21\x85\xf4\xb1\xe7\x2c\x33\xff\x10\x45\x09\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x3d\x80\x38\x7e\xcf\x5c\x5b\xb4\x35\xdc\x55\xac\x60\x97\x2e\x95\x23\x51\x05\x86\x08\xe2\x05\x39\xb0\x7a\x46\xe2\xf7\xeb\x97\xf2\x1c\x71\xde\x2d\x5c\x13\x69\x2d\xf3\x3c\x06\x6e\xb3\x78\x25\x6d\x15\x03\xa2\xc3\x25\x8f\x13\xa4\x6c\x91\x0a\x13\xf6\x87\xba\xf1\x20\x24\xe3\x1a\xd4\x22\x2d\xbc\xb7\x5f\xa7\xd5\x71\x0f\x40\x2f\xa0\x84\x5b\xa5\xa8\xf7\x64\x4e\x86\xd5\xf0\x40\x8c\xd9\x7e\x4d\xcb\x14\x5a\x5b\x29\x8c\x52\x60\x5c\xda\xf4\x02\x3c\xf4\xd6\x1f\x62\x28\x06\x0f\x19\x38\x3a\xe3\xee\x54\x34\xeb\x5d\x94\x17\x97\xb7\xc3\x69\xba\x6a\x10\xd1\xcc\xb0\x1d\xd7\xd0\xc2\x43\xc5\x5f\x09\x9a\xa4\xf7\xb0\x9d\x1e\x2c\x61\x5f\xff\x88\x84\x11\x90\xae\x8f\x90\x70\x93\x76\xf2\x75\xd9\xc9\x8a\x6c\x57\x76\x4e\x78\x4f\x17\x7e\xbc\x28\x35\xfb\x24\x4b\xcd\x4e\xb1\xc1\xea\x7e\x4a\x21\x66\x64\xc7\x7b\x92\x34\xaa\xde\x35\xf7\x63\x82\x36\xc6\x22\xe9\xca\x62\x20\x5f\x8a\xb0\xdb\xc7\xd7\x8c\x0d\x98\xab\xb2\x42\x6f\x49\x4d\x4c\x7b\xd9\xa2\xba\xb7\x0c\xdf\xec\x68\x91\x37\x2f\x5c\xa2\x02\xb9\x0f\x1a\xe8\x3c\x35\x05\x97\xc8\x58\x48\x70\x43\xfe", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-16.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 2107, /* certificate_len */ (unsigned char *) "\x30\x82\x08\x37\x30\x82\x07\x1f\xa0\x03\x02\x01\x02\x02\x04\x4a\x61\xd2\xba\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x31\x31\x30\x32\x31\x36\x32\x33\x32\x39\x35\x38\x5a\x17\x0d\x32\x31\x30\x32\x31\x36\x32\x33\x35\x39\x35\x38\x5a\x30\x76\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x53\x53\x41\x31\x3f\x30\x3d\x06\x03\x55\x04\x0b\x13\x36\x53\x6f\x63\x69\x61\x6c\x20\x53\x65\x63\x75\x72\x69\x74\x79\x20\x41\x64\x6d\x69\x6e\x69\x73\x74\x72\x61\x74\x69\x6f\x6e\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xc7\x37\x84\x00\x74\x72\xdd\x97\xb9\x6c\xeb\xc2\xbb\x16\x11\xeb\xff\xfe\xcd\xa3\xb3\x48\xb6\xbf\x8e\x7a\xd5\xf2\x74\xb3\x93\xa2\x1c\x12\x7c\xe3\xe7\xc0\x18\x9b\x99\x6d\x8d\xaa\x79\x64\x78\xfa\x2f\xf4\x41\x86\x4d\x66\x53\x57\x2f\xe9\x33\xef\x24\x41\x92\xc0\xdf\xc7\x99\x82\xc4\x25\x1b\x49\x50\xee\x1b\x2f\x09\x2d\x94\xb1\xa4\xb7\x0d\x05\xd8\xf3\x91\xa8\x13\x6a\x45\x70\x55\x70\x99\x4a\xc4\x18\x24\x47\x7d\x2f\xba\xf8\x5f\x50\x04\x22\x8a\x3d\x33\x84\xe6\x46\xd8\xe1\x15\xbd\x96\x66\x3b\x37\x80\x31\xaa\x2c\x96\x27\x74\xce\x53\x90\x72\x37\x28\xa3\xd0\xc7\xf9\x97\x35\xac\x0c\x6e\xc9\xbd\x0e\x71\x37\xa1\x41\x67\xc3\xb1\x5f\x66\xdc\x05\xeb\xfd\x56\x13\x44\x98\x19\x42\x62\xf5\x98\x87\x9f\x90\x3d\x7c\xf1\x16\x52\x95\x76\x1a\xbf\xac\xca\x3b\x64\xee\xa7\x01\x32\xf0\x2a\xe4\x10\xef\xea\x1f\x57\x27\xb5\xf9\x5b\xed\x10\x2e\xb1\xd2\x6a\xa2\xaf\xde\xc6\x35\x6e\x0a\x76\x49\xe0\x5f\x5d\xef\x8f\xac\x3d\xaf\x30\x6d\x09\xba\x39\x51\x45\xa2\xf7\x24\x4c\xf0\x15\x6d\x79\x8d\x61\x6c\x8d\x78\x15\xfb\xe6\xc8\xf0\x5c\xe0\xc9\x08\xf9\xd6\x97\x02\x03\x01\x00\x01\xa3\x82\x04\xb2\x30\x82\x04\xae\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x79\x06\x03\x55\x1d\x20\x04\x72\x30\x70\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x06\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x0d\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x11\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x10\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x03\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x02\x30\x82\x01\x10\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x82\x01\x02\x30\x81\xff\x30\x2e\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x73\x73\x61\x63\x61\x5f\x61\x69\x61\x2e\x70\x37\x63\x30\x81\xcc\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\xbf\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x2c\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x81\xfb\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x0b\x04\x81\xee\x30\x81\xeb\x30\x2e\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x73\x73\x61\x63\x61\x5f\x73\x69\x61\x2e\x70\x37\x63\x30\x81\xb8\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x81\xab\x6c\x64\x61\x70\x3a\x2f\x2f\x73\x73\x70\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x53\x6f\x63\x69\x61\x6c\x25\x32\x30\x53\x65\x63\x75\x72\x69\x74\x79\x25\x32\x30\x41\x64\x6d\x69\x6e\x69\x73\x74\x72\x61\x74\x69\x6f\x6e\x25\x32\x30\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x2c\x6f\x75\x3d\x53\x53\x41\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x2c\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x82\x01\xa1\x06\x03\x55\x1d\x1f\x04\x82\x01\x98\x30\x82\x01\x94\x30\x32\xa0\x30\xa0\x2e\x86\x2c\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x55\x53\x5f\x54\x72\x65\x61\x73\x75\x72\x79\x5f\x52\x6f\x6f\x74\x5f\x43\x41\x2e\x63\x72\x6c\x30\x82\x01\x5c\xa0\x82\x01\x58\xa0\x82\x01\x54\xa4\x81\xa0\x30\x81\x9d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x13\x04\x43\x52\x4c\x31\x86\x81\xae\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x63\x6e\x3d\x43\x52\x4c\x31\x2c\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x61\x75\x74\x68\x6f\x72\x69\x74\x79\x52\x65\x76\x6f\x63\x61\x74\x69\x6f\x6e\x4c\x69\x73\x74\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\xd6\x39\x77\x6d\x50\x77\x0e\x4c\xf0\x39\x42\xdc\x61\x68\x74\xab\x82\x9f\x55\x7f\x30\x19\x06\x09\x2a\x86\x48\x86\xf6\x7d\x07\x41\x00\x04\x0c\x30\x0a\x1b\x04\x56\x37\x2e\x31\x03\x02\x00\x81\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\xc0\x5c\x99\x28\x0c\x86\xac\x3f\x12\x75\xf9\x13\xe8\xd7\x21\x92\x7f\x0a\x7a\xd7\x9c\xf2\x2a\x14\x16\x14\xba\x80\x59\x75\xc8\xf9\xf4\xb7\x3e\x42\xa2\xcb\x79\xe3\x76\x63\x33\x4a\xf8\x22\x6f\xde\xdb\x6f\x82\x9b\xc0\xca\x70\xa7\xc0\x65\xa3\x37\x71\x79\x62\x55\x5d\x88\xf4\xe4\xb1\x5a\xfd\x2a\x73\xc0\x51\xb0\x0f\xde\xd0\x42\x0b\xbf\xc9\xd5\xda\x07\xbf\xae\x29\x81\xb5\x32\x67\xbc\x7b\x72\x02\x55\x45\x9d\x70\xba\x29\x8d\xa4\x06\x32\xe5\xe3\x26\x6f\x2f\xd8\x3e\x86\xd7\xc2\x8f\x67\x23\xbf\xaa\x02\xd9\xb0\x10\xa8\x02\x47\x72\x34\x27\xb7\x5f\x69\x6f\xfc\x0b\x25\xc5\xe5\x05\x98\xe5\x18\x89\xec\x97\xac\xbb\x97\xd2\x4d\x6f\x9e\xc0\x80\xe4\x95\x21\xbc\xbf\xc8\x79\x60\x73\x26\x71\x5e\xcc\x32\xe9\x07\x35\x2e\x18\xf1\x3e\xf8\x98\xfc\x4b\x0a\x7d\xd2\x73\xe3\x7e\xfe\xd0\xe2\x2c\x1a\x40\xff\x64\xf2\xe7\x85\x42\x6c\xce\x7c\x91\x2b\x13\xa4\xea\x89\xfc\xc1\xdd\x4c\x32\xdc\x34\x9b\x33\x89\xa9\x30\x6d\xee\xcd\xab\x74\x0f\x52\x25\x6b\xd8\x6e\x01\x26\xfe\x31\xb5\x10\x48\x10\x97\x84\x33\x34\x76\xb0\x63\x88\xe7\xd9\x74\x5b\x3f\x2b\xdb\x64", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-17.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 2037, /* certificate_len */ (unsigned char *) "\x30\x82\x07\xf1\x30\x82\x06\xd9\xa0\x03\x02\x01\x02\x02\x04\x45\xf9\x4a\xa3\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x30\x37\x30\x33\x31\x35\x31\x35\x33\x36\x35\x30\x5a\x17\x0d\x31\x37\x30\x33\x31\x35\x31\x36\x30\x36\x35\x30\x5a\x30\x76\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0c\x30\x0a\x06\x03\x55\x04\x0b\x13\x03\x53\x53\x41\x31\x3f\x30\x3d\x06\x03\x55\x04\x0b\x13\x36\x53\x6f\x63\x69\x61\x6c\x20\x53\x65\x63\x75\x72\x69\x74\x79\x20\x41\x64\x6d\x69\x6e\x69\x73\x74\x72\x61\x74\x69\x6f\x6e\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xef\x89\xe9\x98\x61\x93\x4e\x51\x16\xea\x49\x8b\x58\x2c\x6d\xa6\x52\x1d\xb9\xd5\x3a\x84\xbe\x8f\x63\x8a\x5b\x3e\x95\x0a\xbe\x78\x7c\xb1\x84\xb6\xa2\x9a\x8f\xb4\xdf\x5a\x82\xdc\xef\x33\x9d\xc3\xf9\xe5\xe3\x34\xc9\x0e\x8f\x43\xa4\xd2\xd2\xcd\xeb\xee\x92\xf5\x7e\x8c\x5d\x4d\x8e\x65\x23\x93\x5c\xb7\x05\x66\x3b\x63\xe5\x94\xa0\x34\xf1\xb0\x63\x5d\x0b\x4e\x40\xa4\xb2\xfa\xbb\x83\x57\x1a\x00\x2a\x83\xbf\xbd\x21\xed\xde\x9f\x23\x62\x8b\x43\xe1\x16\xbd\x74\xf2\x47\x38\x05\xec\xa0\x0d\xfc\xdd\xc1\xce\x6d\xd4\x05\xe0\xe7\xe7\x87\xcf\x14\x7f\x38\x24\xac\xe8\x0e\x1e\x9b\xda\xa2\x06\x73\x0a\x09\x0d\x26\x1d\xf1\xb7\x9d\x7e\xc2\xda\xe2\x1a\x31\x51\x6b\xe3\x9c\xcd\x8b\x5c\x21\xff\x6d\xac\x70\xef\x88\xde\x45\x37\x47\xd8\x0d\x48\x55\x64\x1e\x8e\xae\x06\xdb\x48\x65\x81\x8d\xf0\x82\xb3\xf1\x7c\x01\x46\x38\xbe\x4e\xda\x34\x87\xe2\xcd\xe1\x4c\x2e\xcd\x77\x1e\xc4\xe2\x71\x7b\x2c\x2b\xc8\xc2\x2d\x11\xb5\x86\x03\x9f\xa9\x2c\x85\xbe\x7b\x39\xb6\x3e\xf8\x0a\x49\x23\x67\xd3\x35\x86\x35\xef\x52\xd9\xc5\x82\xf6\xa3\x8c\xe2\x9b\x9b\xb6\xcb\x02\x03\x01\x00\x01\xa3\x82\x04\x6c\x30\x82\x04\x68\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x4f\x06\x03\x55\x1d\x20\x04\x48\x30\x46\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x06\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x0d\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x04\x30\x82\x01\x10\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x82\x01\x02\x30\x81\xff\x30\x2e\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x73\x73\x61\x63\x61\x5f\x61\x69\x61\x2e\x70\x37\x63\x30\x81\xcc\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\xbf\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x2c\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x81\xdf\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x0b\x04\x81\xd2\x30\x81\xcf\x30\x2e\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x73\x73\x61\x63\x61\x5f\x73\x69\x61\x2e\x70\x37\x63\x30\x81\x9c\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x81\x8f\x6c\x64\x61\x70\x3a\x2f\x2f\x73\x73\x70\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x53\x6f\x63\x69\x61\x6c\x25\x32\x30\x53\x65\x63\x75\x72\x69\x74\x79\x25\x32\x30\x41\x64\x6d\x69\x6e\x69\x73\x74\x72\x61\x74\x69\x6f\x6e\x25\x32\x30\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x79\x2c\x6f\x75\x3d\x53\x53\x41\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x30\x82\x01\xa1\x06\x03\x55\x1d\x1f\x04\x82\x01\x98\x30\x82\x01\x94\x30\x82\x01\x5c\xa0\x82\x01\x58\xa0\x82\x01\x54\xa4\x81\xa0\x30\x81\x9d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x13\x04\x43\x52\x4c\x31\x86\x81\xae\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x63\x6e\x3d\x43\x52\x4c\x31\x2c\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x61\x75\x74\x68\x6f\x72\x69\x74\x79\x52\x65\x76\x6f\x63\x61\x74\x69\x6f\x6e\x4c\x69\x73\x74\x30\x32\xa0\x30\xa0\x2e\x86\x2c\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x55\x53\x5f\x54\x72\x65\x61\x73\x75\x72\x79\x5f\x52\x6f\x6f\x74\x5f\x43\x41\x2e\x63\x72\x6c\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x62\xa9\xb6\x98\x7c\x3e\x1c\x7d\xea\xb4\x82\x70\x62\x6c\xc6\x85\xfc\x79\x92\x43\x30\x19\x06\x09\x2a\x86\x48\x86\xf6\x7d\x07\x41\x00\x04\x0c\x30\x0a\x1b\x04\x56\x37\x2e\x31\x03\x02\x00\x81\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\xbb\x55\xd4\xad\x10\x70\xba\xdb\x15\x4d\xf6\x73\x9e\x1b\x5a\xd5\x4b\xcd\x5e\xaf\x71\x31\xf7\xc4\x5e\x07\x5b\x3c\x0e\x7a\x21\x53\x04\x38\x77\xc4\x3e\xbd\x77\xca\x8a\x4b\x14\x38\xce\xe3\x6f\x90\x59\xf1\x49\xe1\x15\xd1\xd6\x28\x73\xe3\xb5\xb1\x92\xae\x7e\x79\x3c\x18\x2f\x11\xc9\x05\x37\x06\xba\x3e\x57\x61\xf6\x16\xf4\x98\x95\x61\x02\x20\x9f\xbf\x82\xef\x26\x56\x51\x1b\x18\x8b\x36\x87\x53\x7c\x57\x9c\xd6\xf5\x92\xbf\x2a\x91\xa5\x3e\xfc\xb0\xf9\x62\x92\xe4\x53\x70\xbe\xb6\xad\x6f\xa7\xea\x5d\x01\x7a\x1c\x48\xd5\x57\x58\x2d\xc6\x5c\x89\xf8\x4b\xb2\x65\x09\xcf\x11\xee\xae\xa6\x25\xca\xfb\x03\x17\x4c\xcc\xeb\xef\x1c\x0a\x99\x1a\xed\x2e\x2c\x87\x03\xa9\xe7\x5b\xb6\x57\xb8\x29\x85\xf9\xed\x70\x3a\xca\x17\xae\xbb\xfb\xb1\xf3\x8a\x11\xaf\x06\x76\xfe\xf4\x19\x22\x60\x61\xa6\x6b\x49\x50\xc9\x6d\x7e\x65\x9a\xa2\x9f\xb6\x29\x24\x0f\x79\x3f\x03\xff\xfe\xdb\x5e\xfc\x07\x87\x9f\xe6\x97\x00\x67\xa0\xc6\x01\xf8\x99\xed\x94\x14\xd9\xfa\xff\xe3\xd3\x4d\x72\xb3\x0d\x24\x97\xbd\x45\x7b\xb2\x7b\x0b\x95\x7e\xfc\x92\x80\xab\xf0\x10\xf2", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-18.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1837, /* certificate_len */ (unsigned char *) "\x30\x82\x07\x29\x30\x82\x06\x11\xa0\x03\x02\x01\x02\x02\x04\x4a\x61\xd1\xdb\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x31\x30\x31\x32\x30\x35\x31\x38\x35\x32\x33\x36\x5a\x17\x0d\x32\x30\x31\x32\x30\x35\x31\x39\x32\x32\x33\x36\x5a\x30\x81\x90\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1e\x30\x1c\x06\x03\x55\x04\x0b\x13\x15\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x50\x75\x62\x6c\x69\x63\x20\x43\x41\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xed\x73\xbc\xd7\xa6\x16\x18\x42\xbd\x50\xcc\x92\x3e\x44\xf0\x98\x54\xcd\x0e\x64\xca\xd5\x56\xd2\x48\x91\x1f\xa6\x2e\x19\x8b\x15\x5b\x00\x23\xf5\x53\x6e\x8f\x7a\xf7\xa4\xf7\x1e\xe0\xcf\x08\xcf\x4e\x76\xcc\xb6\x42\x44\x12\x55\x83\x5c\xdd\x72\x82\x42\xae\x56\x96\xe2\x01\x93\x91\x5e\x1d\xc7\x4f\xa8\x0c\xff\x93\x9b\x0e\xae\x1f\x4a\x88\xcf\xd6\x59\xb8\x97\xa8\x7a\x4a\x1a\x3f\x72\xce\x8d\xaf\xc8\x41\x5e\x44\x38\xf7\xa9\xa7\x33\xec\x5a\x1b\x23\xf3\xf9\x99\x3b\x8a\x25\x69\x9a\xe1\x32\xdc\xcf\xb9\x52\x57\xef\xed\xc7\x50\xd9\xe5\xe0\x85\xe3\x12\x3d\x2c\x88\x7c\x6a\xb3\xa5\x46\x0c\x19\x4b\xc5\xf4\xc9\x46\x64\xd2\x17\xe4\xca\x22\x8e\xc0\xcf\xf3\x0c\xf9\x63\x21\x67\xd5\x68\xe2\xe7\x3a\x31\x6b\x39\xd4\x52\x55\x79\xb9\xb6\xbd\xa9\x4b\xa0\xbd\x37\x01\x57\x51\x76\x64\xc0\xeb\xf4\xc9\xc3\x50\xc0\x0c\xb9\xf6\x92\x74\x87\x0c\x7c\xcf\xdb\x11\xbd\x36\xb4\xc9\xb1\x7d\x32\x63\x10\xec\x18\xf0\x0e\xf7\x4a\x72\xfc\x78\xf7\xe9\xfb\xfa\x76\x96\xde\xb9\x21\x98\xba\x86\x75\xdb\x21\x43\xb4\x97\x06\xdd\x7c\x89\xb9\xfe\xe3\x5e\xc0\x1f\xa2\x8b\x02\x03\x01\x00\x01\xa3\x82\x03\x89\x30\x82\x03\x85\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x4f\x06\x03\x55\x1d\x20\x04\x48\x30\x46\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x04\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x03\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x02\x30\x82\x01\x0f\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x82\x01\x01\x30\x81\xfe\x30\x2d\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x21\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x74\x65\x63\x61\x5f\x61\x69\x61\x2e\x70\x37\x63\x30\x81\xcc\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\xbf\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x2c\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x82\x01\xa1\x06\x03\x55\x1d\x1f\x04\x82\x01\x98\x30\x82\x01\x94\x30\x32\xa0\x30\xa0\x2e\x86\x2c\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x55\x53\x5f\x54\x72\x65\x61\x73\x75\x72\x79\x5f\x52\x6f\x6f\x74\x5f\x43\x41\x2e\x63\x72\x6c\x30\x82\x01\x5c\xa0\x82\x01\x58\xa0\x82\x01\x54\xa4\x81\xa0\x30\x81\x9d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x13\x04\x43\x52\x4c\x31\x86\x81\xae\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x63\x6e\x3d\x43\x52\x4c\x31\x2c\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x61\x75\x74\x68\x6f\x72\x69\x74\x79\x52\x65\x76\x6f\x63\x61\x74\x69\x6f\x6e\x4c\x69\x73\x74\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x1f\x50\x6b\xfb\x74\xaa\x5a\xd3\x3b\xcb\x13\x64\x70\xae\x52\x73\xc2\x85\x49\xa8\x30\x19\x06\x09\x2a\x86\x48\x86\xf6\x7d\x07\x41\x00\x04\x0c\x30\x0a\x1b\x04\x56\x37\x2e\x31\x03\x02\x00\x81\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x64\x00\x91\x7b\xf4\xa7\x96\xda\xe3\x06\x8a\x27\x7b\xd8\xae\x29\xad\x51\xb9\xa8\x84\x64\x8a\x73\x9b\xbf\xa9\xed\xd6\x04\x67\x61\x77\x4b\x5d\xd1\xf7\x0d\xe3\x0d\x66\x87\x3b\x61\x2e\x6a\x78\x3f\x4f\x52\x3e\xa0\xef\xcf\xc6\x6d\x37\x75\x4f\xa0\xd0\x89\x44\x9d\xab\x0c\xdd\x69\x22\x59\xe0\xc4\x4f\xc4\x67\x4d\x25\xe8\x9d\xc4\x5c\xd2\x04\xac\x71\x37\xe5\x2c\x8e\x1d\x1e\x06\x9a\xde\xdd\x69\xad\x77\xac\x26\x5a\x5c\xe9\xe3\x64\x81\x3c\x50\x76\x2b\x44\xc0\x35\x34\x12\x23\x8b\xc8\x29\xe4\x2e\xbd\x4c\x37\x85\xc1\x0e\x93\xd9\x5c\xca\x8d\x4e\x9b\xd3\x10\x32\xa9\xce\x23\x72\x21\xf0\xc9\x50\x88\xfc\x5e\x1e\x36\x36\x4e\x05\x9a\x35\xed\xa2\x4d\xf0\x9e\xd5\x02\xe5\x41\xb9\xe5\x21\x17\xe6\x1f\x3b\x9d\xb8\x71\xc2\xb0\x3e\x40\x89\x2d\x1c\x6b\x1f\x33\x14\xff\x50\xe9\x96\xe0\x85\x1f\x08\x02\x48\xa9\xb9\x7c\xc2\x10\x7c\x47\x4a\x2d\x21\x68\x0d\xb8\x3a\x8f\xf2\x52\xfa\xed\x71\x40\x6d\x91\x91\x5e\xb8\xfe\x04\x4c\x7f\xb3\xbf\x32\x68\x11\xff\x16\xc4\xa4\x2a\x93\xc4\x65\x09\xc2\x54\x56\x36\xf7\x88\x95\x3e\xd1\x58\x6f\x70\x48\x7e\x25\x06\xb7", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-2.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 2124, /* certificate_len */ (unsigned char *) "\x30\x82\x08\x48\x30\x82\x07\x30\xa0\x03\x02\x01\x02\x02\x04\x4a\x61\xd2\x93\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x31\x31\x30\x31\x32\x31\x31\x39\x31\x31\x32\x38\x5a\x17\x0d\x32\x31\x30\x31\x32\x31\x31\x39\x34\x31\x32\x38\x5a\x30\x81\x87\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x28\x30\x26\x06\x03\x55\x04\x0b\x13\x1f\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x48\x6f\x6d\x65\x6c\x61\x6e\x64\x20\x53\x65\x63\x75\x72\x69\x74\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x10\x30\x0e\x06\x03\x55\x04\x0b\x13\x07\x44\x48\x53\x20\x43\x41\x34\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xbf\x72\xa1\x68\xd6\x23\x5c\x22\xfa\x67\x30\x89\x2b\x19\x13\x40\x80\xf8\x1c\x46\xcc\x6b\xff\xb5\x70\xe0\x0e\x0c\x45\x9f\xd2\xec\x42\x69\x2c\x93\x36\x45\x57\x35\xe4\x41\xab\x58\xdb\x6d\xdc\x72\x6d\xe7\x8c\xd5\x0b\x54\xdc\xf8\x6b\xd8\x18\xac\x11\xe5\x8c\x5b\x82\x91\x74\xd7\xc6\x43\x90\x20\xc1\xf7\x5f\x87\xdc\x6c\x88\x1e\xd7\xfd\x77\xde\x73\x1b\x13\x55\x36\xde\xfb\xd0\x86\xb1\x34\xa8\xcb\x88\xbd\xc3\x83\x11\x3c\x54\xfc\xd3\xec\x0f\x32\xe0\x07\x12\xd5\xb1\x04\x35\x76\xbd\xd9\xe8\x3f\x97\xb1\x61\xc7\x01\xe5\x1b\x66\x00\x94\x99\x18\xba\x45\xbe\x47\xa5\xa3\x18\x75\xae\x89\x46\xed\xd4\xb4\xbf\x6f\xd6\xc0\x88\xdf\xf5\x37\x31\x7c\xfc\xa9\x01\x29\x43\x05\x5e\xc2\xb8\xfa\xd0\xe3\xe5\x7e\xab\xb0\x98\x57\x03\x36\x06\xa0\xb8\xe6\xe3\xac\xe0\xe9\x10\x02\x29\xb6\x6a\x62\xcf\x2e\xe2\x5e\x5e\x8c\x85\xf1\x4f\x93\xfc\x67\x23\xa8\x78\x80\xf4\x12\x36\x66\x41\x2d\x46\x1e\x9b\xd5\xf4\xba\xf4\xec\xba\x06\x87\xda\xa0\x83\xa6\xcf\xf8\xef\xf7\x46\x84\x25\x15\xc8\xd5\xa3\xd3\xeb\x2e\x99\xc3\x0e\xec\x6f\x2d\x72\x3e\xea\x21\x73\x7d\x12\x39\x02\x03\x01\x00\x01\xa3\x82\x04\xb1\x30\x82\x04\xad\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x6b\x06\x03\x55\x1d\x20\x04\x64\x30\x62\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x06\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x0d\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x11\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x10\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x0f\x08\x30\x82\x01\x10\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x82\x01\x02\x30\x81\xff\x30\x2e\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x64\x68\x73\x63\x61\x5f\x61\x69\x61\x2e\x70\x37\x63\x30\x81\xcc\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\xbf\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x2c\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x82\x01\x07\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x0b\x04\x81\xfa\x30\x81\xf7\x30\x2e\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x64\x68\x73\x63\x61\x5f\x73\x69\x61\x2e\x70\x37\x63\x30\x81\xc4\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x81\xb7\x6c\x64\x61\x70\x3a\x2f\x2f\x73\x73\x70\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x44\x48\x53\x25\x32\x30\x43\x41\x34\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x48\x6f\x6d\x65\x6c\x61\x6e\x64\x25\x32\x30\x53\x65\x63\x75\x72\x69\x74\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x2c\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x82\x01\xa1\x06\x03\x55\x1d\x1f\x04\x82\x01\x98\x30\x82\x01\x94\x30\x32\xa0\x30\xa0\x2e\x86\x2c\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x55\x53\x5f\x54\x72\x65\x61\x73\x75\x72\x79\x5f\x52\x6f\x6f\x74\x5f\x43\x41\x2e\x63\x72\x6c\x30\x82\x01\x5c\xa0\x82\x01\x58\xa0\x82\x01\x54\xa4\x81\xa0\x30\x81\x9d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x13\x04\x43\x52\x4c\x31\x86\x81\xae\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x63\x6e\x3d\x43\x52\x4c\x31\x2c\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x61\x75\x74\x68\x6f\x72\x69\x74\x79\x52\x65\x76\x6f\x63\x61\x74\x69\x6f\x6e\x4c\x69\x73\x74\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\xf1\x24\x31\x36\x58\xc3\x8c\x3b\xd5\xe9\xe7\xc5\xf6\x13\x32\x26\x9d\xab\xd3\xa9\x30\x19\x06\x09\x2a\x86\x48\x86\xf6\x7d\x07\x41\x00\x04\x0c\x30\x0a\x1b\x04\x56\x37\x2e\x31\x03\x02\x00\x81\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x28\x60\x9f\xea\x54\x4b\xb8\x09\x39\xf4\x38\xa3\x08\x71\xaf\xd0\xfe\x58\xc8\x0b\x04\x66\x5a\xa9\x00\xac\x7f\x28\x48\x06\x56\x09\x12\xc2\x6d\x2d\x6f\x9f\xe7\xe8\x6f\x3c\xb0\xa2\xc0\x42\x4f\x92\x48\x72\xa0\x7f\x18\xb0\x5f\x69\xd9\x8d\x97\xed\x42\xbf\x9d\x8e\xd6\x21\xf8\x7a\xa4\x68\x75\x70\xa6\x6c\x21\x77\x9a\xa4\x27\x8f\x1d\x52\xe0\x93\x4c\xaa\xc4\xdc\xb3\xef\xa6\x12\xd8\xf7\xe8\x58\xfb\x5d\x93\xca\xb5\x6f\x7f\x04\xe5\xc4\xb0\x1c\x9b\x8b\xa2\xef\x4f\xc1\x3c\xa9\x27\x9c\x15\x78\xab\xb8\xa1\x5e\x28\x62\xec\xd6\x88\x4e\x8e\x91\xb7\x19\x73\xab\xb9\xf7\x05\x3f\xd7\xa0\x99\x57\x37\xc8\x0b\x4d\xda\x24\xb3\x2c\x89\xc8\x42\x0e\x20\xa8\x28\x62\xe7\xbd\x0e\xa3\xcd\x88\x0a\x92\xa4\x2b\xab\xf1\x7f\x3c\xe3\x70\xe5\xc5\xcc\x19\x46\xf6\xae\xea\xbf\xdf\xb6\xa1\x19\x67\x3e\x12\x93\xda\xdb\x4d\x67\x7f\x11\x5f\xf6\x0d\x7c\xd9\x25\xa6\x1d\xb3\x15\x17\xe4\x1f\xff\x17\x84\xb6\xad\x74\x3c\x7b\x8b\x3e\x1a\xe0\xa1\x84\xc7\x4c\xad\x74\xfc\xa7\xbc\x65\x02\x8b\x85\x0a\x78\xd2\x94\xe0\x2a\x47\x8b\x29\x89\x53\x3b\x66\xe8\x79\x4f\x03\x3d\x20", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-20.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 2180, /* certificate_len */ (unsigned char *) "\x30\x82\x08\x80\x30\x82\x07\x68\xa0\x03\x02\x01\x02\x02\x04\x4e\x39\x7f\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x31\x32\x30\x38\x32\x38\x31\x33\x34\x37\x31\x37\x5a\x17\x0d\x32\x32\x30\x38\x32\x38\x31\x34\x31\x37\x31\x37\x5a\x30\x81\xa0\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x27\x30\x25\x06\x03\x55\x04\x0b\x13\x1e\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x56\x65\x74\x65\x72\x61\x6e\x73\x20\x41\x66\x66\x61\x69\x72\x73\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x2a\x30\x28\x06\x03\x55\x04\x0b\x13\x21\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x56\x65\x74\x65\x72\x61\x6e\x73\x20\x41\x66\x66\x61\x69\x72\x73\x20\x43\x41\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xd8\x90\x98\x68\x8c\xc8\xb0\xfe\x8a\x5e\x41\x0b\x99\x12\xae\x4e\xbf\xfb\xc8\x8b\x5b\x88\xa4\xd3\x4a\xc0\xa3\x06\x9b\x9d\xfc\x0c\x22\x0b\x69\x7f\xc7\xb5\x9b\x74\x60\x2e\xf1\x33\xd4\x3b\x01\xf5\x84\x47\xce\xc2\xa3\x40\xf5\x67\x63\xba\xa9\x95\xe1\x24\xcd\x15\x9a\x99\x2e\xd3\x94\x53\x65\x34\x34\xcf\x7b\x1e\x18\x6b\x1f\x35\x4b\xd3\x51\x6b\x6f\x24\x63\x16\x38\x54\x12\x9b\x1e\x52\x4e\x2b\x02\xad\x09\x32\xf7\xdb\x7d\x5e\x70\xa1\x25\xd8\xf8\xb2\x02\xa9\x1a\xa8\xda\x0d\xcf\xcd\xe7\x9b\xbc\xe5\xb9\xe0\x72\x24\xdd\xfa\x91\xfb\x99\x6f\xad\x5f\x64\x44\xc2\x0b\xc1\x40\x05\x6c\xaa\x80\x13\x79\x05\x3b\xdd\x2a\x48\x7b\xca\xbc\x16\x16\x9f\x5c\xc3\x7a\xf5\x38\xe2\x2b\x44\x5a\x52\x95\x0b\x46\x9c\x6f\x2c\x2d\xfc\x54\xe3\x6f\x29\x95\x62\x59\xf3\xd5\x65\xfa\x08\x98\x60\xb4\xdd\xdd\xaf\xc9\x52\xc9\x63\x2c\x82\x36\x99\x6a\x75\xf3\xd2\x30\x38\xe5\xbd\x82\x3c\x8e\x3f\xa1\xf3\xdf\x6c\x0e\x37\xd3\xd6\xe3\x8c\x4c\x9c\x4e\x29\x1f\x8c\x15\x2b\x14\x6e\x83\xf6\xf0\xa4\x69\x28\xc6\x3c\x29\x24\xb8\x39\xc5\x76\x07\xd6\x44\xcc\xf3\xdc\x59\x93\x3f\x02\x03\x01\x00\x01\xa3\x82\x04\xd0\x30\x82\x04\xcc\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x6b\x06\x03\x55\x1d\x20\x04\x64\x30\x62\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x06\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x0d\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x10\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x11\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x24\x30\x82\x01\x0f\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x82\x01\x01\x30\x81\xfe\x30\x2d\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x21\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x76\x61\x63\x61\x5f\x61\x69\x61\x2e\x70\x37\x63\x30\x81\xcc\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\xbf\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x2c\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x82\x01\x27\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x0b\x04\x82\x01\x19\x30\x82\x01\x15\x30\x2d\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x21\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x76\x61\x63\x61\x5f\x73\x69\x61\x2e\x70\x37\x63\x30\x81\xe3\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x81\xd6\x6c\x64\x61\x70\x3a\x2f\x2f\x73\x73\x70\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x56\x65\x74\x65\x72\x61\x6e\x73\x25\x32\x30\x41\x66\x66\x61\x69\x72\x73\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x56\x65\x74\x65\x72\x61\x6e\x73\x25\x32\x30\x41\x66\x66\x61\x69\x72\x73\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x2c\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x82\x01\xa1\x06\x03\x55\x1d\x1f\x04\x82\x01\x98\x30\x82\x01\x94\x30\x32\xa0\x30\xa0\x2e\x86\x2c\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x55\x53\x5f\x54\x72\x65\x61\x73\x75\x72\x79\x5f\x52\x6f\x6f\x74\x5f\x43\x41\x2e\x63\x72\x6c\x30\x82\x01\x5c\xa0\x82\x01\x58\xa0\x82\x01\x54\xa4\x81\xa0\x30\x81\x9d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x13\x04\x43\x52\x4c\x31\x86\x81\xae\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x63\x6e\x3d\x43\x52\x4c\x31\x2c\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x61\x75\x74\x68\x6f\x72\x69\x74\x79\x52\x65\x76\x6f\x63\x61\x74\x69\x6f\x6e\x4c\x69\x73\x74\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\xcf\x79\x3c\xed\x4d\xbc\x19\x25\xf2\x45\x69\x4e\x12\x2f\x9c\x29\x53\xc9\xa7\x46\x30\x19\x06\x09\x2a\x86\x48\x86\xf6\x7d\x07\x41\x00\x04\x0c\x30\x0a\x1b\x04\x56\x37\x2e\x31\x03\x02\x00\x81\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x2a\xb4\xdd\x63\x57\x34\xb1\x84\x3a\x8a\xdb\x03\xa5\xd7\x32\x44\x6a\xea\x7e\x17\x96\x3e\x16\x72\x52\x99\x2a\xc8\x41\x6a\xca\x1a\xed\xe0\x73\xe9\xbb\x87\x72\x20\x08\x15\xb2\x28\x8a\x76\xf6\x2e\x4a\x8a\x04\x22\x7e\xa1\x6d\x97\xf5\xb8\xff\xef\xea\xc7\x98\x4b\xfe\x2f\x0c\x34\x92\x42\xd6\xe2\x94\xba\xc7\xa9\x1f\x3b\xc5\x8e\xe6\x1f\x25\xd5\x23\xaf\xc3\x5e\x91\x69\x99\x1c\xd6\x36\xba\xc5\xf1\xc0\x75\x94\x41\xce\x7f\x25\x69\xdc\xce\x46\xc7\x81\x47\xd2\x08\x73\x22\x0d\x54\xbe\xe2\x8e\xcd\xc0\x1d\x95\x1a\x3b\x23\x1d\xf1\xd7\xe7\xcc\x52\xd3\xe5\x56\xaf\x2a\xf8\xc7\xf6\x19\x71\xf2\x1c\xdf\xdb\x25\xe3\x4b\x32\xc5\x97\x8d\xc5\x4f\x06\xe8\xef\x4a\xc0\x7b\xbb\xe5\x54\xf1\x9a\x9a\xed\x5c\xaa\x83\x30\x73\x8f\x7c\x88\x53\xdd\xbd\x10\xa0\x4e\xdc\x5f\xd3\xc6\x54\x39\x7e\x62\x80\x16\x11\x15\x16\x3e\x96\x23\x8c\x35\x0c\x52\xf6\x50\xdf\x11\x9d\xfc\x09\x42\x6b\x9d\xd7\x6d\xf5\xb2\xf2\xab\xb4\x74\xbf\x70\xd9\x8d\x89\xb0\x0e\x59\xc9\x85\xce\xf3\xb0\xc9\x03\xb8\x9b\x7a\xf6\xca\xff\x81\xa7\xe1\x65\xe3\x0d\x7d\x50\xef\xca\x82\xfe\x5b\x28", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-3.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1801, /* certificate_len */ (unsigned char *) "\x30\x82\x07\x05\x30\x82\x05\xed\xa0\x03\x02\x01\x02\x02\x04\x46\xea\xcd\xa1\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x30\x38\x30\x33\x31\x33\x31\x34\x35\x33\x33\x32\x5a\x17\x0d\x31\x38\x30\x33\x31\x33\x31\x35\x32\x33\x33\x32\x5a\x30\x81\x87\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x28\x30\x26\x06\x03\x55\x04\x0b\x13\x1f\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x48\x6f\x6d\x65\x6c\x61\x6e\x64\x20\x53\x65\x63\x75\x72\x69\x74\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x10\x30\x0e\x06\x03\x55\x04\x0b\x13\x07\x44\x48\x53\x20\x43\x41\x34\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\x9d\x67\xf1\xcf\x3f\x33\x08\x3e\x80\xf1\x17\xa3\x6c\xa1\x8e\x74\x7b\x49\x0e\x50\x34\x90\x96\xe7\xb2\x0f\xef\x5b\x02\x56\xdb\x13\xf3\x61\x59\xcb\x84\x83\x08\x73\x68\x5a\xd9\xd6\x6c\x46\xf1\x7e\x32\x0d\x59\xe4\x47\x64\x0a\xa2\xfa\x17\xdb\x66\x0d\x60\x10\x82\xb6\x1b\xcc\x0f\x2a\xb2\x7d\xa5\xc7\xa1\x47\x06\x94\xf7\xd9\x43\x5d\xd6\x1c\x1a\x9f\xd3\xd3\x0c\x38\x92\xaf\xb4\xd7\x6e\x44\x52\xfe\xec\x22\x0e\xb2\xb4\x5f\x64\x87\x58\xc0\xa2\xbe\x34\x8c\x2f\x1f\xfb\x59\x21\x47\x72\x32\x2e\xb4\x1a\x78\x2d\x00\x82\x33\xf7\x70\x84\xfd\x4e\x1d\x01\xfb\xd7\xf0\x77\xe7\xce\x3b\x32\x46\x59\xd1\x82\x40\x5e\xd8\x78\xaf\xbf\x43\xc5\x65\xa7\xf5\x14\xe4\xce\x8d\x11\x22\x1b\xe6\xb4\x5e\xfa\x77\xf7\x5e\x12\xba\xdb\x9d\x0d\xc1\xc9\x64\x98\xbf\x71\x02\xad\xc2\x26\x34\xbb\x7b\x0e\xd1\x25\x76\xad\xe1\x04\xac\x49\xee\xdd\xf1\xd5\x66\xad\x68\x26\x89\x92\x69\x0c\xb6\x38\x17\x71\x8b\x7c\xc7\x1a\xc3\x4a\xa1\xfd\x09\x3c\x97\x55\x98\xdd\x65\xd2\xec\x1b\xf6\xbf\xc9\x9a\x39\xb6\xce\xa5\x8d\xa2\x48\x35\x36\xf8\x51\xf5\x20\x02\x5b\x44\x37\x7d\xb5\x07\x02\x03\x01\x00\x01\xa3\x82\x03\x6e\x30\x82\x03\x6a\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x33\x06\x03\x55\x1d\x20\x04\x2c\x30\x2a\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x03\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x04\x30\x82\x01\x10\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x82\x01\x02\x30\x81\xff\x30\x2e\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x64\x68\x73\x63\x61\x5f\x61\x69\x61\x2e\x70\x37\x63\x30\x81\xcc\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\xbf\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x2c\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x82\x01\xa1\x06\x03\x55\x1d\x1f\x04\x82\x01\x98\x30\x82\x01\x94\x30\x82\x01\x5c\xa0\x82\x01\x58\xa0\x82\x01\x54\xa4\x81\xa0\x30\x81\x9d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x13\x04\x43\x52\x4c\x31\x86\x81\xae\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x63\x6e\x3d\x43\x52\x4c\x31\x2c\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x61\x75\x74\x68\x6f\x72\x69\x74\x79\x52\x65\x76\x6f\x63\x61\x74\x69\x6f\x6e\x4c\x69\x73\x74\x30\x32\xa0\x30\xa0\x2e\x86\x2c\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x55\x53\x5f\x54\x72\x65\x61\x73\x75\x72\x79\x5f\x52\x6f\x6f\x74\x5f\x43\x41\x2e\x63\x72\x6c\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\xaf\x33\x15\xe7\x0f\xd6\xb6\x4e\x1a\x8b\x27\x18\x92\x52\x25\x61\x3f\xa3\x2c\xc6\x30\x19\x06\x09\x2a\x86\x48\x86\xf6\x7d\x07\x41\x00\x04\x0c\x30\x0a\x1b\x04\x56\x37\x2e\x31\x03\x02\x00\x81\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x69\xaf\x28\x4e\x7b\x23\xb0\x71\x60\xc8\x53\xa7\xb8\x67\x50\xb7\xd4\xac\x7c\x48\x6c\xf2\x4b\x3d\xeb\x5e\x10\x08\x83\xa0\xb8\x94\x46\xba\x67\x2c\x80\x91\xaf\x36\x63\xb1\xb6\xa5\x79\x70\x5c\xfb\x4d\x52\x6c\x0a\x3f\xda\x18\x61\x89\xee\xad\x5f\xcc\x04\xb9\x20\xbc\x9d\x06\xf2\xd2\xcc\x9e\x51\x0f\x89\x2b\x00\x2a\x86\xfe\xdd\x41\x92\xc4\x6f\xcb\x86\xeb\x2c\x03\xb5\xe4\xb4\x78\xee\xe9\xad\xce\x48\x65\x5f\xa5\x15\x93\x3d\xa5\x42\xbd\xe5\x72\xf2\xb6\x9b\x25\x07\xa1\x1c\x79\x7f\xcd\xf5\x11\x9e\x05\x37\xb7\x4d\xa3\x17\xba\x05\x9e\xa0\x30\xda\x11\x27\x15\x82\x53\x4e\xc0\x72\xba\xcc\x9a\x89\x24\x4e\xbe\xe2\xac\x59\xe5\x3e\x99\x2d\x5c\x31\x63\x10\x03\x0e\x4d\xd5\xb9\x51\x8e\xc2\x46\x49\x6e\xc9\xed\xff\x33\x74\xac\x3c\x95\x17\xd5\x0f\x16\x50\x37\x80\xc0\xc9\x87\x37\xc2\x13\x36\x51\x4d\xfb\xc9\x6b\xb0\x49\xa8\x6b\xc8\x7a\xc6\xfa\xfd\x83\xa3\x3f\xd8\x9b\x8a\x41\xbb\x3f\x4f\x73\x8f\xf0\x7e\xec\x68\xc1\x2b\x8e\xff\x73\x1e\x9b\x97\xf8\x55\xb5\x3c\x69\x84\x21\x69\xa4\x9b\x20\x9c\xcf\xf4\x69\x9b\xbc\x1b\x02\x63\xfd\x36\xdc\x45\x9c", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-5.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1779, /* certificate_len */ (unsigned char *) "\x30\x82\x06\xef\x30\x82\x05\xd7\xa0\x03\x02\x01\x02\x02\x04\x4a\x61\xd1\xc9\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x31\x30\x31\x32\x30\x35\x31\x33\x33\x38\x34\x30\x5a\x17\x0d\x32\x30\x31\x32\x30\x35\x31\x34\x30\x38\x34\x30\x5a\x30\x65\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x17\x30\x15\x06\x03\x55\x04\x0b\x13\x0e\x46\x69\x73\x63\x61\x6c\x20\x53\x65\x72\x76\x69\x63\x65\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xc2\xb8\x84\x86\xda\xf0\x63\x23\x38\x3b\xa4\x3c\x7c\x5f\x9d\x97\xfa\xbb\x73\xdc\xcf\x48\xbe\x4b\x47\x09\x8e\x39\xb5\x1e\xfe\xfe\xab\x91\x27\x4d\x06\x07\x2a\x8f\x10\xb8\xa3\xfe\xd3\x0e\x5a\x27\x02\xd4\x3d\x67\xfd\x90\x40\x9b\x44\xd5\x23\x09\x21\x0e\x9e\x21\xc2\xd1\xe0\xe6\x2d\xf7\xc1\xdc\xe8\x80\x7b\xf7\x2a\x21\x16\xbd\x71\xad\xfe\x2b\x98\xd1\x28\x0c\x9c\xf3\x1c\xe4\xd7\x45\x36\x3a\x63\x8c\x70\xf4\x5c\x08\x21\x64\xc8\x9e\xa8\x1a\xbf\xe6\xec\xb1\xc7\xb6\x97\xce\x73\x93\xa0\xb7\x37\x03\x61\xd7\x1d\xc2\xab\xc1\x64\x02\x97\x7a\x5c\x51\xfc\x6f\x0b\xae\x78\xd5\xa9\x8b\x78\x95\xe5\x44\x0d\x68\x0e\x42\x60\x7e\x05\x97\xa5\x61\x79\x9b\x50\x57\x69\xaf\xac\xa9\x83\xfb\xf1\x1e\x0e\x17\xc4\xdf\xc7\xd8\xfe\x3d\x83\xb4\x89\xda\x54\xf4\x15\xa8\x14\x9f\xa8\xfe\x82\x5e\x11\xca\x18\xc2\x41\xbd\xc7\xfa\x4a\x91\x81\xa3\xa0\x6d\xaf\xe4\xb8\x83\xb6\xf8\x43\x96\x0c\x43\xd5\x55\xcf\x6b\xeb\x05\x8c\x87\x98\xd9\xcc\xf1\xca\xe2\x28\x48\xec\x40\xe0\xb2\x30\xb3\xe5\xf2\x88\x7c\xd3\x86\x7a\xb3\x48\x46\x80\x46\x59\x24\x41\x35\xd0\x3a\xdf\x97\x02\x03\x01\x00\x01\xa3\x82\x03\x7b\x30\x82\x03\x77\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x41\x06\x03\x55\x1d\x20\x04\x3a\x30\x38\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x04\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x03\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x02\x30\x82\x01\x0f\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x82\x01\x01\x30\x81\xfe\x30\x2d\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x21\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x66\x73\x63\x61\x5f\x61\x69\x61\x2e\x70\x37\x63\x30\x81\xcc\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\xbf\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x2c\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x82\x01\xa1\x06\x03\x55\x1d\x1f\x04\x82\x01\x98\x30\x82\x01\x94\x30\x82\x01\x5c\xa0\x82\x01\x58\xa0\x82\x01\x54\xa4\x81\xa0\x30\x81\x9d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x13\x04\x43\x52\x4c\x31\x86\x81\xae\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x63\x6e\x3d\x43\x52\x4c\x31\x2c\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x61\x75\x74\x68\x6f\x72\x69\x74\x79\x52\x65\x76\x6f\x63\x61\x74\x69\x6f\x6e\x4c\x69\x73\x74\x30\x32\xa0\x30\xa0\x2e\x86\x2c\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x55\x53\x5f\x54\x72\x65\x61\x73\x75\x72\x79\x5f\x52\x6f\x6f\x74\x5f\x43\x41\x2e\x63\x72\x6c\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\xe8\xd2\xaf\xdc\xe0\x0a\x6e\x16\xce\x13\x27\x2f\xd3\xd8\xaf\x3b\x6a\x18\x26\x46\x30\x19\x06\x09\x2a\x86\x48\x86\xf6\x7d\x07\x41\x00\x04\x0c\x30\x0a\x1b\x04\x56\x37\x2e\x31\x03\x02\x00\x81\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\xc6\x8c\xe8\x8f\xf6\xb7\x39\xeb\xb7\x59\x65\xd9\x22\xee\xbe\x3e\x67\x56\x42\xda\x3f\xb1\x98\x3a\x23\x82\x96\xd9\x26\x60\xbf\x40\x41\xe3\xf1\xc0\x52\x8d\xea\xa5\x5c\x7f\x51\xd0\xc5\x5a\xc7\xbd\xf7\xa3\xb5\xd5\x05\x2b\xb3\x6d\x42\x9b\xdb\x34\x6b\xe6\x60\xae\xce\x74\xd0\x52\xe7\x63\xe0\xe7\x54\x37\xe1\x83\x17\x2c\x5a\xe3\x59\x1c\xff\xd7\x56\x17\xdf\x63\x27\x52\x85\x76\x6c\xb7\xb7\xd3\xa7\xec\x5d\x3a\x51\xed\xdc\xc3\x54\x1c\x74\x6a\xca\xcf\x44\x6b\x5f\x51\x6f\x39\xa3\xf7\x9b\x7c\x23\x80\xf9\xab\xc9\x12\xc6\x96\xd4\xb5\x70\xfd\x2e\xaf\xc2\x8d\xb5\xbd\x17\x2c\x28\x57\x89\xa4\x31\xc3\xa4\x35\xd2\xcc\xf1\x95\x9c\x36\x66\xab\x93\xd2\x62\x05\x5e\xaf\xa2\x7b\xca\x42\x6f\xce\x45\x75\x1e\x74\x2e\x89\x28\x06\xa3\xc1\x90\x5a\x6b\xd5\x11\xdd\x8a\xb8\x6e\x1c\xf2\xf7\x9d\x81\xd6\xdd\x4e\xea\x05\x56\xa2\xce\x0b\xb7\x95\xb8\xec\x58\x5a\x3f\x2c\x2f\xea\x08\x05\x28\x69\x6f\xac\x92\xb5\xee\x2b\x2c\x21\x01\xea\x16\x92\x57\x9a\x37\x49\x13\xe7\x07\x00\xb2\xc7\x3b\xbf\x19\x1d\x9e\xaf\xf3\x7e\x0d\xe9\x31\xcc\x6c\xe5\xf5\x0f\x1f\xc7\x1b", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-6.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1779, /* certificate_len */ (unsigned char *) "\x30\x82\x06\xef\x30\x82\x05\xd7\xa0\x03\x02\x01\x02\x02\x04\x4a\x61\xd0\x1a\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x30\x39\x30\x37\x31\x39\x31\x33\x34\x33\x35\x31\x5a\x17\x0d\x31\x39\x30\x37\x31\x39\x31\x34\x31\x33\x35\x31\x5a\x30\x65\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x17\x30\x15\x06\x03\x55\x04\x0b\x13\x0e\x46\x69\x73\x63\x61\x6c\x20\x53\x65\x72\x76\x69\x63\x65\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xb5\xcb\x93\x8a\x24\x29\x79\xf4\x02\xff\x81\x4e\xd6\x54\x04\x5d\xb6\x1a\xe8\x55\xe8\x4a\xfe\x7c\x48\xc7\x57\xe4\x2a\x30\x18\xb3\x4b\x27\xe7\x41\x8a\xc7\x30\xbe\x88\x3e\x9e\x07\xad\xc6\x6d\x3f\x7e\x19\x44\x44\x5e\xf6\x15\xc7\xae\xf2\x2a\x7e\x7a\x8b\x9b\x9e\x94\x48\x5f\xbd\x25\xe7\x20\xbf\x61\x6f\xf8\x8a\x68\x50\xf0\x12\x35\xc3\x78\x20\x54\x24\x17\x4b\x97\x5c\x81\xed\x3a\x63\x0f\x3d\x01\x56\xda\xcd\x56\x12\x37\x67\x89\xc2\xbc\xd4\x60\xa0\xfd\x3a\x44\xde\x3e\x3b\x1f\xa1\x18\xe7\x2b\xdd\xdb\xf0\x8b\x92\x77\xd0\xae\x62\xc0\x9e\x32\x6b\xd8\x68\xda\x67\x38\x07\x69\x8e\x11\x78\x7f\xa2\x6c\x2f\x60\xb5\x7c\xc8\x0c\x3e\x2e\x54\x18\x77\x0f\xa6\x52\x45\x6c\xcf\x9f\x98\x82\x22\x2a\x3b\x86\xea\xb1\xa7\x9b\xa7\xe0\x3b\xc9\x42\xae\xe6\x8f\x6d\xfb\x57\xf6\x39\xca\x37\xae\xe0\xcc\xa2\x31\x83\x33\xed\xbd\x1e\x9b\x31\x31\x8d\x64\x54\xb7\x10\x72\x45\xab\x85\xdc\x66\xdc\xf5\x97\x0e\xf7\x81\xcf\x56\x7e\x7b\x9c\x09\x85\x54\x8c\xcc\x2b\x1f\x65\xe7\xde\xb4\xb6\x64\x66\x4a\xc1\x86\x39\xb2\x85\x07\x81\x2f\x33\x94\xe0\x47\xb5\xbd\x4c\xc9\x02\x03\x01\x00\x01\xa3\x82\x03\x7b\x30\x82\x03\x77\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x41\x06\x03\x55\x1d\x20\x04\x3a\x30\x38\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x04\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x03\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x05\x02\x30\x82\x01\x0f\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x82\x01\x01\x30\x81\xfe\x30\x2d\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x21\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x66\x73\x63\x61\x5f\x61\x69\x61\x2e\x70\x37\x63\x30\x81\xcc\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\xbf\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x2c\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x82\x01\xa1\x06\x03\x55\x1d\x1f\x04\x82\x01\x98\x30\x82\x01\x94\x30\x82\x01\x5c\xa0\x82\x01\x58\xa0\x82\x01\x54\xa4\x81\xa0\x30\x81\x9d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x13\x04\x43\x52\x4c\x31\x86\x81\xae\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x63\x6e\x3d\x43\x52\x4c\x31\x2c\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x61\x75\x74\x68\x6f\x72\x69\x74\x79\x52\x65\x76\x6f\x63\x61\x74\x69\x6f\x6e\x4c\x69\x73\x74\x30\x32\xa0\x30\xa0\x2e\x86\x2c\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x55\x53\x5f\x54\x72\x65\x61\x73\x75\x72\x79\x5f\x52\x6f\x6f\x74\x5f\x43\x41\x2e\x63\x72\x6c\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x34\xed\x82\x1e\x7d\x3e\x1d\xb9\x10\x8b\xbf\x55\x07\x8c\x2f\x94\x5d\x60\x54\x5b\x30\x19\x06\x09\x2a\x86\x48\x86\xf6\x7d\x07\x41\x00\x04\x0c\x30\x0a\x1b\x04\x56\x37\x2e\x31\x03\x02\x00\x81\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\xbe\x42\xa9\x26\x9b\xaf\x1e\x95\x1c\x87\xe2\xdc\xdb\xcd\x99\xd4\x24\x27\xa0\x6d\xb5\xf1\xad\xfe\x0b\x2f\x54\x95\x60\xfd\xf8\x38\x29\xb1\xad\x1d\x3d\x22\x23\x41\xbc\xf3\x32\x34\x35\x01\xb3\x29\x12\x31\x97\x90\x39\x62\x55\x16\xf2\xd8\x73\x1c\x24\x71\x44\x33\x9b\x0b\x51\xdf\x99\x95\xa0\x77\x91\x86\x47\xca\xc1\x29\xeb\x69\x28\x34\xaa\x8a\xec\x71\x05\xde\xa6\x3a\xc0\xf7\x84\xe8\x21\xc8\xe6\xc3\x65\xb9\x7e\x99\x35\x90\x33\x9c\x40\x15\x8a\xc2\x83\xf5\x42\xf7\xcd\xad\x89\x34\xd4\xc1\xa3\x92\xa2\x77\xc4\x3b\x4f\x8d\x50\x49\x60\x85\xbd\x7e\xc7\xe7\x98\xc1\x8a\x78\xd1\x8c\xaa\x73\x94\xc8\x8b\x2c\xa1\x85\x8f\xce\x3a\x79\x38\x01\x25\x85\x96\xb3\xdd\x5f\x91\x1d\xe1\x73\x94\xaa\x76\xe8\xcb\x21\x3f\x97\x35\x2f\x98\x24\x51\x21\xd0\x9d\xbb\x30\x5f\x02\x7c\x13\x1d\x3c\x05\xfe\xce\x33\xb0\xb0\x5e\x56\x1b\x80\xd7\xc2\x17\xab\x0b\xa9\x51\x62\x26\xe9\x19\x1a\xa2\xc5\x80\x69\xa6\xd0\xae\x24\x52\x07\x61\x1d\xea\xef\x1d\x01\x50\x14\x80\xc4\xd2\xcd\x75\x7c\xe1\xb9\xa2\x29\xdd\x15\x63\x7a\x1b\xde\xae\xb8\x17\x3d\x3f\x53\xa5\x13\x4f\x1e", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-7.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1431, /* certificate_len */ (unsigned char *) "\x30\x82\x05\x93\x30\x82\x04\x7b\xa0\x03\x02\x01\x02\x02\x04\x46\xea\xce\xa1\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x30\x39\x30\x31\x31\x38\x31\x34\x31\x38\x33\x31\x5a\x17\x0d\x31\x39\x30\x31\x31\x38\x31\x34\x34\x38\x33\x31\x5a\x30\x65\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x17\x30\x15\x06\x03\x55\x04\x0b\x13\x0e\x46\x69\x73\x63\x61\x6c\x20\x53\x65\x72\x76\x69\x63\x65\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xaf\xbc\xcb\x0a\x5e\xe9\xbb\xad\x3c\xba\x54\xcf\xed\xd6\x8f\xcc\x68\x83\xa9\x04\x77\x30\x25\x2d\x15\x43\x20\x0e\xac\x0b\x42\x76\x27\x51\xde\x72\x29\xa6\x12\x1e\x26\xdc\xe4\x0b\xab\x5a\xd6\x2b\x1a\xc9\x24\xce\x2d\x8b\x26\x91\xd8\x9c\xf4\x4a\x00\x9e\x81\x0a\xb3\x22\x17\x4a\x62\xbc\x4f\xd2\x23\x77\x11\xae\x2f\x86\x1c\x9d\xad\x81\x23\x21\xda\xec\xe4\x8f\x87\xfc\x3e\xb2\xa6\xac\x02\x22\x57\x4f\xb8\x6a\x20\xdc\xd3\xa2\x93\x8e\x62\x78\x7b\xa4\x17\x05\x92\x0a\xb3\x4d\x18\x35\x75\x02\xbe\x93\xd5\xa1\x4d\xb6\x96\x21\xac\xb9\xe2\x2f\xc7\x64\xb1\xae\xeb\x15\x3a\x0e\x55\x22\x9b\x08\x97\xfc\x0c\x4d\xed\x2b\xeb\x0b\xc7\x04\x76\x3c\x3e\xda\xa8\x10\xc2\x29\x3f\xe4\x94\xec\x93\xb5\xe8\x48\x0a\x87\x34\xa7\x90\x73\x9a\x87\x60\xa5\xca\x8b\x7e\x7e\x6d\xe0\xd0\x2f\x92\x3a\xb1\xe7\x95\x03\x0a\x02\x9a\x6a\x0b\xd1\xaa\x2a\x70\x91\x89\x0c\x5e\x61\x1b\x4d\xf6\xef\x33\xe1\xc4\xe3\xd1\xd7\x0f\xaf\x02\xa7\x1c\x86\xcd\xff\xfb\xb1\xf9\x6b\xd3\x81\x1d\xb1\xeb\xa4\x64\x7d\xdc\x2d\xbf\x07\xfe\xe8\x29\x1d\x0d\xa7\xd1\xf8\x87\xe0\xc9\x99\xaa\x71\x02\x03\x01\x00\x01\xa3\x82\x02\x1f\x30\x82\x02\x1b\x30\x82\x01\xa1\x06\x03\x55\x1d\x1f\x04\x82\x01\x98\x30\x82\x01\x94\x30\x82\x01\x5c\xa0\x82\x01\x58\xa0\x82\x01\x54\xa4\x81\xa0\x30\x81\x9d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x13\x04\x43\x52\x4c\x31\x86\x81\xae\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x63\x6e\x3d\x43\x52\x4c\x31\x2c\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x61\x75\x74\x68\x6f\x72\x69\x74\x79\x52\x65\x76\x6f\x63\x61\x74\x69\x6f\x6e\x4c\x69\x73\x74\x30\x32\xa0\x30\xa0\x2e\x86\x2c\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x55\x53\x5f\x54\x72\x65\x61\x73\x75\x72\x79\x5f\x52\x6f\x6f\x74\x5f\x43\x41\x2e\x63\x72\x6c\x30\x0b\x06\x03\x55\x1d\x0f\x04\x04\x03\x02\x01\x06\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\xd7\x7d\xf9\xc0\xd9\xb1\x6d\x71\x3b\x82\x9a\xbe\x88\xb8\xeb\x63\xf5\x22\x93\x84\x30\x0c\x06\x03\x55\x1d\x13\x04\x05\x30\x03\x01\x01\xff\x30\x19\x06\x09\x2a\x86\x48\x86\xf6\x7d\x07\x41\x00\x04\x0c\x30\x0a\x1b\x04\x56\x37\x2e\x31\x03\x02\x00\x81\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x8c\x8d\x18\x2b\xe7\x3f\x73\xbb\x56\x9c\x68\x85\xee\xf4\xd3\xd1\x0c\x19\x6f\x20\x39\x30\x5e\x50\x93\xe6\x6d\xb0\x5c\x79\x44\x56\xbb\xe4\x7e\x9b\xb4\x77\x6d\x56\x9b\xf6\x78\x55\x0a\xb4\xdd\x43\x18\xdf\x23\xa1\x4a\x73\xa3\x8e\xf6\x4e\x00\x90\x25\xb0\xa5\x46\x2f\x98\xd8\x95\x67\x0d\x68\xbb\xd1\x32\x32\x15\x6f\x14\x88\x4c\x23\xdd\x29\x52\x76\x3d\x0b\x0b\x3a\x56\x61\x09\x20\x6f\x6c\x67\x21\x25\xb8\xec\x7b\xab\xe7\x6c\x73\x84\x2f\x83\x6c\xb6\xcc\x6b\x33\xdb\x7d\x32\x2a\x84\x5f\x9c\x8d\x32\x73\xc7\x60\x86\x31\x31\x05\xe5\x7b\xbf\x2f\x1a\x42\xf1\x8e\xfb\xf8\x3e\x4e\x78\x5a\xf7\xbb\xe0\xaf\x6f\xa1\xf0\xee\x41\x10\x40\xa2\x1c\x5e\x57\xf2\x73\x71\xd5\xb2\x02\xe0\x8f\x00\xbb\x08\xf8\x8c\xe6\x0e\x99\x38\xf9\x39\x02\x83\x73\x1e\xf8\xf5\xe2\x3d\x6a\x43\x93\x43\x54\x77\xf0\x00\x18\x10\xfa\xd8\x29\x42\x89\x9c\xf4\x00\x8f\xf7\xee\x03\xf0\x14\xb0\xfd\x44\x8b\x97\xf6\x4f\xb4\x27\x4e\x86\xe0\xb5\x56\xb2\x72\x51\x46\xfc\x82\xb2\x83\xd2\x44\x9b\x99\xf8\x24\x6d\x7c\xd3\xb3\x87\xd0\xa6\x26\x24\xb9\x42\x18\x48\xf9\x02\x0d\x8b\xf8\x36", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-8.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 1535, /* certificate_len */ (unsigned char *) "\x30\x82\x05\xfb\x30\x82\x04\xe3\xa0\x03\x02\x01\x02\x02\x04\x4e\x39\x81\x16\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x31\x35\x30\x36\x31\x33\x31\x34\x32\x34\x35\x32\x5a\x17\x0d\x32\x35\x30\x36\x31\x33\x31\x34\x35\x34\x35\x32\x5a\x30\x78\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0d\x30\x0b\x06\x03\x55\x04\x0b\x13\x04\x4e\x41\x53\x41\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x4e\x41\x53\x41\x20\x4f\x70\x65\x72\x61\x74\x69\x6f\x6e\x61\x6c\x20\x43\x41\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xb5\x94\xdc\x0d\xa7\xcc\x30\x2d\x52\x05\x96\x88\xe3\xff\x66\x5d\x7f\x41\x24\xe8\x7e\xa3\xe3\x37\xe0\x42\x2e\x5a\x40\x7b\x51\x6e\x23\x37\xfe\xaa\xa3\xfd\x6a\xa7\x67\x58\x3a\x38\x37\x64\x96\xeb\xc6\xfd\xb9\x5f\x92\xb6\x7c\xb6\xc4\xa6\xaf\xc9\x58\x83\x90\x91\x32\xf8\x19\xf2\x59\xc6\xcd\x75\xcb\xc9\xc6\x5c\x2a\xbe\xe6\x29\xcc\x02\x01\x60\x4f\xc1\x5d\x14\xba\xbb\xc8\x80\x4d\x1e\x30\x73\xf8\x39\x96\xd1\xf1\xfe\xbe\x25\x1d\xd2\xc9\x19\x36\x55\x87\xa3\x8a\x05\x72\x39\xb9\x97\xee\x4b\x92\x14\x4c\x25\x2e\x6f\x14\x02\x30\x23\x2a\x2c\xbb\x9d\x3e\x93\x6c\x96\xad\x0b\x33\xce\xea\xbd\xd1\xcf\x00\x2f\x71\xf0\x61\x2f\x5b\xa5\x38\x46\x5c\xa5\x0e\x70\xff\xe2\xeb\x2d\x9a\x01\x54\xe9\x4f\xa2\xfd\xc4\x33\xa2\xd4\x56\x29\xf9\x07\x6e\x7e\x64\xcb\x90\x1e\xa6\x3c\x06\x6e\xdf\xfc\x18\x43\xa9\x3f\xf7\x6b\x9d\xa7\x98\xe9\x95\x59\x99\xa8\x06\x77\x7d\x5b\x1c\x8a\xff\xe0\xc8\x6e\xdc\x6a\x0a\xbf\x0d\xa3\xfe\x2e\x8b\xff\x79\xd6\xe5\xac\x3b\x6e\xf8\x56\xb6\x33\x2b\xe2\x24\x41\xb3\x20\xde\x2f\x5e\x28\x13\x89\x0d\x6d\xab\x92\x52\x8a\xc9\x58\xd9\x02\x03\x01\x00\x01\xa3\x82\x02\x74\x30\x82\x02\x70\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x81\x97\x06\x03\x55\x1d\x20\x04\x81\x8f\x30\x81\x8c\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x06\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x0d\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x10\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x11\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x24\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x27\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x28\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x29\x30\x40\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x34\x30\x32\x30\x30\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x24\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x75\x72\x79\x2e\x67\x6f\x76\x2f\x6e\x6f\x63\x61\x5f\x61\x69\x61\x2e\x70\x37\x63\x30\x40\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x0b\x04\x34\x30\x32\x30\x30\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x24\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x75\x72\x79\x2e\x67\x6f\x76\x2f\x6e\x6f\x63\x61\x5f\x73\x69\x61\x2e\x70\x37\x63\x30\x81\xee\x06\x03\x55\x1d\x1f\x04\x81\xe6\x30\x81\xe3\x30\x35\xa0\x33\xa0\x31\x86\x2f\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x75\x72\x79\x2e\x67\x6f\x76\x2f\x55\x53\x5f\x54\x72\x65\x61\x73\x75\x72\x79\x5f\x52\x6f\x6f\x74\x5f\x43\x41\x2e\x63\x72\x6c\x30\x81\xa9\xa0\x81\xa6\xa0\x81\xa3\xa4\x81\xa0\x30\x81\x9d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x13\x04\x43\x52\x4c\x31\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x85\x3f\x77\xe4\xd2\x7a\x51\xe9\x56\x4e\x8d\x4d\xc4\x9d\xc8\x5e\xd5\xd8\x44\x75\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x73\x6e\xc2\x5e\xc1\xc1\xf2\x23\x82\xee\x4e\xc9\xde\x84\x77\xc7\x8b\xc4\xf1\xde\x8f\x6a\x96\x4f\x84\x95\xaf\xc3\x39\x37\x49\xb1\x6b\xdb\x56\xec\xdf\x9b\x11\xc7\x1c\xb6\x44\x9a\xd2\xcd\x2c\xbc\xbe\x56\x81\x70\x4b\xf2\x90\xda\x92\x83\x97\x5b\x16\xc8\xed\xa0\x49\x7d\x21\xb7\xf8\x07\xfb\x9d\x11\x35\xd1\x4d\x61\x30\x19\x61\xc6\xa7\x7e\x1a\x54\x07\x88\x88\x23\x25\xe2\x17\x37\x6d\x16\xc2\xe4\x5f\x53\x01\x51\xef\x37\xb8\xe6\xb1\xa6\xa8\xec\xc5\xd8\x61\x22\x08\x80\x3f\x79\xe6\x93\xb5\x04\xa2\x0a\xce\xce\x0a\xaa\x5f\xfc\x2c\x7b\x4a\x13\xf7\xdf\x95\xc8\x93\x91\x6d\xf4\x49\xbe\x45\x72\xc1\x77\xb5\x55\x66\x98\xfb\x58\xe9\x5f\x24\x04\x5a\xde\x1b\x70\xb6\x9a\xad\x8f\xf6\x52\xc1\x81\x05\x66\x97\x9c\x6d\x66\x63\xc6\xf4\xd5\x86\x6a\xc0\x42\xff\xbd\x93\x51\x4e\xe3\x37\x29\x4a\xd6\x18\xfa\xd0\xfa\xd9\xe8\x91\x74\x49\xc7\x6a\x73\x79\x31\x1d\xea\x13\xec\xcb\x85\x2a\x30\xff\x1b\x3a\x2b\x9b\x93\x24\x2b\x95\x12\x26\x9a\x94\xcf\x87\x04\x32\x75\xd1\x40\xe3\xc0\xa1\x8c\x95\x45\xf5\x1f\xa6\xc8\xd6\x21\x27\x93\xf7\x58\x6d\xce\x8f\xbe\xff", /* certificate */ 2048 /* keysize */ }, /* certs/federal/cert-9.crt */ { CACKEY_ID_TYPE_CERT_ONLY, /* id_type */ 2060, /* certificate_len */ (unsigned char *) "\x30\x82\x08\x08\x30\x82\x06\xf0\xa0\x03\x02\x01\x02\x02\x04\x4a\x61\xd2\xa5\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x30\x1e\x17\x0d\x31\x31\x30\x31\x32\x32\x31\x33\x33\x39\x30\x36\x5a\x17\x0d\x32\x31\x30\x31\x32\x32\x31\x34\x30\x39\x30\x36\x5a\x30\x78\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x0d\x30\x0b\x06\x03\x55\x04\x0b\x13\x04\x4e\x41\x53\x41\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x4e\x41\x53\x41\x20\x4f\x70\x65\x72\x61\x74\x69\x6f\x6e\x61\x6c\x20\x43\x41\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a\x02\x82\x01\x01\x00\xb7\x70\xc7\x05\x85\xde\x5b\xb4\xe6\xed\x10\x20\xbc\x4d\x35\xaa\xdd\x81\x06\xe9\xcd\x6a\xa4\x5f\xcd\xa2\xd9\x30\xd1\x21\x9e\x2c\xfd\x94\xee\xc7\x54\x1c\xca\x3e\x86\x97\x6f\xeb\xbd\xb9\xb2\xfa\xec\xdd\xc1\x61\xd3\x88\xf7\x7a\x33\x2f\x30\x3f\x9a\x0c\xac\x19\x45\x43\x6b\x68\x0a\xb5\x51\x93\xbe\xcd\x3d\x4f\x74\xc8\x7d\xa6\x5c\xa6\x36\xb5\x75\x0d\x4b\x82\x94\x25\xef\xac\x47\xaf\x38\xa5\x3d\x98\x79\x3d\x88\xd8\xb7\x6b\x65\xea\xfe\x74\xf9\x93\x06\x8c\x0b\xa9\xa9\xe4\x23\x0b\x66\xa1\xd2\x64\xde\x5f\xc0\xc1\x43\x4c\x4f\xf7\x7b\xff\x74\x61\x7d\x15\x3d\x0d\x0a\x8f\x4a\x40\xe7\xbe\x8c\x5e\xaa\x04\xb8\x52\x75\x59\xf8\x23\x77\xe6\x86\x58\xe0\xa4\x7a\x08\xf9\x3b\x60\x63\xc9\x32\x46\xa6\x98\x11\x22\x59\xd1\x07\xf2\xdd\x6a\x31\x37\x7e\xc8\xd8\x87\x5b\xf0\x20\x90\x5c\x0f\x02\xd6\xe9\x57\x1f\x1e\x61\x89\x44\xd9\x12\x1d\xef\x7f\x8b\xb6\x93\x5b\xe3\x3b\xd5\xed\x1f\x0a\xa4\x33\xbd\xb7\x8e\xeb\x04\x9c\x43\x66\x14\xb0\xb9\xb5\x63\x4f\x27\xf2\xd8\x0a\x26\xba\xd6\xb7\x9b\xcd\x6a\x91\xf0\x73\x9c\xcf\x44\xce\x75\xe3\xd2\x60\x49\x58\x57\x02\x03\x01\x00\x01\xa3\x82\x04\x81\x30\x82\x04\x7d\x30\x0e\x06\x03\x55\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x06\x30\x0f\x06\x03\x55\x1d\x13\x01\x01\xff\x04\x05\x30\x03\x01\x01\xff\x30\x5d\x06\x03\x55\x1d\x20\x04\x56\x30\x54\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x06\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x08\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x07\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x0d\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x11\x30\x0c\x06\x0a\x60\x86\x48\x01\x65\x03\x02\x01\x03\x10\x30\x82\x01\x0f\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x01\x04\x82\x01\x01\x30\x81\xfe\x30\x2d\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x21\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6e\x6f\x63\x61\x5f\x61\x69\x61\x2e\x70\x37\x63\x30\x81\xcc\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x02\x86\x81\xbf\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x2c\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x81\xed\x06\x08\x2b\x06\x01\x05\x05\x07\x01\x0b\x04\x81\xe0\x30\x81\xdd\x30\x2d\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x21\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6e\x6f\x63\x61\x5f\x73\x69\x61\x2e\x70\x37\x63\x30\x81\xab\x06\x08\x2b\x06\x01\x05\x05\x07\x30\x05\x86\x81\x9e\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x63\x2e\x6e\x61\x73\x61\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x4e\x41\x53\x41\x25\x32\x30\x4f\x70\x65\x72\x61\x74\x69\x6f\x6e\x61\x6c\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x4e\x41\x53\x41\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x41\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x3b\x62\x69\x6e\x61\x72\x79\x2c\x63\x72\x6f\x73\x73\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x50\x61\x69\x72\x3b\x62\x69\x6e\x61\x72\x79\x30\x82\x01\x9b\x06\x03\x55\x1d\x1f\x04\x82\x01\x92\x30\x82\x01\x8e\x30\x81\xa9\xa0\x81\xa6\xa0\x81\xa3\xa4\x81\xa0\x30\x81\x9d\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x18\x30\x16\x06\x03\x55\x04\x0a\x13\x0f\x55\x2e\x53\x2e\x20\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x31\x23\x30\x21\x06\x03\x55\x04\x0b\x13\x1a\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x54\x72\x65\x61\x73\x75\x72\x79\x31\x22\x30\x20\x06\x03\x55\x04\x0b\x13\x19\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x31\x1c\x30\x1a\x06\x03\x55\x04\x0b\x13\x13\x55\x53\x20\x54\x72\x65\x61\x73\x75\x72\x79\x20\x52\x6f\x6f\x74\x20\x43\x41\x31\x0d\x30\x0b\x06\x03\x55\x04\x03\x13\x04\x43\x52\x4c\x31\x30\x81\xdf\xa0\x81\xdc\xa0\x81\xd9\x86\x2c\x68\x74\x74\x70\x3a\x2f\x2f\x70\x6b\x69\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x55\x53\x5f\x54\x72\x65\x61\x73\x75\x72\x79\x5f\x52\x6f\x6f\x74\x5f\x43\x41\x2e\x63\x72\x6c\x86\x81\xa8\x6c\x64\x61\x70\x3a\x2f\x2f\x6c\x64\x61\x70\x2e\x74\x72\x65\x61\x73\x2e\x67\x6f\x76\x2f\x6f\x75\x3d\x55\x53\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x25\x32\x30\x52\x6f\x6f\x74\x25\x32\x30\x43\x41\x2c\x6f\x75\x3d\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x25\x32\x30\x41\x75\x74\x68\x6f\x72\x69\x74\x69\x65\x73\x2c\x6f\x75\x3d\x44\x65\x70\x61\x72\x74\x6d\x65\x6e\x74\x25\x32\x30\x6f\x66\x25\x32\x30\x74\x68\x65\x25\x32\x30\x54\x72\x65\x61\x73\x75\x72\x79\x2c\x6f\x3d\x55\x2e\x53\x2e\x25\x32\x30\x47\x6f\x76\x65\x72\x6e\x6d\x65\x6e\x74\x2c\x63\x3d\x55\x53\x3f\x63\x65\x72\x74\x69\x66\x69\x63\x61\x74\x65\x52\x65\x76\x6f\x63\x61\x74\x69\x6f\x6e\x4c\x69\x73\x74\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x68\x84\x15\x48\x8c\x54\x70\x7f\x2d\x12\x58\x0e\xec\x1c\x78\xef\x3c\x2e\x59\x64\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x07\x2e\x9a\x6a\x58\x83\x21\x53\xc9\x68\x62\x52\x63\xf6\x6d\x4b\x32\x3a\x9e\x82\x30\x19\x06\x09\x2a\x86\x48\x86\xf6\x7d\x07\x41\x00\x04\x0c\x30\x0a\x1b\x04\x56\x37\x2e\x31\x03\x02\x00\x81\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0b\x05\x00\x03\x82\x01\x01\x00\x2c\x22\xc7\x46\xe6\x02\x3a\x5b\x1f\x5d\x04\xbd\xda\xbb\x4b\xf0\x37\x2b\x5f\x5c\x31\x8d\xb8\xb4\x56\xbf\xce\xed\x59\x6d\x83\xea\xb2\x24\x10\x82\x7c\x18\xb3\x62\x9a\x17\x39\xf7\x64\x9b\xfe\xdf\x05\x94\xa2\xe3\x05\xc9\x2c\x97\xf7\xe7\xca\x20\x14\x6c\x0f\x62\x5e\x96\x43\x47\xb2\x52\x7b\x98\xc2\xd9\x18\xb2\x31\xb0\x56\x40\x28\xd4\xf6\x79\x63\x1e\x0d\x9d\x1f\x98\x7c\x86\x2c\x8f\x33\xd7\xbb\xf0\x01\x5c\x43\x13\x9d\xb9\x09\xa8\xe6\x63\xa7\xf8\x66\x82\xda\x73\x46\x6e\x7a\x36\x73\xd4\x00\x9b\x75\x8a\xe2\x56\x93\xc3\x55\x03\x97\x1c\xad\x2c\xf8\x20\xb0\x9a\xce\x23\x3a\x86\x96\x92\x06\x98\x51\x7b\x6f\x9e\x78\x54\xe5\xe2\x73\x6a\x27\xf8\xc2\xa5\xe3\x4f\xc9\xf2\xd7\x86\xf4\xc1\x03\xd1\xcd\xe2\xb5\x46\x7d\xeb\x7a\xd4\xa8\x2c\x0e\x6d\x27\xbe\xc0\x33\xe5\xae\x3c\x65\x78\xde\x2a\x00\xa0\x12\xe3\x28\x55\x35\x75\xe0\xbb\xc3\x3c\xd7\xdb\x0e\x2d\x73\x24\x53\xe0\x43\x65\xa1\x83\xe9\xf9\xdc\xec\x2b\x3b\xf7\xa7\x09\xeb\xf9\x8e\x74\x56\x84\x3c\xbd\xe5\xd2\x8f\xb1\x94\x1e\xaa\x1d\x7c\x53\xf7\x6a\x94\x47\xc1\xa1\x85\x8f\x4b\xc4\x1e\x8d", /* certificate */ 2048 /* keysize */ }, cackey-0.7.10/config.guess0000755000000000000000000012367213563537513014102 0ustar rootroot#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-11-04' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: cackey-0.7.10/config.h.in0000644000000000000000000001002013563537513013563 0ustar rootroot/* config.h.in. Generated from configure.ac by autoheader. */ /* Specify that DoD certificates should be made available on hardware token slots */ #undef CACKEY_CARD_SLOT_INCLUDE_EXTRA_CERTS /* Specify that DoD certificates should not be made available */ #undef CACKEY_NO_EXTRA_CERTS /* Command to run to prompt user for PIN */ #undef CACKEY_PIN_COMMAND_DEFAULT /* Command to run to prompt user for PIN only if DISPLAY environment variable is set */ #undef CACKEY_PIN_COMMAND_XONLY_DEFAULT /* Substring to match to exclude readers */ #undef CACKEY_READERS_EXCLUDE_DEFAULT /* Substring to match to include readers */ #undef CACKEY_READERS_INCLUDE_ONLY_DEFAULT /* Define to 1 if you have the header file. */ #undef HAVE_ARPA_INET_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `z' library (-lz). */ #undef HAVE_LIBZ /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define if you have the PCSC-Lite header file (you should) */ #undef HAVE_PCSCLITE_H /* Define if you have POSIX threads libraries and header files. */ #undef HAVE_PTHREAD /* Define to 1 if you have the header file. */ #undef HAVE_PTHREAD_H /* Define to 1 if you have the `SCardIsValidContext' function. */ #undef HAVE_SCARDISVALIDCONTEXT /* Define to 1 if you have the header file. */ #undef HAVE_STDARG_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_UN_H /* Define to 1 if you have the header file. */ #undef HAVE_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define if you have the PCSC-Lite header file (you should) */ #undef HAVE_WINSCARD_H /* Define if you have the PCSC-Lite header file (you should) */ #undef HAVE_WINTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_ZLIB_H /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to the necessary symbol if this constant uses a non-standard name on your system. */ #undef PTHREAD_CREATE_JOINABLE /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # undef __EXTENSIONS__ #endif /* Define to 1 if on MINIX. */ #undef _MINIX /* Define to 2 if the system does not provide POSIX.1 features except with this defined. */ #undef _POSIX_1_SOURCE /* Define to 1 if you need to in order for `stat' and other things to work. */ #undef _POSIX_SOURCE cackey-0.7.10/config.log0000644000000000000000000075030713563537513013533 0ustar rootrootThis file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by cackey configure 0.7.10, which was generated by GNU Autoconf 2.69. Invocation command line was $ ./configure ## --------- ## ## Platform. ## ## --------- ## hostname = railroad uname -m = x86_64 uname -r = 4.4.157 uname -s = Linux uname -v = #2 SMP Fri Sep 21 00:36:59 CDT 2018 /usr/bin/uname -p = AMD Phenom(tm) II X6 1055T Processor /bin/uname -X = unknown /bin/arch = x86_64 /usr/bin/arch -k = unknown /usr/convex/getsysinfo = unknown /usr/bin/hostinfo = unknown /bin/machine = unknown /usr/bin/oslevel = unknown /bin/universe = unknown PATH: /home/rkeene/bin/linux-x86_64 PATH: /home/rkeene/bin PATH: /usr/local/bin PATH: /usr/bin PATH: /bin PATH: /usr/games PATH: /usr/lib64/qt/bin PATH: /usr/share/texmf/bin PATH: /home/rkeene/bin ## ----------- ## ## Core tests. ## ## ----------- ## configure:2207: checking for gcc configure:2223: found /usr/bin/gcc configure:2234: result: gcc configure:2463: checking for C compiler version configure:2472: gcc --version >&5 gcc (GCC) 5.5.0 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. configure:2483: $? = 0 configure:2472: gcc -v >&5 Reading specs from /usr/lib64/gcc/x86_64-slackware-linux/5.5.0/specs COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-slackware-linux/5.5.0/lto-wrapper Target: x86_64-slackware-linux Configured with: ../gcc-5.5.0/configure --prefix=/usr --libdir=/usr/lib64 --mandir=/usr/man --infodir=/usr/info --enable-shared --enable-bootstrap --enable-languages=ada,c,c++,fortran,go,java,lto,objc --enable-threads=posix --enable-checking=release --enable-objc-gc --with-system-zlib --with-python-dir=/lib64/python2.7/site-packages --enable-libstdcxx-dual-abi --with-default-libstdcxx-abi=gcc4-compatible --disable-libunwind-exceptions --enable-__cxa_atexit --enable-libssp --enable-lto --disable-install-libiberty --with-gnu-ld --verbose --enable-java-home --with-java-home=/usr/lib64/jvm/jre --with-jvm-root-dir=/usr/lib64/jvm --with-jvm-jar-dir=/usr/lib64/jvm/jvm-exports --with-arch-directory=amd64 --with-antlr-jar=/tmp/slackware64-14.2/gcc/antlr-runtime-3.4.jar --enable-java-awt=gtk --disable-gtktest --disable-multilib --target=x86_64-slackware-linux --build=x86_64-slackware-linux --host=x86_64-slackware-linux Thread model: posix gcc version 5.5.0 (GCC) configure:2483: $? = 0 configure:2472: gcc -V >&5 gcc: error: unrecognized command line option '-V' gcc: fatal error: no input files compilation terminated. configure:2483: $? = 1 configure:2472: gcc -qversion >&5 gcc: error: unrecognized command line option '-qversion' gcc: fatal error: no input files compilation terminated. configure:2483: $? = 1 configure:2503: checking whether the C compiler works configure:2525: gcc conftest.c >&5 configure:2529: $? = 0 configure:2577: result: yes configure:2580: checking for C compiler default output file name configure:2582: result: a.out configure:2588: checking for suffix of executables configure:2595: gcc -o conftest conftest.c >&5 configure:2599: $? = 0 configure:2621: result: configure:2643: checking whether we are cross compiling configure:2651: gcc -o conftest conftest.c >&5 configure:2655: $? = 0 configure:2662: ./conftest configure:2666: $? = 0 configure:2681: result: no configure:2686: checking for suffix of object files configure:2708: gcc -c conftest.c >&5 configure:2712: $? = 0 configure:2733: result: o configure:2737: checking whether we are using the GNU C compiler configure:2756: gcc -c conftest.c >&5 configure:2756: $? = 0 configure:2765: result: yes configure:2774: checking whether gcc accepts -g configure:2794: gcc -c -g conftest.c >&5 configure:2794: $? = 0 configure:2835: result: yes configure:2852: checking for gcc option to accept ISO C89 configure:2915: gcc -c -g -O2 conftest.c >&5 configure:2915: $? = 0 configure:2928: result: none needed configure:2948: checking whether make sets $(MAKE) configure:2970: result: yes configure:3022: checking for a BSD-compatible install configure:3090: result: /usr/bin/ginstall -c configure:3107: checking how to run the C preprocessor configure:3138: gcc -E conftest.c configure:3138: $? = 0 configure:3152: gcc -E conftest.c conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory compilation terminated. configure:3152: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | /* end confdefs.h. */ | #include configure:3177: result: gcc -E configure:3197: gcc -E conftest.c configure:3197: $? = 0 configure:3211: gcc -E conftest.c conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory compilation terminated. configure:3211: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | /* end confdefs.h. */ | #include configure:3240: checking for grep that handles long lines and -e configure:3298: result: /usr/bin/grep configure:3303: checking for egrep configure:3365: result: /usr/bin/grep -E configure:3370: checking for ANSI C header files configure:3390: gcc -c -g -O2 conftest.c >&5 configure:3390: $? = 0 configure:3463: gcc -o conftest -g -O2 conftest.c >&5 configure:3463: $? = 0 configure:3463: ./conftest configure:3463: $? = 0 configure:3474: result: yes configure:3487: checking for sys/types.h configure:3487: gcc -c -g -O2 conftest.c >&5 configure:3487: $? = 0 configure:3487: result: yes configure:3487: checking for sys/stat.h configure:3487: gcc -c -g -O2 conftest.c >&5 configure:3487: $? = 0 configure:3487: result: yes configure:3487: checking for stdlib.h configure:3487: gcc -c -g -O2 conftest.c >&5 configure:3487: $? = 0 configure:3487: result: yes configure:3487: checking for string.h configure:3487: gcc -c -g -O2 conftest.c >&5 configure:3487: $? = 0 configure:3487: result: yes configure:3487: checking for memory.h configure:3487: gcc -c -g -O2 conftest.c >&5 configure:3487: $? = 0 configure:3487: result: yes configure:3487: checking for strings.h configure:3487: gcc -c -g -O2 conftest.c >&5 configure:3487: $? = 0 configure:3487: result: yes configure:3487: checking for inttypes.h configure:3487: gcc -c -g -O2 conftest.c >&5 configure:3487: $? = 0 configure:3487: result: yes configure:3487: checking for stdint.h configure:3487: gcc -c -g -O2 conftest.c >&5 configure:3487: $? = 0 configure:3487: result: yes configure:3487: checking for unistd.h configure:3487: gcc -c -g -O2 conftest.c >&5 configure:3487: $? = 0 configure:3487: result: yes configure:3500: checking minix/config.h usability configure:3500: gcc -c -g -O2 conftest.c >&5 conftest.c:52:26: fatal error: minix/config.h: No such file or directory compilation terminated. configure:3500: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:3500: result: no configure:3500: checking minix/config.h presence configure:3500: gcc -E conftest.c conftest.c:19:26: fatal error: minix/config.h: No such file or directory compilation terminated. configure:3500: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | /* end confdefs.h. */ | #include configure:3500: result: no configure:3500: checking for minix/config.h configure:3500: result: no configure:3521: checking whether it is safe to define __EXTENSIONS__ configure:3539: gcc -c -g -O2 conftest.c >&5 configure:3539: $? = 0 configure:3546: result: yes configure:3572: checking build system type configure:3586: result: x86_64-unknown-linux-gnu configure:3606: checking host system type configure:3619: result: x86_64-unknown-linux-gnu configure:3648: checking host operating system configure:3650: result: linux-gnu configure:3685: checking how to create shared objects configure:3711: gcc -o conftest -g -O2 -fPIC -DPIC -shared -rdynamic conftest.c >&5 configure:3711: $? = 0 configure:4079: result: -shared -rdynamic -fPIC -DPIC configure:4213: checking for the pthreads library -lpthreads configure:4246: gcc -o conftest -g -O2 conftest.c -lpthreads >&5 /usr/lib64/gcc/x86_64-slackware-linux/5.5.0/../../../../x86_64-slackware-linux/bin/ld: cannot find -lpthreads collect2: error: ld returned 1 exit status configure:4246: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | /* end confdefs.h. */ | #include | int | main () | { | pthread_t th; pthread_join(th, 0); | pthread_attr_init(0); pthread_cleanup_push(0, 0); | pthread_create(0,0,0,0); pthread_cleanup_pop(0); | ; | return 0; | } configure:4255: result: no configure:4202: checking whether pthreads work without any flags configure:4246: gcc -o conftest -g -O2 conftest.c >&5 /tmp/cc2795Ij.o: In function `main': /home/rkeene/tmp/cackey-0.7.10/conftest.c:28: undefined reference to `pthread_join' /home/rkeene/tmp/cackey-0.7.10/conftest.c:29: undefined reference to `__pthread_register_cancel' /home/rkeene/tmp/cackey-0.7.10/conftest.c:30: undefined reference to `pthread_create' /home/rkeene/tmp/cackey-0.7.10/conftest.c:30: undefined reference to `__pthread_unregister_cancel' collect2: error: ld returned 1 exit status configure:4246: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | /* end confdefs.h. */ | #include | int | main () | { | pthread_t th; pthread_join(th, 0); | pthread_attr_init(0); pthread_cleanup_push(0, 0); | pthread_create(0,0,0,0); pthread_cleanup_pop(0); | ; | return 0; | } configure:4255: result: no configure:4207: checking whether pthreads work with -Kthread configure:4246: gcc -o conftest -g -O2 -Kthread conftest.c >&5 gcc: error: unrecognized command line option '-Kthread' configure:4246: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | /* end confdefs.h. */ | #include | int | main () | { | pthread_t th; pthread_join(th, 0); | pthread_attr_init(0); pthread_cleanup_push(0, 0); | pthread_create(0,0,0,0); pthread_cleanup_pop(0); | ; | return 0; | } configure:4255: result: no configure:4207: checking whether pthreads work with -kthread configure:4246: gcc -o conftest -g -O2 -kthread conftest.c >&5 gcc: error: unrecognized command line option '-kthread' configure:4246: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | /* end confdefs.h. */ | #include | int | main () | { | pthread_t th; pthread_join(th, 0); | pthread_attr_init(0); pthread_cleanup_push(0, 0); | pthread_create(0,0,0,0); pthread_cleanup_pop(0); | ; | return 0; | } configure:4255: result: no configure:4213: checking for the pthreads library -llthread configure:4246: gcc -o conftest -g -O2 conftest.c -llthread >&5 /usr/lib64/gcc/x86_64-slackware-linux/5.5.0/../../../../x86_64-slackware-linux/bin/ld: cannot find -llthread collect2: error: ld returned 1 exit status configure:4246: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | /* end confdefs.h. */ | #include | int | main () | { | pthread_t th; pthread_join(th, 0); | pthread_attr_init(0); pthread_cleanup_push(0, 0); | pthread_create(0,0,0,0); pthread_cleanup_pop(0); | ; | return 0; | } configure:4255: result: no configure:4213: checking for the pthreads library -lpthread configure:4246: gcc -o conftest -g -O2 conftest.c -lpthread >&5 configure:4246: $? = 0 configure:4255: result: yes configure:4275: checking for joinable pthread attribute configure:4288: gcc -o conftest -g -O2 conftest.c -lpthread >&5 configure:4288: $? = 0 configure:4320: result: PTHREAD_CREATE_JOINABLE configure:4327: checking if more special flags are required for pthreads configure:4334: result: no configure:4346: checking for cc_r configure:4374: result: gcc configure:4454: checking for ar configure:4470: found /usr/bin/ar configure:4481: result: ar configure:4546: checking for ranlib configure:4562: found /usr/bin/ranlib configure:4573: result: ranlib configure:4648: checking for objcopy configure:4664: found /usr/bin/objcopy configure:4675: result: objcopy configure:4748: checking for strip configure:4764: found /usr/bin/strip configure:4775: result: strip configure:4831: checking for arpa/inet.h configure:4831: gcc -c -g -O2 conftest.c >&5 configure:4831: $? = 0 configure:4831: result: yes configure:4831: checking for inttypes.h configure:4831: result: yes configure:4831: checking for stdarg.h configure:4831: gcc -c -g -O2 conftest.c >&5 configure:4831: $? = 0 configure:4831: result: yes configure:4831: checking for stdint.h configure:4831: result: yes configure:4831: checking for stdio.h configure:4831: gcc -c -g -O2 conftest.c >&5 configure:4831: $? = 0 configure:4831: result: yes configure:4831: checking for stdlib.h configure:4831: result: yes configure:4831: checking for string.h configure:4831: result: yes configure:4831: checking for sys/socket.h configure:4831: gcc -c -g -O2 conftest.c >&5 configure:4831: $? = 0 configure:4831: result: yes configure:4831: checking for sys/types.h configure:4831: result: yes configure:4831: checking for sys/un.h configure:4831: gcc -c -g -O2 conftest.c >&5 configure:4831: $? = 0 configure:4831: result: yes configure:4831: checking for time.h configure:4831: gcc -c -g -O2 conftest.c >&5 configure:4831: $? = 0 configure:4831: result: yes configure:4831: checking for unistd.h configure:4831: result: yes configure:4831: checking for pthread.h configure:4831: gcc -c -g -O2 conftest.c >&5 configure:4831: $? = 0 configure:4831: result: yes configure:4831: checking for zlib.h configure:4831: gcc -c -g -O2 conftest.c >&5 configure:4831: $? = 0 configure:4831: result: yes configure:4831: checking for limits.h configure:4831: gcc -c -g -O2 conftest.c >&5 configure:4831: $? = 0 configure:4831: result: yes configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/usr/include/smartcard -I/usr/include/smartcard conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/usr/include/smartcard conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/usr/include/smartcard -I/usr/include/smartcard conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/usr/include/smartcard conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/usr/include/smartcard -I/usr/include/smartcard conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/usr/include/smartcard conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/usr/include/PCSC -I/usr/include/PCSC conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/usr/include/PCSC conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/usr/include/PCSC -I/usr/include/PCSC conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/usr/include/PCSC conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/usr/include/PCSC -I/usr/include/PCSC conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/usr/include/PCSC conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/usr/include/pcsc -I/usr/include/pcsc conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/usr/include/pcsc conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/usr/include/pcsc -I/usr/include/pcsc conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/usr/include/pcsc conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/usr/include/pcsc -I/usr/include/pcsc conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/usr/include/pcsc conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/usr/include/pcsclite -I/usr/include/pcsclite conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/usr/include/pcsclite conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/usr/include/pcsclite -I/usr/include/pcsclite conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/usr/include/pcsclite conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/usr/include/pcsclite -I/usr/include/pcsclite conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/usr/include/pcsclite conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/usr/include/ -I/usr/include/ conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/usr/include/ conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/usr/include/ -I/usr/include/ conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/usr/include/ conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/usr/include/ -I/usr/include/ conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/usr/include/ conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/usr/local/include/smartcard -I/usr/local/include/smartcard conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/usr/local/include/smartcard conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/usr/local/include/smartcard -I/usr/local/include/smartcard conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/usr/local/include/smartcard conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/usr/local/include/smartcard -I/usr/local/include/smartcard conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/usr/local/include/smartcard conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/usr/local/include/PCSC -I/usr/local/include/PCSC conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/usr/local/include/PCSC conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/usr/local/include/PCSC -I/usr/local/include/PCSC conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/usr/local/include/PCSC conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/usr/local/include/PCSC -I/usr/local/include/PCSC conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/usr/local/include/PCSC conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/usr/local/include/pcsc -I/usr/local/include/pcsc conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/usr/local/include/pcsc conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/usr/local/include/pcsc -I/usr/local/include/pcsc conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/usr/local/include/pcsc conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/usr/local/include/pcsc -I/usr/local/include/pcsc conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/usr/local/include/pcsc conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/usr/local/include/pcsclite -I/usr/local/include/pcsclite conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/usr/local/include/pcsclite conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/usr/local/include/pcsclite -I/usr/local/include/pcsclite conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/usr/local/include/pcsclite conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/usr/local/include/pcsclite -I/usr/local/include/pcsclite conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/usr/local/include/pcsclite conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/usr/local/include/ -I/usr/local/include/ conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/usr/local/include/ conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/usr/local/include/ -I/usr/local/include/ conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/usr/local/include/ conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/usr/local/include/ -I/usr/local/include/ conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/usr/local/include/ conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/usr/cac/include/smartcard -I/usr/cac/include/smartcard conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/usr/cac/include/smartcard conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/usr/cac/include/smartcard -I/usr/cac/include/smartcard conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/usr/cac/include/smartcard conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/usr/cac/include/smartcard -I/usr/cac/include/smartcard conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/usr/cac/include/smartcard conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/usr/cac/include/PCSC -I/usr/cac/include/PCSC conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/usr/cac/include/PCSC conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/usr/cac/include/PCSC -I/usr/cac/include/PCSC conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/usr/cac/include/PCSC conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/usr/cac/include/PCSC -I/usr/cac/include/PCSC conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/usr/cac/include/PCSC conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/usr/cac/include/pcsc -I/usr/cac/include/pcsc conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/usr/cac/include/pcsc conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/usr/cac/include/pcsc -I/usr/cac/include/pcsc conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/usr/cac/include/pcsc conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/usr/cac/include/pcsc -I/usr/cac/include/pcsc conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/usr/cac/include/pcsc conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/usr/cac/include/pcsclite -I/usr/cac/include/pcsclite conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/usr/cac/include/pcsclite conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/usr/cac/include/pcsclite -I/usr/cac/include/pcsclite conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/usr/cac/include/pcsclite conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/usr/cac/include/pcsclite -I/usr/cac/include/pcsclite conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/usr/cac/include/pcsclite conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/usr/cac/include/ -I/usr/cac/include/ conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/usr/cac/include/ conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/usr/cac/include/ -I/usr/cac/include/ conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/usr/cac/include/ conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/usr/cac/include/ -I/usr/cac/include/ conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/usr/cac/include/ conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/smartcard -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/smartcard conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/smartcard conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/smartcard -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/smartcard conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/smartcard conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/smartcard -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/smartcard conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/smartcard conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/PCSC -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/PCSC conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/PCSC conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/PCSC -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/PCSC conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/PCSC conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/PCSC -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/PCSC conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/PCSC conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/pcsc -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/pcsc conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/pcsc conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/pcsc -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/pcsc conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/pcsc conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/pcsc -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/pcsc conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/pcsc conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/pcsclite -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/pcsclite conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/pcsclite conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/pcsclite -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/pcsclite conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/pcsclite conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/pcsclite -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/pcsclite conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/pcsclite conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:4970: checking wintypes.h usability configure:4970: gcc -c -g -O2 -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/ -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/ conftest.c >&5 conftest.c:73:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4970: result: no configure:4970: checking wintypes.h presence configure:4970: gcc -E -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/ conftest.c conftest.c:40:22: fatal error: wintypes.h: No such file or directory compilation terminated. configure:4970: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4970: result: no configure:4970: checking for wintypes.h configure:4970: result: no configure:4984: checking pcsclite.h usability configure:4984: gcc -c -g -O2 -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/ -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/ conftest.c >&5 conftest.c:73:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4984: result: no configure:4984: checking pcsclite.h presence configure:4984: gcc -E -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/ conftest.c conftest.c:40:22: fatal error: pcsclite.h: No such file or directory compilation terminated. configure:4984: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4984: result: no configure:4984: checking for pcsclite.h configure:4984: result: no configure:4998: checking winscard.h usability configure:4998: gcc -c -g -O2 -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/ -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/ conftest.c >&5 conftest.c:73:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include | #ifdef HAVE_SYS_TYPES_H | # include | #endif | #ifdef HAVE_SYS_STAT_H | # include | #endif | #ifdef STDC_HEADERS | # include | # include | #else | # ifdef HAVE_STDLIB_H | # include | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include | # endif | # include | #endif | #ifdef HAVE_STRINGS_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #include configure:4998: result: no configure:4998: checking winscard.h presence configure:4998: gcc -E -I/Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/ conftest.c conftest.c:40:22: fatal error: winscard.h: No such file or directory compilation terminated. configure:4998: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | #include configure:4998: result: no configure:4998: checking for winscard.h configure:4998: result: no configure:5055: checking for how to link to PC/SC configure:5078: gcc -o conftest -g -O2 conftest.c -lpcsclite >&5 /usr/lib64/gcc/x86_64-slackware-linux/5.5.0/../../../../x86_64-slackware-linux/bin/ld: cannot find -lpcsclite collect2: error: ld returned 1 exit status configure:5078: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | | int SCardEstablishContext(void); | | int | main () | { | | int x; | | x = SCardEstablishContext(); | | ; | return 0; | } configure:5078: gcc -o conftest -g -O2 conftest.c -lpcsc-lite >&5 /usr/lib64/gcc/x86_64-slackware-linux/5.5.0/../../../../x86_64-slackware-linux/bin/ld: cannot find -lpcsc-lite collect2: error: ld returned 1 exit status configure:5078: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | | int SCardEstablishContext(void); | | int | main () | { | | int x; | | x = SCardEstablishContext(); | | ; | return 0; | } configure:5078: gcc -o conftest -g -O2 conftest.c -lpcsc >&5 /usr/lib64/gcc/x86_64-slackware-linux/5.5.0/../../../../x86_64-slackware-linux/bin/ld: cannot find -lpcsc collect2: error: ld returned 1 exit status configure:5078: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | | int SCardEstablishContext(void); | | int | main () | { | | int x; | | x = SCardEstablishContext(); | | ; | return 0; | } configure:5078: gcc -o conftest -g -O2 conftest.c /Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/PCSC >&5 gcc: error: /Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/PCSC: No such file or directory configure:5078: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | | int SCardEstablishContext(void); | | int | main () | { | | int x; | | x = SCardEstablishContext(); | | ; | return 0; | } configure:5094: result: cant configure:5097: WARNING: unable to find PCSC library, compilation will likely fail. configure:5103: checking for SCardIsValidContext configure:5103: gcc -o conftest -g -O2 conftest.c /Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/PCSC >&5 gcc: error: /Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/PCSC: No such file or directory configure:5103: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | /* Define SCardIsValidContext to an innocuous variant, in case declares SCardIsValidContext. | For example, HP-UX 11i declares gettimeofday. */ | #define SCardIsValidContext innocuous_SCardIsValidContext | | /* System header to define __stub macros and hopefully few prototypes, | which can conflict with char SCardIsValidContext (); below. | Prefer to if __STDC__ is defined, since | exists even on freestanding compilers. */ | | #ifdef __STDC__ | # include | #else | # include | #endif | | #undef SCardIsValidContext | | /* Override any GCC internal prototype to avoid an error. | Use char because int might match the return type of a GCC | builtin and then its argument prototype would still apply. */ | #ifdef __cplusplus | extern "C" | #endif | char SCardIsValidContext (); | /* The GNU C library defines this for functions which it implements | to always fail with ENOSYS. Some functions are actually named | something starting with __ and the normal name is an alias. */ | #if defined __stub_SCardIsValidContext || defined __stub___SCardIsValidContext | choke me | #endif | | int | main () | { | return SCardIsValidContext (); | ; | return 0; | } configure:5103: result: no configure:5117: checking for uncompress in -lz configure:5142: gcc -o conftest -g -O2 conftest.c -lz /Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/PCSC >&5 gcc: error: /Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/PCSC: No such file or directory configure:5142: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | | /* Override any GCC internal prototype to avoid an error. | Use char because int might match the return type of a GCC | builtin and then its argument prototype would still apply. */ | #ifdef __cplusplus | extern "C" | #endif | char uncompress (); | int | main () | { | return uncompress (); | ; | return 0; | } configure:5151: result: no configure:5163: checking if basic PC/SC program works configure:5229: gcc -o conftest -g -O2 conftest.c /Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/PCSC >&5 gcc: error: /Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/PCSC: No such file or directory configure:5229: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "cackey" | #define PACKAGE_TARNAME "cackey" | #define PACKAGE_VERSION "0.7.10" | #define PACKAGE_STRING "cackey 0.7.10" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_PTHREAD 1 | #define HAVE_ARPA_INET_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDARG_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_SYS_SOCKET_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_UN_H 1 | #define HAVE_TIME_H 1 | #define HAVE_UNISTD_H 1 | #define HAVE_PTHREAD_H 1 | #define HAVE_ZLIB_H 1 | #define HAVE_LIMITS_H 1 | /* end confdefs.h. */ | | #ifdef HAVE_WINTYPES_H | # include | #endif | #ifdef HAVE_PCSCLITE_H | # include | #endif | #ifdef HAVE_WINSCARD_H | # include | #endif | #ifdef HAVE_STDINT_H | # include | #endif | #ifdef HAVE_INTTYPES_H | # include | #endif | #ifdef HAVE_STDLIB_H | # include | #endif | #ifdef HAVE_UNISTD_H | # include | #endif | #ifdef HAVE_STRING_H | # include | #endif | #ifdef HAVE_PTHREAD_H | # include | #endif | #ifdef HAVE_LIMITS_H | # include | #endif | #ifdef HAVE_STDIO_H | # include | #endif | #ifdef HAVE_ZLIB_H | # ifdef HAVE_LIBZ | # include | # endif | #endif | | int | main () | { | | LPSCARDHANDLE hCard; | SCARDCONTEXT hContext; | DWORD dwActiveProtocol; | LONG scard_conn_ret, scard_est_context_ret; | | scard_est_context_ret = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext); | | hCard = NULL; | scard_conn_ret = SCardConnect(hContext, "Reader X", SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0, hCard, &dwActiveProtocol); | | ; | return 0; | } configure:5243: result: failed configure:5247: error: in `/home/rkeene/tmp/cackey-0.7.10': configure:5249: error: simple PC/SC program failed See `config.log' for more details ## ---------------- ## ## Cache variables. ## ## ---------------- ## ac_cv_build=x86_64-unknown-linux-gnu ac_cv_c_compiler_gnu=yes ac_cv_env_CC_set= ac_cv_env_CC_value= ac_cv_env_CFLAGS_set= ac_cv_env_CFLAGS_value= ac_cv_env_CPPFLAGS_set= ac_cv_env_CPPFLAGS_value= ac_cv_env_CPP_set= ac_cv_env_CPP_value= ac_cv_env_LDFLAGS_set= ac_cv_env_LDFLAGS_value= ac_cv_env_LIBS_set= ac_cv_env_LIBS_value= ac_cv_env_build_alias_set= ac_cv_env_build_alias_value= ac_cv_env_host_alias_set= ac_cv_env_host_alias_value= ac_cv_env_target_alias_set= ac_cv_env_target_alias_value= ac_cv_func_SCardIsValidContext=no ac_cv_header_arpa_inet_h=yes ac_cv_header_inttypes_h=yes ac_cv_header_limits_h=yes ac_cv_header_memory_h=yes ac_cv_header_minix_config_h=no ac_cv_header_pcsclite_h=no ac_cv_header_pthread_h=yes ac_cv_header_stdarg_h=yes ac_cv_header_stdc=yes ac_cv_header_stdint_h=yes ac_cv_header_stdio_h=yes ac_cv_header_stdlib_h=yes ac_cv_header_string_h=yes ac_cv_header_strings_h=yes ac_cv_header_sys_socket_h=yes ac_cv_header_sys_stat_h=yes ac_cv_header_sys_types_h=yes ac_cv_header_sys_un_h=yes ac_cv_header_time_h=yes ac_cv_header_unistd_h=yes ac_cv_header_winscard_h=no ac_cv_header_wintypes_h=no ac_cv_header_zlib_h=yes ac_cv_host=x86_64-unknown-linux-gnu ac_cv_lib_z_uncompress=no ac_cv_objext=o ac_cv_path_EGREP='/usr/bin/grep -E' ac_cv_path_GREP=/usr/bin/grep ac_cv_path_install='/usr/bin/ginstall -c' ac_cv_prog_CPP='gcc -E' ac_cv_prog_PTHREAD_CC=gcc ac_cv_prog_ac_ct_AR=ar ac_cv_prog_ac_ct_CC=gcc ac_cv_prog_ac_ct_OBJCOPY=objcopy ac_cv_prog_ac_ct_RANLIB=ranlib ac_cv_prog_ac_ct_STRIP=strip ac_cv_prog_cc_c89= ac_cv_prog_cc_g=yes ac_cv_prog_make_make_set=yes ac_cv_safe_to_define___extensions__=yes cackey_cv_pcsc_works=failed ## ----------------- ## ## Output variables. ## ## ----------------- ## AR='ar' AREXT='a' CC='gcc' CFLAGS='-g -O2' CPP='gcc -E' CPPFLAGS='' DEFAULT_TARGET='shared' DEFS='' ECHO_C='' ECHO_N='-n' ECHO_T='' EGREP='/usr/bin/grep -E' EXEEXT='' GREP='/usr/bin/grep' INSTALL_DATA='${INSTALL} -m 644' INSTALL_PROGRAM='${INSTALL}' INSTALL_SCRIPT='${INSTALL}' LDFLAGS='' LIBOBJS='' LIBS=' /Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/PCSC' LTLIBOBJS='' OBJCOPY='objcopy' OBJEXT='o' PACKAGE_BUGREPORT='' PACKAGE_NAME='cackey' PACKAGE_STRING='cackey 0.7.10' PACKAGE_TARNAME='cackey' PACKAGE_URL='' PACKAGE_VERSION='0.7.10' PATH_SEPARATOR=':' PTHREAD_CC='gcc' PTHREAD_CFLAGS='' PTHREAD_LIBS='-lpthread' RANLIB='ranlib' REMOVESYMS='objcopy --discard-all' SET_MAKE='' SHELL='/bin/sh' SHLIBOBJS='' SHOBJEXT='so' SHOBJFLAGS='-fPIC -DPIC' SHOBJLDFLAGS='-shared -rdynamic' STRIP='strip' SYMPREFIX='' WEAKENSYMS='objcopy --keep-global-symbols=libcackey.syms' ac_ct_CC='gcc' ac_ct_OBJCOPY='objcopy' ac_ct_STRIP='strip' bindir='${exec_prefix}/bin' build='x86_64-unknown-linux-gnu' build_alias='' build_cpu='x86_64' build_os='linux-gnu' build_vendor='unknown' datadir='${datarootdir}' datarootdir='${prefix}/share' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' dvidir='${docdir}' exec_prefix='NONE' host='x86_64-unknown-linux-gnu' host_alias='' host_cpu='x86_64' host_os='linux-gnu' host_vendor='unknown' htmldir='${docdir}' includedir='${prefix}/include' infodir='${datarootdir}/info' libdir='${exec_prefix}/lib' libexecdir='${exec_prefix}/libexec' localedir='${datarootdir}/locale' localstatedir='${prefix}/var' mandir='${datarootdir}/man' oldincludedir='/usr/include' pdfdir='${docdir}' prefix='NONE' program_transform_name='s,x,x,' psdir='${docdir}' sbindir='${exec_prefix}/sbin' sharedstatedir='${prefix}/com' sysconfdir='${prefix}/etc' target_alias='' ## ----------- ## ## confdefs.h. ## ## ----------- ## /* confdefs.h */ #define PACKAGE_NAME "cackey" #define PACKAGE_TARNAME "cackey" #define PACKAGE_VERSION "0.7.10" #define PACKAGE_STRING "cackey 0.7.10" #define PACKAGE_BUGREPORT "" #define PACKAGE_URL "" #define STDC_HEADERS 1 #define HAVE_SYS_TYPES_H 1 #define HAVE_SYS_STAT_H 1 #define HAVE_STDLIB_H 1 #define HAVE_STRING_H 1 #define HAVE_MEMORY_H 1 #define HAVE_STRINGS_H 1 #define HAVE_INTTYPES_H 1 #define HAVE_STDINT_H 1 #define HAVE_UNISTD_H 1 #define __EXTENSIONS__ 1 #define _ALL_SOURCE 1 #define _GNU_SOURCE 1 #define _POSIX_PTHREAD_SEMANTICS 1 #define _TANDEM_SOURCE 1 #define HAVE_PTHREAD 1 #define HAVE_ARPA_INET_H 1 #define HAVE_INTTYPES_H 1 #define HAVE_STDARG_H 1 #define HAVE_STDINT_H 1 #define HAVE_STDIO_H 1 #define HAVE_STDLIB_H 1 #define HAVE_STRING_H 1 #define HAVE_SYS_SOCKET_H 1 #define HAVE_SYS_TYPES_H 1 #define HAVE_SYS_UN_H 1 #define HAVE_TIME_H 1 #define HAVE_UNISTD_H 1 #define HAVE_PTHREAD_H 1 #define HAVE_ZLIB_H 1 #define HAVE_LIMITS_H 1 configure: exit 1 cackey-0.7.10/config.sub0000755000000000000000000010622313563537513013536 0ustar rootroot#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-12-03' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: cackey-0.7.10/configure0000755000000000000000000055725613563537513013502 0ustar rootroot#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for cackey 0.7.10. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='cackey' PACKAGE_TARNAME='cackey' PACKAGE_VERSION='0.7.10' PACKAGE_STRING='cackey 0.7.10' PACKAGE_BUGREPORT='' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS SYMPREFIX REMOVESYMS WEAKENSYMS ac_ct_STRIP STRIP ac_ct_OBJCOPY OBJCOPY RANLIB AR PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_CC SHLIBOBJS DEFAULT_TARGET AREXT SHOBJLDFLAGS SHOBJFLAGS SHOBJEXT host_os host_vendor host_cpu host build_os build_vendor build_cpu build EGREP GREP CPP INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM SET_MAKE OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_pcsc_headers with_pcsc_libs enable_dod_certs_on_hw_slots enable_dod_certs with_pin_command with_pin_command_x with_readers_include_only with_readers_exclude ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures cackey 0.7.10 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/cackey] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of cackey 0.7.10:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-dod-certs-on-hw-slots Specify that DoD certificates should be made available on hardware token slots --disable-dod-certs Disable including DoD certs entirely. The user may override this with the CACKEY_EXTRA_CERTS environment variable. Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pcsc-headers= Specify a path to look for PC/SC Headers --with-pcsc-libs= Specify PC/SC Libraries (e.g., -lpcsclite) --with-pin-command= Specify a command to run to request a PIN from the user. The user may override this with the CACKEY_PIN_COMMAND environment variable. --with-pin-command-x= Same as --with-pin-command, but only sets Protected Authentication Path if the DISPLAY environment variable is set --with-readers-include-only= Specify a string to match in a reader to include it, all other readers will be excluded. The user may override this with the CACKEY_READERS_INCLUDE_ONLY environment variable. --with-readers-exclude= Specify a string to match in a reader to exclude it, all other readers will be included. The user may override this with the CACKEY_READERS_EXCLUDE environment variable. Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF cackey configure 0.7.10 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by cackey $as_me 0.7.10, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" if test "x$ac_cv_header_minix_config_h" = xyes; then : MINIX=yes else MINIX= fi if test "$MINIX" = yes; then $as_echo "#define _POSIX_SOURCE 1" >>confdefs.h $as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h $as_echo "#define _MINIX 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 $as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } if ${ac_cv_safe_to_define___extensions__+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ # define __EXTENSIONS__ 1 $ac_includes_default int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_safe_to_define___extensions__=yes else ac_cv_safe_to_define___extensions__=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 $as_echo "$ac_cv_safe_to_define___extensions__" >&6; } test $ac_cv_safe_to_define___extensions__ = yes && $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h $as_echo "#define _ALL_SOURCE 1" >>confdefs.h $as_echo "#define _GNU_SOURCE 1" >>confdefs.h $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host operating system" >&5 $as_echo_n "checking host operating system... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $host_os" >&5 $as_echo "$host_os" >&6; } SHOBJEXT="so" AREXT="a" case $host_os in darwin*) SHOBJEXT="dylib" ;; hpux*) SHOBJEXT="sl" ;; mingw32|mingw32msvc*) SHOBJEXT="dll" SHOBJFLAGS="-DPIC" CFLAGS="$CFLAGS -mms-bitfields" CPPFLAGS="$CPPFLAGS -mms-bitfields" SHOBJLDFLAGS='-shared -Wl,--dll -Wl,--enable-auto-image-base -Wl,--output-def,$@.def,--out-implib,$@.a' ;; cygwin*) SHOBJEXT="dll" SHOBJFLAGS="-fPIC -DPIC" CFLAGS="$CFLAGS -mms-bitfields" CPPFLAGS="$CPPFLAGS -mms-bitfields" SHOBJLDFLAGS='-shared -Wl,--enable-auto-image-base -Wl,--output-def,$@.def,--out-implib,$@.a' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create shared objects" >&5 $as_echo_n "checking how to create shared objects... " >&6; } DEFAULT_TARGET=shared if test -z "$SHOBJFLAGS" -a -z "$SHOBJLDFLAGS"; then OLD_LDFLAGS="$LDFLAGS" SHOBJFLAGS="" LDFLAGS="$OLD_LDFLAGS -fPIC -DPIC -shared -rdynamic" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int unrestst(void); int main () { printf("okay\n"); unrestst(); return(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : SHOBJFLAGS="-fPIC -DPIC"; SHOBJLDFLAGS="-shared -rdynamic" else LDFLAGS="$OLD_LDFLAGS" OLD_LDFLAGS="$LDFLAGS" SHOBJFLAGS="" LDFLAGS="$OLD_LDFLAGS -fPIC -DPIC -shared" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int unrestst(void); int main () { printf("okay\n"); unrestst(); return(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : SHOBJFLAGS="-fPIC -DPIC"; SHOBJLDFLAGS="-shared" else LDFLAGS="$OLD_LDFLAGS" OLD_LDFLAGS="$LDFLAGS" SHOBJFLAGS="" LDFLAGS="$OLD_LDFLAGS -fPIC -DPIC -shared -rdynamic -mimpure-text" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int unrestst(void); int main () { printf("okay\n"); unrestst(); return(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : SHOBJFLAGS="-fPIC -DPIC"; SHOBJLDFLAGS="-shared -rdynamic -mimpure-text" else LDFLAGS="$OLD_LDFLAGS" OLD_LDFLAGS="$LDFLAGS" SHOBJFLAGS="" LDFLAGS="$OLD_LDFLAGS -fPIC -DPIC -shared -mimpure-text" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int unrestst(void); int main () { printf("okay\n"); unrestst(); return(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : SHOBJFLAGS="-fPIC -DPIC"; SHOBJLDFLAGS="-shared -mimpure-text" else LDFLAGS="$OLD_LDFLAGS" OLD_LDFLAGS="$LDFLAGS" SHOBJFLAGS="" LDFLAGS="$OLD_LDFLAGS -fPIC -DPIC -shared -rdynamic -Wl,-G,-z,textoff" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int unrestst(void); int main () { printf("okay\n"); unrestst(); return(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : SHOBJFLAGS="-fPIC -DPIC"; SHOBJLDFLAGS="-shared -rdynamic -Wl,-G,-z,textoff" else LDFLAGS="$OLD_LDFLAGS" OLD_LDFLAGS="$LDFLAGS" SHOBJFLAGS="" LDFLAGS="$OLD_LDFLAGS -fPIC -DPIC -shared -Wl,-G,-z,textoff" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int unrestst(void); int main () { printf("okay\n"); unrestst(); return(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : SHOBJFLAGS="-fPIC -DPIC"; SHOBJLDFLAGS="-shared -Wl,-G,-z,textoff" else LDFLAGS="$OLD_LDFLAGS" OLD_LDFLAGS="$LDFLAGS" SHOBJFLAGS="" LDFLAGS="$OLD_LDFLAGS -fPIC -DPIC -shared -dynamiclib -flat_namespace -undefined suppress -bind_at_load" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int unrestst(void); int main () { printf("okay\n"); unrestst(); return(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : SHOBJFLAGS="-fPIC -DPIC"; SHOBJLDFLAGS="-shared -dynamiclib -flat_namespace -undefined suppress -bind_at_load" else LDFLAGS="$OLD_LDFLAGS" OLD_LDFLAGS="$LDFLAGS" SHOBJFLAGS="" LDFLAGS="$OLD_LDFLAGS -fPIC -DPIC -dynamiclib -flat_namespace -undefined suppress -bind_at_load" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int unrestst(void); int main () { printf("okay\n"); unrestst(); return(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : SHOBJFLAGS="-fPIC -DPIC"; SHOBJLDFLAGS="-dynamiclib -flat_namespace -undefined suppress -bind_at_load" else LDFLAGS="$OLD_LDFLAGS" OLD_LDFLAGS="$LDFLAGS" SHOBJFLAGS="" LDFLAGS="$OLD_LDFLAGS -fPIC -DPIC -Wl,-dynamiclib -Wl,-flat_namespace -Wl,-undefined,suppress -Wl,-bind_at_load" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int unrestst(void); int main () { printf("okay\n"); unrestst(); return(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : SHOBJFLAGS="-fPIC -DPIC"; SHOBJLDFLAGS="-Wl,-dynamiclib -Wl,-flat_namespace -Wl,-undefined,suppress -Wl,-bind_at_load" else LDFLAGS="$OLD_LDFLAGS" OLD_LDFLAGS="$LDFLAGS" SHOBJFLAGS="" LDFLAGS="$OLD_LDFLAGS -fPIC -DPIC -dynamiclib -flat_namespace -undefined suppress" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int unrestst(void); int main () { printf("okay\n"); unrestst(); return(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : SHOBJFLAGS="-fPIC -DPIC"; SHOBJLDFLAGS="-dynamiclib -flat_namespace -undefined suppress" else LDFLAGS="$OLD_LDFLAGS" OLD_LDFLAGS="$LDFLAGS" SHOBJFLAGS="" LDFLAGS="$OLD_LDFLAGS -fPIC -DPIC -dynamiclib" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int unrestst(void); int main () { printf("okay\n"); unrestst(); return(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : SHOBJFLAGS="-fPIC -DPIC"; SHOBJLDFLAGS="-dynamiclib" else LDFLAGS="$OLD_LDFLAGS" DEFAULT_TARGET=static fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$OLD_LDFLAGS" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$OLD_LDFLAGS" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$OLD_LDFLAGS" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$OLD_LDFLAGS" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$OLD_LDFLAGS" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$OLD_LDFLAGS" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$OLD_LDFLAGS" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$OLD_LDFLAGS" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$OLD_LDFLAGS" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$OLD_LDFLAGS" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$OLD_LDFLAGS" fi if test "$DEFAULT_TARGET" = 'shared' ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHOBJLDFLAGS $SHOBJFLAGS" >&5 $as_echo "$SHOBJLDFLAGS $SHOBJFLAGS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: cant -- result will be a static archive" >&5 $as_echo "cant -- result will be a static archive" >&6; } fi SHLIBOBJS="" for obj in $LIBOBJS; do SHLIBOBJS="$SHLIBOBJS `echo $obj | sed 's/\.o$/_shr.o/g'`" done ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu acx_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 $as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_join (); int main () { return pthread_join (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : acx_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 $as_echo "$acx_pthread_ok" >&6; } if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all. acx_pthread_flags="pthreads none -Kthread -kthread lthread pthread -pthread -pthreads -mthreads --thread-safe -mt" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # pthread: Linux, etcetera # --thread-safe: KAI C++ case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthread or # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags" ;; esac if test x"$acx_pthread_ok" = xno; then for flag in $acx_pthread_flags; do case $flag in none) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 $as_echo_n "checking whether pthreads work without any flags... " >&6; } ;; -*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 $as_echo_n "checking whether pthreads work with $flag... " >&6; } PTHREAD_CFLAGS="$flag" ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 $as_echo_n "checking for the pthreads library -l$flag... " >&6; } PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : acx_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 $as_echo "$acx_pthread_ok" >&6; } if test "x$acx_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$acx_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: threads are created detached by default # and the JOINABLE attribute has a nonstandard name (UNDETACHED). { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 $as_echo_n "checking for joinable pthread attribute... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int attr=PTHREAD_CREATE_JOINABLE; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ok=PTHREAD_CREATE_JOINABLE else ok=unknown fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test x"$ok" = xunknown; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int attr=PTHREAD_CREATE_UNDETACHED; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ok=PTHREAD_CREATE_UNDETACHED else ok=unknown fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then $as_echo "#define PTHREAD_CREATE_JOINABLE \$ok" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ok}" >&5 $as_echo "${ok}" >&6; } if test x"$ok" = xunknown; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: we do not know how to create joinable pthreads" >&5 $as_echo "$as_me: WARNING: we do not know how to create joinable pthreads" >&2;} fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 $as_echo_n "checking if more special flags are required for pthreads... " >&6; } flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 $as_echo "${flag}" >&6; } if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with cc_r # Extract the first word of "cc_r", so it can be a program name with args. set dummy cc_r; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_PTHREAD_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_PTHREAD_CC="cc_r" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_PTHREAD_CC" && ac_cv_prog_PTHREAD_CC="${CC}" fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 $as_echo "$PTHREAD_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else PTHREAD_CC="$CC" fi # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then $as_echo "#define HAVE_PTHREAD 1" >>confdefs.h : else acx_pthread_ok=no { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Can not figure out how to compile with pthreads support, run-time will likely fail." >&5 $as_echo "$as_me: WARNING: Can not figure out how to compile with pthreads support, run-time will likely fail." >&2;} fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="${ac_tool_prefix}ar" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="ar" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi SYMFILE="libcackey.syms" if test -n "$ac_tool_prefix"; then for ac_prog in objcopy gobjcopy do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJCOPY+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJCOPY"; then ac_cv_prog_OBJCOPY="$OBJCOPY" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJCOPY="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJCOPY=$ac_cv_prog_OBJCOPY if test -n "$OBJCOPY"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJCOPY" >&5 $as_echo "$OBJCOPY" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$OBJCOPY" && break done fi if test -z "$OBJCOPY"; then ac_ct_OBJCOPY=$OBJCOPY for ac_prog in objcopy gobjcopy do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJCOPY+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJCOPY"; then ac_cv_prog_ac_ct_OBJCOPY="$ac_ct_OBJCOPY" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJCOPY="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJCOPY=$ac_cv_prog_ac_ct_OBJCOPY if test -n "$ac_ct_OBJCOPY"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJCOPY" >&5 $as_echo "$ac_ct_OBJCOPY" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_OBJCOPY" && break done if test "x$ac_ct_OBJCOPY" = x; then OBJCOPY="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJCOPY=$ac_ct_OBJCOPY fi fi if test -n "$ac_tool_prefix"; then for ac_prog in strip gstrip do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$STRIP" && break done fi if test -z "$STRIP"; then ac_ct_STRIP=$STRIP for ac_prog in strip gstrip do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_STRIP" && break done if test "x$ac_ct_STRIP" = x; then STRIP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi fi if test "x${STRIP}" = "xfalse"; then STRIP="${OBJCOPY}" fi WEAKENSYMS='true' REMOVESYMS='true' SYMPREFIX='' case $host_os in darwin*) REMOVESYMS="${STRIP} -i -u -s ${SYMFILE}" SYMPREFIX="_" ;; *) if test "x${OBJCOPY}" != "xfalse"; then WEAKENSYMS="${OBJCOPY} --keep-global-symbols=${SYMFILE}" REMOVESYMS="${OBJCOPY} --discard-all" elif test "x${STRIP}" != "xfalse"; then REMOVESYMS="${STRIP} -x" fi ;; esac for ac_header in arpa/inet.h inttypes.h stdarg.h stdint.h stdio.h stdlib.h string.h sys/socket.h sys/types.h sys/un.h time.h unistd.h pthread.h zlib.h limits.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " #ifdef HAVE_ARPA_INET_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDARG_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_SYS_SOCKET_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_UN_H # include #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_TIME_H # include #endif #ifdef HAVE_PTHREAD_H # include #endif #ifdef HAVE_LIMITS_H # include #endif #ifdef HAVE_ZLIB_H # include #endif " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Required header missing, compilation will likely fail." >&5 $as_echo "$as_me: WARNING: Required header missing, compilation will likely fail." >&2;} fi done # Check whether --with-pcsc-headers was given. if test "${with_pcsc_headers+set}" = set; then : withval=$with_pcsc_headers; manualheaders="${withval}" else manualheaders="no" fi if test "${manualheaders}" != "no"; then CFLAGS="${CFLAGS} -I${manualheaders}" CPPFLAGS="${CPPFLAGS} -I${manualheaders}" ac_fn_c_check_header_mongrel "$LINENO" "wintypes.h" "ac_cv_header_wintypes_h" "$ac_includes_default" if test "x$ac_cv_header_wintypes_h" = xyes; then : $as_echo "#define HAVE_WINTYPES_H 1" >>confdefs.h fi ac_fn_c_check_header_mongrel "$LINENO" "pcsclite.h" "ac_cv_header_pcsclite_h" "$ac_includes_default" if test "x$ac_cv_header_pcsclite_h" = xyes; then : $as_echo "#define HAVE_PCSCLITE_H 1" >>confdefs.h fi ac_fn_c_check_header_mongrel "$LINENO" "winscard.h" "ac_cv_header_winscard_h" "$ac_includes_default" if test "x$ac_cv_header_winscard_h" = xyes; then : $as_echo "#define HAVE_WINSCARD_H 1" >>confdefs.h fi else SAVE_CFLAGS="${CFLAGS}" SAVE_CPPFLAGS="${CPPFLAGS}" ADD_CFLAGS="" ADD_CPPFLAGS="" found_pcsclite=0 found_winscard=0 found_wintypes=0 for headerpath in /usr/include /usr/local/include /usr/cac/include /Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/Versions/A/Headers; do for subdir in smartcard PCSC pcsc pcsclite ""; do headerdir="${headerpath}/${subdir}" CFLAGS="${SAVE_CFLAGS} -I${headerdir}" CPPFLAGS="${SAVE_CPPFLAGS} -I${headerdir}" unset ac_cv_header_pcsclite_h unset ac_cv_header_winscard_h unset ac_cv_header_wintypes_h just_found_pcsclite=0 just_found_winscard=0 just_found_wintypes=0 ac_fn_c_check_header_mongrel "$LINENO" "wintypes.h" "ac_cv_header_wintypes_h" "$ac_includes_default" if test "x$ac_cv_header_wintypes_h" = xyes; then : $as_echo "#define HAVE_WINTYPES_H 1" >>confdefs.h found_wintypes=1 just_found_wintypes=1 fi ac_fn_c_check_header_mongrel "$LINENO" "pcsclite.h" "ac_cv_header_pcsclite_h" "$ac_includes_default" if test "x$ac_cv_header_pcsclite_h" = xyes; then : $as_echo "#define HAVE_PCSCLITE_H 1" >>confdefs.h found_pcsclite=1 just_found_pcsclite=1 fi ac_fn_c_check_header_mongrel "$LINENO" "winscard.h" "ac_cv_header_winscard_h" "$ac_includes_default" if test "x$ac_cv_header_winscard_h" = xyes; then : $as_echo "#define HAVE_WINSCARD_H 1" >>confdefs.h found_winscard=1 just_found_winscard=1 fi if test "${just_found_pcsclite}" = 1 -a "${just_found_winscard}" = 1 -a "${just_found_wintypes}" = 1; then ADD_CFLAGS=" -I${headerdir}" ADD_CPPFLAGS=" -I${headerdir}" fi if test "${found_pcsclite}" = 1 -a "${found_winscard}" = 1 -a "${found_wintypes}" = 1; then break fi done if test -n "${ADD_CFLAGS}" -o -n "${ADD_CPPFLAGS}"; then break fi done CFLAGS="${SAVE_CFLAGS}${ADD_CFLAGS}" CPPFLAGS="${SAVE_CPPFLAGS}${ADD_CPPFLAGS}" fi # Check whether --with-pcsc-libs was given. if test "${with_pcsc_libs+set}" = set; then : withval=$with_pcsc_libs; manuallibs="${withval}" else manuallibs="no" fi if test "${manuallibs}" != "no"; then LIBS="${LIBS} ${manuallibs}" else foundlib="0" SAVELIBS="${LIBS}" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for how to link to PC/SC" >&5 $as_echo_n "checking for how to link to PC/SC... " >&6; } for lib in -lpcsclite -lpcsc-lite -lpcsc /Developer/SDKs/*/System/Library/Frameworks/PCSC.framework/PCSC; do LIBS="${SAVELIBS} ${lib}" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int SCardEstablishContext(void); int main () { int x; x = SCardEstablishContext(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lib}" >&5 $as_echo "${lib}" >&6; } LIBS="${SAVELIBS} ${lib}" foundlib="1" break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done if test "${foundlib}" = "0"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: cant" >&5 $as_echo "cant" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unable to find PCSC library, compilation will likely fail." >&5 $as_echo "$as_me: WARNING: unable to find PCSC library, compilation will likely fail." >&2;} fi for ac_func in SCardIsValidContext do : ac_fn_c_check_func "$LINENO" "SCardIsValidContext" "ac_cv_func_SCardIsValidContext" if test "x$ac_cv_func_SCardIsValidContext" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SCARDISVALIDCONTEXT 1 _ACEOF fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uncompress in -lz" >&5 $as_echo_n "checking for uncompress in -lz... " >&6; } if ${ac_cv_lib_z_uncompress+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char uncompress (); int main () { return uncompress (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_uncompress=yes else ac_cv_lib_z_uncompress=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_uncompress" >&5 $as_echo "$ac_cv_lib_z_uncompress" >&6; } if test "x$ac_cv_lib_z_uncompress" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBZ 1 _ACEOF LIBS="-lz $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if basic PC/SC program works" >&5 $as_echo_n "checking if basic PC/SC program works... " >&6; } if ${cackey_cv_pcsc_works+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef HAVE_WINTYPES_H # include #endif #ifdef HAVE_PCSCLITE_H # include #endif #ifdef HAVE_WINSCARD_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_PTHREAD_H # include #endif #ifdef HAVE_LIMITS_H # include #endif #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_ZLIB_H # ifdef HAVE_LIBZ # include # endif #endif int main () { LPSCARDHANDLE hCard; SCARDCONTEXT hContext; DWORD dwActiveProtocol; LONG scard_conn_ret, scard_est_context_ret; scard_est_context_ret = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext); hCard = NULL; scard_conn_ret = SCardConnect(hContext, "Reader X", SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0, hCard, &dwActiveProtocol); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : cackey_cv_pcsc_works=okay else cackey_cv_pcsc_works=failed fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cackey_cv_pcsc_works" >&5 $as_echo "$cackey_cv_pcsc_works" >&6; } if test "$cackey_cv_pcsc_works" = 'failed'; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "simple PC/SC program failed See \`config.log' for more details" "$LINENO" 5; } fi # Check whether --enable-dod-certs-on-hw-slots was given. if test "${enable_dod_certs_on_hw_slots+set}" = set; then : enableval=$enable_dod_certs_on_hw_slots; dodcertsonhwslots=$enableval else dodcertsonhwslots=no fi if ! test "${dodcertsonhwslots}" = 'no'; then $as_echo "#define CACKEY_CARD_SLOT_INCLUDE_EXTRA_CERTS 1" >>confdefs.h fi # Check whether --enable-dod-certs was given. if test "${enable_dod_certs+set}" = set; then : enableval=$enable_dod_certs; dodcerts=$enableval else dodcerts=yes fi if test "${dodcerts}" = 'no'; then $as_echo "#define CACKEY_NO_EXTRA_CERTS 1" >>confdefs.h fi # Check whether --with-pin-command was given. if test "${with_pin_command+set}" = set; then : withval=$with_pin_command; pincommand="${withval}" else pincommand="no" fi # Check whether --with-pin-command-x was given. if test "${with_pin_command_x+set}" = set; then : withval=$with_pin_command_x; pincommandxonly="${withval}" else pincommandxonly="no" fi if ! test "${pincommand}" = 'no'; then cat >>confdefs.h <<_ACEOF #define CACKEY_PIN_COMMAND_DEFAULT $pincommand _ACEOF fi if ! test "${pincommandxonly}" = 'no'; then cat >>confdefs.h <<_ACEOF #define CACKEY_PIN_COMMAND_XONLY_DEFAULT $pincommandxonly _ACEOF fi # Check whether --with-readers-include-only was given. if test "${with_readers_include_only+set}" = set; then : withval=$with_readers_include_only; readers_include_only="${withval}" else readers_include_only="no" fi # Check whether --with-readers-exclude was given. if test "${with_readers_exclude+set}" = set; then : withval=$with_readers_exclude; readers_exclude="${withval}" else readers_exclude="no" fi if ! test "${readers_include_only}" = 'no'; then cat >>confdefs.h <<_ACEOF #define CACKEY_READERS_INCLUDE_ONLY_DEFAULT $readers_include_only _ACEOF fi if ! test "${readers_exclude}" = 'no'; then cat >>confdefs.h <<_ACEOF #define CACKEY_READERS_EXCLUDE_DEFAULT $readers_exclude _ACEOF fi VERSIONSCRIPT="libcackey.vers" SYMFILE="libcackey.syms" delete_symfile='0' if test ! -f "${SYMFILE}"; then delete_symfile='1' echo '' > "${SYMFILE}" fi SAVE_LDFLAGS="${LDFLAGS}" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for how to set version script" >&5 $as_echo_n "checking for how to set version script... " >&6; } for tryaddldflags in "-Wl,--version-script -Wl,${VERSIONSCRIPT}" "-Wl,-exported_symbols_list -Wl,${SYMFILE}"; do LDFLAGS="${SAVE_LDFLAGS} ${tryaddldflags}" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : addldflags="${tryaddldflags}" break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done if test "${delete_symfile}" = "1"; then rm -f "${SYMFILE}" fi if test -n "${addldflags}"; then LDFLAGS="${SAVE_LDFLAGS} ${addldflags}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $addldflags" >&5 $as_echo "$addldflags" >&6; } else LDFLAGS="${SAVE_LDFLAGS}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: don't know" >&5 $as_echo "don't know" >&6; } fi OLD_LDFLAGS="$LDFLAGS" for tryrpath in "-Wl,-rpath" "-Wl,--rpath" "-Wl,-R"; do LDFLAGS="$OLD_LDFLAGS $tryrpath -Wl,/tmp" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : rpathldflags="$tryrpath" break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done unset tryrpath LDFLAGS="$OLD_LDFLAGS" unset OLD_LDFLAGS ADDLDFLAGS="" for opt in $LDFLAGS; do if echo "$opt" | grep '^-L' >/dev/null; then rpathdir=`echo "$opt" | sed 's@^-L *@@'` ADDLDFLAGS="$ADDLDFLAGS $rpathldflags -Wl,$rpathdir" fi done unset opt rpathldflags LDFLAGS="$LDFLAGS $ADDLDFLAGS" unset ADDLDFLAGS SHLIBOBJS="" for obj in $LIBOBJS; do SHLIBOBJS="$SHLIBOBJS `echo $obj | sed 's/\.o$/_shr.o/g'`" done ac_config_files="$ac_config_files Makefile libcackey.syms" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by cackey $as_me 0.7.10, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ cackey config.status 0.7.10 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "libcackey.syms") CONFIG_FILES="$CONFIG_FILES libcackey.syms" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi cackey-0.7.10/configure.ac0000644000000000000000000001424413563537513014042 0ustar rootrootAC_INIT(cackey, 0.7.10) AC_CONFIG_HEADERS(config.h) dnl Locate standard tools AC_PROG_CC AC_PROG_MAKE_SET AC_PROG_INSTALL AC_AIX AC_LANG(C) dnl Determine this platform DC_CHK_OS_INFO dnl Determine how to create shared objects on this platform DC_GET_SHOBJFLAGS ACX_PTHREAD(, [ AC_MSG_WARN([Can not figure out how to compile with pthreads support, run-time will likely fail.]) ]) dnl Determine how to create static archives on this platform AC_CHECK_TOOL(AR, ar) AC_CHECK_TOOL(RANLIB, ranlib) dnl Determine how to strip executables and remove symbols DC_FIND_STRIP_AND_REMOVESYMS(libcackey.syms) dnl Check for all required headers AC_CHECK_HEADERS(arpa/inet.h inttypes.h stdarg.h stdint.h stdio.h stdlib.h string.h sys/socket.h sys/types.h sys/un.h time.h unistd.h pthread.h zlib.h limits.h,,[ AC_WARN([Required header missing, compilation will likely fail.]) ], [ #ifdef HAVE_ARPA_INET_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDARG_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_SYS_SOCKET_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_UN_H # include #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_TIME_H # include #endif #ifdef HAVE_PTHREAD_H # include #endif #ifdef HAVE_LIMITS_H # include #endif #ifdef HAVE_ZLIB_H # include #endif ]) dnl Check for PC/SC headers and libraries DC_PCSC dnl Check for ZLIB libraries AC_CHECK_LIB(z, uncompress) dnl Verify that a basic program will compile AC_CACHE_CHECK([if basic PC/SC program works], cackey_cv_pcsc_works, [ AC_LINK_IFELSE( AC_LANG_PROGRAM([[ #ifdef HAVE_WINTYPES_H # include #endif #ifdef HAVE_PCSCLITE_H # include #endif #ifdef HAVE_WINSCARD_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_PTHREAD_H # include #endif #ifdef HAVE_LIMITS_H # include #endif #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_ZLIB_H # ifdef HAVE_LIBZ # include # endif #endif ]], [[ LPSCARDHANDLE hCard; SCARDCONTEXT hContext; DWORD dwActiveProtocol; LONG scard_conn_ret, scard_est_context_ret; scard_est_context_ret = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext); hCard = NULL; scard_conn_ret = SCardConnect(hContext, "Reader X", SCARD_SHARE_SHARED, SCARD_PROTOCOL_T0, hCard, &dwActiveProtocol); ]]), [ cackey_cv_pcsc_works=okay ], [ cackey_cv_pcsc_works=failed ]) ] ) if test "$cackey_cv_pcsc_works" = 'failed'; then AC_MSG_FAILURE([simple PC/SC program failed]) fi dnl Option to enable DoD certs on hardware slot AC_ARG_ENABLE(dod-certs-on-hw-slots, AC_HELP_STRING([--enable-dod-certs-on-hw-slots], [Specify that DoD certificates should be made available on hardware token slots]), [ dodcertsonhwslots=$enableval ], [ dodcertsonhwslots=no ]) if ! test "${dodcertsonhwslots}" = 'no'; then AC_DEFINE(CACKEY_CARD_SLOT_INCLUDE_EXTRA_CERTS, [1], [Specify that DoD certificates should be made available on hardware token slots]) fi dnl Option to disable DoD certs entirely AC_ARG_ENABLE(dod-certs, AC_HELP_STRING([--disable-dod-certs], [Disable including DoD certs entirely. The user may override this with the CACKEY_EXTRA_CERTS environment variable.]), [ dodcerts=$enableval ], [ dodcerts=yes ]) if test "${dodcerts}" = 'no'; then AC_DEFINE(CACKEY_NO_EXTRA_CERTS, [1], [Specify that DoD certificates should not be made available]) fi dnl Option to hard-code a command to run to request a PIN (enabling protected authentication path) AC_ARG_WITH(pin-command, AC_HELP_STRING([--with-pin-command=], [Specify a command to run to request a PIN from the user. The user may override this with the CACKEY_PIN_COMMAND environment variable.]), [ pincommand="${withval}" ], [ pincommand="no" ]) AC_ARG_WITH(pin-command-x, AC_HELP_STRING([--with-pin-command-x=], [Same as --with-pin-command, but only sets Protected Authentication Path if the DISPLAY environment variable is set]), [ pincommandxonly="${withval}" ], [ pincommandxonly="no" ]) if ! test "${pincommand}" = 'no'; then AC_DEFINE_UNQUOTED(CACKEY_PIN_COMMAND_DEFAULT, [$pincommand], [Command to run to prompt user for PIN]) fi if ! test "${pincommandxonly}" = 'no'; then AC_DEFINE_UNQUOTED(CACKEY_PIN_COMMAND_XONLY_DEFAULT, [$pincommandxonly], [Command to run to prompt user for PIN only if DISPLAY environment variable is set]) fi AC_ARG_WITH(readers-include-only, AC_HELP_STRING([--with-readers-include-only=], [Specify a string to match in a reader to include it, all other readers will be excluded. The user may override this with the CACKEY_READERS_INCLUDE_ONLY environment variable.]), [ readers_include_only="${withval}" ], [ readers_include_only="no" ]) AC_ARG_WITH(readers-exclude, AC_HELP_STRING([--with-readers-exclude=], [Specify a string to match in a reader to exclude it, all other readers will be included. The user may override this with the CACKEY_READERS_EXCLUDE environment variable.]), [ readers_exclude="${withval}" ], [ readers_exclude="no" ]) if ! test "${readers_include_only}" = 'no'; then AC_DEFINE_UNQUOTED(CACKEY_READERS_INCLUDE_ONLY_DEFAULT, [$readers_include_only], [Substring to match to include readers]) fi if ! test "${readers_exclude}" = 'no'; then AC_DEFINE_UNQUOTED(CACKEY_READERS_EXCLUDE_DEFAULT, [$readers_exclude], [Substring to match to exclude readers]) fi dnl Set version script, to limit the scope of symbols DC_SETVERSIONSCRIPT(libcackey.vers, libcackey.syms) dnl Upate LDFLAGS to include setting the run-time linker path to the same as our compile-time linker DC_SYNC_RPATH dnl If we updated LIBOBJS, update SHLIBOBJS -- must be last. DC_SYNC_SHLIBOBJS dnl Produce Makefile AC_OUTPUT(Makefile libcackey.syms) cackey-0.7.10/install-sh0000755000000000000000000003452313563537513013562 0ustar rootroot#!/bin/sh # install - install a program, script, or datafile scriptversion=2013-12-25.23; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: cackey-0.7.10/leakcheck/0000755000000000000000000000000013563537513013461 5ustar rootrootcackey-0.7.10/leakcheck/README.txt0000644000000000000000000000123513563537513015160 0ustar rootrootThis script is intended to be used to parse the "debugging" output produced on stderr when CACKey is compiled with debugging flags enabled. Sample usage: $ ./test 2> cackey-debug.log Testing libcackey... PKCS#11 Client Version: 2.30, Library Version 0.0 ... Testing libcackey... DONE. Status = 0 $ ./leakcheck/leakcheck cackey-debug.log Unfreed memory 0x804d010: cackey_mutex_create():2017: MALLOC() = 0x804d010 (Note that the leak from cackey_mutex_create() is normal -- there's no safe way to clean up that mutex) This functionality exists to check for leaks in libcackey independently of dependent libraries, and the application hosting the library. cackey-0.7.10/leakcheck/leakcheck0000755000000000000000000000304313563537513015321 0ustar rootroot#! /bin/bash LEAKCHECKFILE="$1" TMPFILE="${TMPDIR:-/tmp}/malloc-free-check-$$${RANDOM}${RANDOM}${RANDOM}.tmp" export LEAKCHECKFILE TMPFILE if [ -z "${LEAKCHECKFILE}" ]; then echo "Usage: leakcheck " >&2 echo " filename Name of file containing debugging output" >&2 exit 1 fi egrep '(MALLOC|FREE|REALLOC)' "${LEAKCHECKFILE}" | sed 's@^.*FREE(\([x0-9a-fA-F]*\)).*$@free \1@;s@^.*MALLOC() = @malloc @;s@^.*REALLOC(\([x0-9a-fA-F]*\)) = @realloc \1 @' > "${TMPFILE}" cat "${TMPFILE}" | while read op addr newaddr; do case "${op}" in malloc) if [ -z "${alloclist}" ]; then alloclist="${addr}" else alloclist="${alloclist} ${addr}" fi ;; free) if ! echo " ${alloclist} " | grep " ${addr} " >/dev/null; then if [ -z "${alloclist}" ]; then alloclist="!${addr}" else alloclist="${alloclist} !${addr}" fi else alloclist="$(echo " ${alloclist} " | sed "s@ ${addr} @ @;s@^ *@@;s@ *\$@@")" fi ;; realloc) alloclist="$(echo " ${alloclist} " | sed "s@ ${addr} @ ${newaddr} @;s@^ *@@;s@ *\$@@")" ;; esac echo "${alloclist}" done | tail -1 | while read leftovers; do for leftover in ${leftovers}; do case "${leftover}" in !*) leftover="$(echo "${leftover}" | cut -c 2-)" echo "Double freed or never allocated ${leftover}:" grep "${leftover}" "${LEAKCHECKFILE}" | sed 's@^@ @' echo '' ;; *) echo "Unfreed memory ${leftover}:" grep "${leftover}" "${LEAKCHECKFILE}" | sed 's@^@ @' echo '' ;; esac done done rm -f "${TMPFILE}" cackey-0.7.10/libcackey.syms.in0000644000000000000000000000333613563537513015024 0ustar rootroot@SYMPREFIX@C_CancelFunction @SYMPREFIX@C_CloseAllSessions @SYMPREFIX@C_CloseSession @SYMPREFIX@C_CopyObject @SYMPREFIX@C_CreateObject @SYMPREFIX@C_Decrypt @SYMPREFIX@C_DecryptDigestUpdate @SYMPREFIX@C_DecryptFinal @SYMPREFIX@C_DecryptInit @SYMPREFIX@C_DecryptUpdate @SYMPREFIX@C_DecryptVerifyUpdate @SYMPREFIX@C_DeriveKey @SYMPREFIX@C_DestroyObject @SYMPREFIX@C_Digest @SYMPREFIX@C_DigestEncryptUpdate @SYMPREFIX@C_DigestFinal @SYMPREFIX@C_DigestInit @SYMPREFIX@C_DigestKey @SYMPREFIX@C_DigestUpdate @SYMPREFIX@C_Encrypt @SYMPREFIX@C_EncryptFinal @SYMPREFIX@C_EncryptInit @SYMPREFIX@C_EncryptUpdate @SYMPREFIX@C_Finalize @SYMPREFIX@C_FindObjects @SYMPREFIX@C_FindObjectsFinal @SYMPREFIX@C_FindObjectsInit @SYMPREFIX@C_GenerateKey @SYMPREFIX@C_GenerateKeyPair @SYMPREFIX@C_GenerateRandom @SYMPREFIX@C_GetAttributeValue @SYMPREFIX@C_GetFunctionList @SYMPREFIX@C_GetFunctionStatus @SYMPREFIX@C_GetInfo @SYMPREFIX@C_GetMechanismInfo @SYMPREFIX@C_GetMechanismList @SYMPREFIX@C_GetObjectSize @SYMPREFIX@C_GetOperationState @SYMPREFIX@C_GetSessionInfo @SYMPREFIX@C_GetSlotInfo @SYMPREFIX@C_GetSlotList @SYMPREFIX@C_GetTokenInfo @SYMPREFIX@C_InitPIN @SYMPREFIX@C_InitToken @SYMPREFIX@C_Initialize @SYMPREFIX@C_Login @SYMPREFIX@C_Logout @SYMPREFIX@C_OpenSession @SYMPREFIX@C_SeedRandom @SYMPREFIX@C_SetAttributeValue @SYMPREFIX@C_SetOperationState @SYMPREFIX@C_SetPIN @SYMPREFIX@C_Sign @SYMPREFIX@C_SignEncryptUpdate @SYMPREFIX@C_SignFinal @SYMPREFIX@C_SignInit @SYMPREFIX@C_SignRecover @SYMPREFIX@C_SignRecoverInit @SYMPREFIX@C_SignUpdate @SYMPREFIX@C_UnwrapKey @SYMPREFIX@C_Verify @SYMPREFIX@C_VerifyFinal @SYMPREFIX@C_VerifyInit @SYMPREFIX@C_VerifyRecover @SYMPREFIX@C_VerifyRecoverInit @SYMPREFIX@C_VerifyUpdate @SYMPREFIX@C_WaitForSlotEvent @SYMPREFIX@C_WrapKey cackey-0.7.10/libcackey.vers0000644000000000000000000000233113563537513014375 0ustar rootroot{ global: C_CancelFunction; C_CloseAllSessions; C_CloseSession; C_CopyObject; C_CreateObject; C_Decrypt; C_DecryptDigestUpdate; C_DecryptFinal; C_DecryptInit; C_DecryptUpdate; C_DecryptVerifyUpdate; C_DeriveKey; C_DestroyObject; C_Digest; C_DigestEncryptUpdate; C_DigestFinal; C_DigestInit; C_DigestKey; C_DigestUpdate; C_Encrypt; C_EncryptFinal; C_EncryptInit; C_EncryptUpdate; C_Finalize; C_FindObjects; C_FindObjectsFinal; C_FindObjectsInit; C_GenerateKey; C_GenerateKeyPair; C_GenerateRandom; C_GetAttributeValue; C_GetFunctionList; C_GetFunctionStatus; C_GetInfo; C_GetMechanismInfo; C_GetMechanismList; C_GetObjectSize; C_GetOperationState; C_GetSessionInfo; C_GetSlotInfo; C_GetSlotList; C_GetTokenInfo; C_InitPIN; C_InitToken; C_Initialize; C_Login; C_Logout; C_OpenSession; C_SeedRandom; C_SetAttributeValue; C_SetOperationState; C_SetPIN; C_Sign; C_SignEncryptUpdate; C_SignFinal; C_SignInit; C_SignRecover; C_SignRecoverInit; C_SignUpdate; C_UnwrapKey; C_Verify; C_VerifyFinal; C_VerifyInit; C_VerifyRecover; C_VerifyRecoverInit; C_VerifyUpdate; C_WaitForSlotEvent; C_WrapKey; local: *; }; cackey-0.7.10/libcackey_wrap.c0000644000000000000000000006621213563537513014701 0ustar rootroot#define _GNU_SOURCE #include #include "config.h" #include #include #include #define CK_PTR * #define CK_DEFINE_FUNCTION(returnType, name) returnType name #define CK_DECLARE_FUNCTION(returnType, name) returnType name #define CK_DECLARE_FUNCTION_POINTER(returnType, name) returnType (* name) #define CK_CALLBACK_FUNCTION(returnType, name) returnType (* name) #ifndef NULL_PTR # define NULL_PTR 0 #endif #include "./pkcs11/pkcs11.h" static void *libcackey_wrap_handle = NULL_PTR; static void libcackey_wrap_init(void) { Dl_info libinfo; int dladdr_ret; char *library, *libraryDir, *libraryDirLastSlash; if (libcackey_wrap_handle) { return; } dladdr_ret = dladdr(libcackey_wrap_init, &libinfo); if (dladdr_ret == 0) { fprintf(stderr, "Unable to resolve path: %s\n", dlerror()); abort(); return; } if (!libinfo.dli_fname) { fprintf(stderr, "Unable to lookup filename\n"); abort(); return; } libraryDir = strdup(libinfo.dli_fname); libraryDirLastSlash = strrchr(libraryDir, '/'); if (!libraryDirLastSlash) { fprintf(stderr, "File name returned is not an absolute path: %s\n", libraryDir); abort(); return; } *libraryDirLastSlash = '\0'; asprintf(&library, "%s/libcackey.so", libraryDir); libcackey_wrap_handle = dlmopen(LM_ID_NEWLM, library, RTLD_LOCAL | RTLD_NOW); if (!libcackey_wrap_handle) { fprintf(stderr, "Unable to load \"%s\": %s\n", library, dlerror()); abort(); return; } free(library); return; } CK_DEFINE_FUNCTION(CK_RV, C_Initialize)(CK_VOID_PTR pInitArgs) { CK_RV (*func)(CK_VOID_PTR pInitArgs); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_Initialize"); return(func(pInitArgs)); } CK_DEFINE_FUNCTION(CK_RV, C_Finalize)(CK_VOID_PTR pReserved) { CK_RV (*func)(CK_VOID_PTR pReserved); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_Finalize"); return(func(pReserved)); } CK_DEFINE_FUNCTION(CK_RV, C_GetInfo)(CK_INFO_PTR pInfo) { CK_RV (*func)(CK_INFO_PTR pInfo); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_GetInfo"); return(func(pInfo)); } CK_DEFINE_FUNCTION(CK_RV, C_GetSlotList)(CK_BBOOL tokenPresent, CK_SLOT_ID_PTR pSlotList, CK_ULONG_PTR pulCount) { CK_RV (*func)(CK_BBOOL tokenPresent, CK_SLOT_ID_PTR pSlotList, CK_ULONG_PTR pulCount); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_GetSlotList"); return(func(tokenPresent, pSlotList, pulCount)); } CK_DEFINE_FUNCTION(CK_RV, C_GetSlotInfo)(CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo) { CK_RV (*func)(CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_GetSlotInfo"); return(func(slotID, pInfo)); } CK_DEFINE_FUNCTION(CK_RV, C_GetTokenInfo)(CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo) { CK_RV (*func)(CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_GetTokenInfo"); return(func(slotID, pInfo)); } CK_DEFINE_FUNCTION(CK_RV, C_WaitForSlotEvent)(CK_FLAGS flags, CK_SLOT_ID_PTR pSlotID, CK_VOID_PTR pReserved) { CK_RV (*func)(CK_FLAGS flags, CK_SLOT_ID_PTR pSlotID, CK_VOID_PTR pReserved); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_WaitForSlotEvent"); return(func(flags, pSlotID, pReserved)); } CK_DEFINE_FUNCTION(CK_RV, C_GetMechanismList)(CK_SLOT_ID slotID, CK_MECHANISM_TYPE_PTR pMechanismList, CK_ULONG_PTR pulCount) { CK_RV (*func)(CK_SLOT_ID slotID, CK_MECHANISM_TYPE_PTR pMechanismList, CK_ULONG_PTR pulCount); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_GetMechanismList"); return(func(slotID, pMechanismList, pulCount)); } CK_DEFINE_FUNCTION(CK_RV, C_GetMechanismInfo)(CK_SLOT_ID slotID, CK_MECHANISM_TYPE type, CK_MECHANISM_INFO_PTR pInfo) { CK_RV (*func)(CK_SLOT_ID slotID, CK_MECHANISM_TYPE type, CK_MECHANISM_INFO_PTR pInfo); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_GetMechanismInfo"); return(func(slotID, type, pInfo)); } CK_DEFINE_FUNCTION(CK_RV, C_InitToken)(CK_SLOT_ID slotID, CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen, CK_UTF8CHAR_PTR pLabel) { CK_RV (*func)(CK_SLOT_ID slotID, CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen, CK_UTF8CHAR_PTR pLabel); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_InitToken"); return(func(slotID, pPin, ulPinLen, pLabel)); } CK_DEFINE_FUNCTION(CK_RV, C_InitPIN)(CK_SESSION_HANDLE hSession, CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_InitPIN"); return(func(hSession, pPin, ulPinLen)); } CK_DEFINE_FUNCTION(CK_RV, C_SetPIN)(CK_SESSION_HANDLE hSession, CK_UTF8CHAR_PTR pOldPin, CK_ULONG ulOldPinLen, CK_UTF8CHAR_PTR pNewPin, CK_ULONG ulNewPinLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_UTF8CHAR_PTR pOldPin, CK_ULONG ulOldPinLen, CK_UTF8CHAR_PTR pNewPin, CK_ULONG ulNewPinLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_SetPIN"); return(func(hSession, pOldPin, ulOldPinLen, pNewPin, ulNewPinLen)); } CK_DEFINE_FUNCTION(CK_RV, C_OpenSession)(CK_SLOT_ID slotID, CK_FLAGS flags, CK_VOID_PTR pApplication, CK_NOTIFY notify, CK_SESSION_HANDLE_PTR phSession) { CK_RV (*func)(CK_SLOT_ID slotID, CK_FLAGS flags, CK_VOID_PTR pApplication, CK_NOTIFY notify, CK_SESSION_HANDLE_PTR phSession); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_OpenSession"); return(func(slotID, flags, pApplication, notify, phSession)); } CK_DEFINE_FUNCTION(CK_RV, C_CloseSession)(CK_SESSION_HANDLE hSession) { CK_RV (*func)(CK_SESSION_HANDLE hSession); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_CloseSession"); return(func(hSession)); } CK_DEFINE_FUNCTION(CK_RV, C_CloseAllSessions)(CK_SLOT_ID slotID) { CK_RV (*func)(CK_SLOT_ID slotID); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_CloseAllSessions"); return(func(slotID)); } CK_DEFINE_FUNCTION(CK_RV, C_GetSessionInfo)(CK_SESSION_HANDLE hSession, CK_SESSION_INFO_PTR pInfo) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_SESSION_INFO_PTR pInfo); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_GetSessionInfo"); return(func(hSession, pInfo)); } CK_DEFINE_FUNCTION(CK_RV, C_GetOperationState)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pOperationState, CK_ULONG_PTR pulOperationStateLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pOperationState, CK_ULONG_PTR pulOperationStateLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_GetOperationState"); return(func(hSession, pOperationState, pulOperationStateLen)); } CK_DEFINE_FUNCTION(CK_RV, C_SetOperationState)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pOperationState, CK_ULONG ulOperationStateLen, CK_OBJECT_HANDLE hEncryptionKey, CK_OBJECT_HANDLE hAuthenticationKey) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pOperationState, CK_ULONG ulOperationStateLen, CK_OBJECT_HANDLE hEncryptionKey, CK_OBJECT_HANDLE hAuthenticationKey); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_SetOperationState"); return(func(hSession, pOperationState, ulOperationStateLen, hEncryptionKey, hAuthenticationKey)); } CK_DEFINE_FUNCTION(CK_RV, C_LoginMutexArg)(CK_SESSION_HANDLE hSession, CK_USER_TYPE userType, CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen, int lock_mutex) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_USER_TYPE userType, CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen, int lock_mutex); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_LoginMutexArg"); return(func(hSession, userType, pPin, ulPinLen, lock_mutex)); } CK_DEFINE_FUNCTION(CK_RV, C_Login)(CK_SESSION_HANDLE hSession, CK_USER_TYPE userType, CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_USER_TYPE userType, CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_Login"); return(func(hSession, userType, pPin, ulPinLen)); } CK_DEFINE_FUNCTION(CK_RV, C_Logout)(CK_SESSION_HANDLE hSession) { CK_RV (*func)(CK_SESSION_HANDLE hSession); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_Logout"); return(func(hSession)); } CK_DEFINE_FUNCTION(CK_RV, C_CreateObject)(CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phObject) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phObject); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_CreateObject"); return(func(hSession, pTemplate, ulCount, phObject)); } CK_DEFINE_FUNCTION(CK_RV, C_CopyObject)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phNewObject) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phNewObject); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_CopyObject"); return(func(hSession, hObject, pTemplate, ulCount, phNewObject)); } CK_DEFINE_FUNCTION(CK_RV, C_DestroyObject)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_DestroyObject"); return(func(hSession, hObject)); } CK_DEFINE_FUNCTION(CK_RV, C_GetObjectSize)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ULONG_PTR pulSize) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ULONG_PTR pulSize); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_GetObjectSize"); return(func(hSession, hObject, pulSize)); } CK_DEFINE_FUNCTION(CK_RV, C_GetAttributeValue)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_GetAttributeValue"); return(func(hSession, hObject, pTemplate, ulCount)); } CK_DEFINE_FUNCTION(CK_RV, C_SetAttributeValue)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_SetAttributeValue"); return(func(hSession, hObject, pTemplate, ulCount)); } CK_DEFINE_FUNCTION(CK_RV, C_FindObjectsInit)(CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_FindObjectsInit"); return(func(hSession, pTemplate, ulCount)); } CK_DEFINE_FUNCTION(CK_RV, C_FindObjects)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE_PTR phObject, CK_ULONG ulMaxObjectCount, CK_ULONG_PTR pulObjectCount) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE_PTR phObject, CK_ULONG ulMaxObjectCount, CK_ULONG_PTR pulObjectCount); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_FindObjects"); return(func(hSession, phObject, ulMaxObjectCount, pulObjectCount)); } CK_DEFINE_FUNCTION(CK_RV, C_FindObjectsFinal)(CK_SESSION_HANDLE hSession) { CK_RV (*func)(CK_SESSION_HANDLE hSession); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_FindObjectsFinal"); return(func(hSession)); } CK_DEFINE_FUNCTION(CK_RV, C_EncryptInit)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_EncryptInit"); return(func(hSession, pMechanism, hKey)); } CK_DEFINE_FUNCTION(CK_RV, C_Encrypt)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pEncryptedData, CK_ULONG_PTR pulEncryptedDataLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pEncryptedData, CK_ULONG_PTR pulEncryptedDataLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_Encrypt"); return(func(hSession, pData, ulDataLen, pEncryptedData, pulEncryptedDataLen)); } CK_DEFINE_FUNCTION(CK_RV, C_EncryptUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, CK_ULONG_PTR pulEncryptedPartLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, CK_ULONG_PTR pulEncryptedPartLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_EncryptUpdate"); return(func(hSession, pPart, ulPartLen, pEncryptedPart, pulEncryptedPartLen)); } CK_DEFINE_FUNCTION(CK_RV, C_EncryptFinal)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pLastEncryptedPart, CK_ULONG_PTR pulLastEncryptedPartLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pLastEncryptedPart, CK_ULONG_PTR pulLastEncryptedPartLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_EncryptFinal"); return(func(hSession, pLastEncryptedPart, pulLastEncryptedPartLen)); } CK_DEFINE_FUNCTION(CK_RV, C_DecryptInit)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_DecryptInit"); return(func(hSession, pMechanism, hKey)); } CK_DEFINE_FUNCTION(CK_RV, C_Decrypt)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedData, CK_ULONG ulEncryptedDataLen, CK_BYTE_PTR pData, CK_ULONG_PTR pulDataLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedData, CK_ULONG ulEncryptedDataLen, CK_BYTE_PTR pData, CK_ULONG_PTR pulDataLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_Decrypt"); return(func(hSession, pEncryptedData, ulEncryptedDataLen, pData, pulDataLen)); } CK_DEFINE_FUNCTION(CK_RV, C_DecryptUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_DecryptUpdate"); return(func(hSession, pEncryptedPart, ulEncryptedPartLen, pPart, pulPartLen)); } CK_DEFINE_FUNCTION(CK_RV, C_DecryptFinal)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pLastPart, CK_ULONG_PTR pulLastPartLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pLastPart, CK_ULONG_PTR pulLastPartLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_DecryptFinal"); return(func(hSession, pLastPart, pulLastPartLen)); } CK_DEFINE_FUNCTION(CK_RV, C_DigestInit)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_DigestInit"); return(func(hSession, pMechanism)); } CK_DEFINE_FUNCTION(CK_RV, C_Digest)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pDigest, CK_ULONG_PTR pulDigestLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pDigest, CK_ULONG_PTR pulDigestLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_Digest"); return(func(hSession, pData, ulDataLen, pDigest, pulDigestLen)); } CK_DEFINE_FUNCTION(CK_RV, C_DigestUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_DigestUpdate"); return(func(hSession, pPart, ulPartLen)); } CK_DEFINE_FUNCTION(CK_RV, C_DigestKey)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hKey) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hKey); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_DigestKey"); return(func(hSession, hKey)); } CK_DEFINE_FUNCTION(CK_RV, C_DigestFinal)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pDigest, CK_ULONG_PTR pulDigestLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pDigest, CK_ULONG_PTR pulDigestLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_DigestFinal"); return(func(hSession, pDigest, pulDigestLen)); } CK_DEFINE_FUNCTION(CK_RV, C_SignInit)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_SignInit"); return(func(hSession, pMechanism, hKey)); } CK_DEFINE_FUNCTION(CK_RV, C_Sign)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_Sign"); return(func(hSession, pData, ulDataLen, pSignature, pulSignatureLen)); } CK_DEFINE_FUNCTION(CK_RV, C_SignUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_SignUpdate"); return(func(hSession, pPart, ulPartLen)); } CK_DEFINE_FUNCTION(CK_RV, C_SignFinal)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_SignFinal"); return(func(hSession, pSignature, pulSignatureLen)); } CK_DEFINE_FUNCTION(CK_RV, C_SignRecoverInit)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_SignRecoverInit"); return(func(hSession, pMechanism, hKey)); } CK_DEFINE_FUNCTION(CK_RV, C_SignRecover)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_SignRecover"); return(func(hSession, pData, ulDataLen, pSignature, pulSignatureLen)); } CK_DEFINE_FUNCTION(CK_RV, C_VerifyInit)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_VerifyInit"); return(func(hSession, pMechanism, hKey)); } CK_DEFINE_FUNCTION(CK_RV, C_Verify)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_Verify"); return(func(hSession, pData, ulDataLen, pSignature, ulSignatureLen)); } CK_DEFINE_FUNCTION(CK_RV, C_VerifyUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_VerifyUpdate"); return(func(hSession, pPart, ulPartLen)); } CK_DEFINE_FUNCTION(CK_RV, C_VerifyFinal)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_VerifyFinal"); return(func(hSession, pSignature, ulSignatureLen)); } CK_DEFINE_FUNCTION(CK_RV, C_VerifyRecoverInit)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_VerifyRecoverInit"); return(func(hSession, pMechanism, hKey)); } CK_DEFINE_FUNCTION(CK_RV, C_VerifyRecover)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen, CK_BYTE_PTR pData, CK_ULONG_PTR pulDataLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen, CK_BYTE_PTR pData, CK_ULONG_PTR pulDataLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_VerifyRecover"); return(func(hSession, pSignature, ulSignatureLen, pData, pulDataLen)); } CK_DEFINE_FUNCTION(CK_RV, C_DigestEncryptUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, CK_ULONG_PTR pulEncryptedPartLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, CK_ULONG_PTR pulEncryptedPartLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_DigestEncryptUpdate"); return(func(hSession, pPart, ulPartLen, pEncryptedPart, pulEncryptedPartLen)); } CK_DEFINE_FUNCTION(CK_RV, C_DecryptDigestUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_DecryptDigestUpdate"); return(func(hSession, pEncryptedPart, ulEncryptedPartLen, pPart, pulPartLen)); } CK_DEFINE_FUNCTION(CK_RV, C_SignEncryptUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, CK_ULONG_PTR pulEncryptedPartLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, CK_ULONG_PTR pulEncryptedPartLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_SignEncryptUpdate"); return(func(hSession, pPart, ulPartLen, pEncryptedPart, pulEncryptedPartLen)); } CK_DEFINE_FUNCTION(CK_RV, C_DecryptVerifyUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_DecryptVerifyUpdate"); return(func(hSession, pEncryptedPart, ulEncryptedPartLen, pPart, pulPartLen)); } CK_DEFINE_FUNCTION(CK_RV, C_GenerateKey)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phKey) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phKey); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_GenerateKey"); return(func(hSession, pMechanism, pTemplate, ulCount, phKey)); } CK_DEFINE_FUNCTION(CK_RV, C_GenerateKeyPair)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_ATTRIBUTE_PTR pPublicKeyTemplate, CK_ULONG ulPublicKeyAttributeCount, CK_ATTRIBUTE_PTR pPrivateKeyTemplate, CK_ULONG ulPrivateKeyAttributeCount, CK_OBJECT_HANDLE_PTR phPublicKey, CK_OBJECT_HANDLE_PTR phPrivateKey) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_ATTRIBUTE_PTR pPublicKeyTemplate, CK_ULONG ulPublicKeyAttributeCount, CK_ATTRIBUTE_PTR pPrivateKeyTemplate, CK_ULONG ulPrivateKeyAttributeCount, CK_OBJECT_HANDLE_PTR phPublicKey, CK_OBJECT_HANDLE_PTR phPrivateKey); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_GenerateKeyPair"); return(func(hSession, pMechanism, pPublicKeyTemplate, ulPublicKeyAttributeCount, pPrivateKeyTemplate, ulPrivateKeyAttributeCount, phPublicKey, phPrivateKey)); } CK_DEFINE_FUNCTION(CK_RV, C_WrapKey)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hWrappingKey, CK_OBJECT_HANDLE hKey, CK_BYTE_PTR pWrappedKey, CK_ULONG_PTR pulWrappedKeyLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hWrappingKey, CK_OBJECT_HANDLE hKey, CK_BYTE_PTR pWrappedKey, CK_ULONG_PTR pulWrappedKeyLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_WrapKey"); return(func(hSession, pMechanism, hWrappingKey, hKey, pWrappedKey, pulWrappedKeyLen)); } CK_DEFINE_FUNCTION(CK_RV, C_UnwrapKey)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hUnwrappingKey, CK_BYTE_PTR pWrappedKey, CK_ULONG ulWrappedKeyLen, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulAttributeCount, CK_OBJECT_HANDLE_PTR phKey) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hUnwrappingKey, CK_BYTE_PTR pWrappedKey, CK_ULONG ulWrappedKeyLen, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulAttributeCount, CK_OBJECT_HANDLE_PTR phKey); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_UnwrapKey"); return(func(hSession, pMechanism, hUnwrappingKey, pWrappedKey, ulWrappedKeyLen, pTemplate, ulAttributeCount, phKey)); } CK_DEFINE_FUNCTION(CK_RV, C_DeriveKey)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hBaseKey, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulAttributeCount, CK_OBJECT_HANDLE_PTR phKey) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hBaseKey, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulAttributeCount, CK_OBJECT_HANDLE_PTR phKey); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_DeriveKey"); return(func(hSession, pMechanism, hBaseKey, pTemplate, ulAttributeCount, phKey)); } CK_DEFINE_FUNCTION(CK_RV, C_SeedRandom)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSeed, CK_ULONG ulSeedLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSeed, CK_ULONG ulSeedLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_SeedRandom"); return(func(hSession, pSeed, ulSeedLen)); } CK_DEFINE_FUNCTION(CK_RV, C_GenerateRandom)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pRandomData, CK_ULONG ulRandomLen) { CK_RV (*func)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pRandomData, CK_ULONG ulRandomLen); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_GenerateRandom"); return(func(hSession, pRandomData, ulRandomLen)); } CK_DEFINE_FUNCTION(CK_RV, C_GetFunctionStatus)(CK_SESSION_HANDLE hSession) { CK_RV (*func)(CK_SESSION_HANDLE hSession); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_GetFunctionStatus"); return(func(hSession)); } CK_DEFINE_FUNCTION(CK_RV, C_CancelFunction)(CK_SESSION_HANDLE hSession) { CK_RV (*func)(CK_SESSION_HANDLE hSession); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_CancelFunction"); return(func(hSession)); } CK_DEFINE_FUNCTION(CK_RV, C_GetFunctionList)(CK_FUNCTION_LIST_PTR_PTR ppFunctionList) { CK_RV (*func)(CK_FUNCTION_LIST_PTR_PTR ppFunctionList); libcackey_wrap_init(); func = dlsym(libcackey_wrap_handle, "C_GetFunctionList"); return(func(ppFunctionList)); } cackey-0.7.10/md5.c0000644000000000000000000002220013563537513012374 0ustar rootroot/* MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm */ /* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All rights reserved. License to copy and use this software is granted provided that it is identified as the "RSA Data Security, Inc. MD5 Message-Digest Algorithm" in all material mentioning or referencing this software or this function. License is also granted to make and use derivative works provided that such works are identified as "derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm" in all material mentioning or referencing the derived work. RSA Data Security, Inc. makes no representations concerning either the merchantability of this software or the suitability of this software for any particular purpose. It is provided "as is" without express or implied warranty of any kind. These notices must be retained in any copies of any part of this documentation and/or software. */ #include "md5.h" #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_STRINGS_H # include #endif /* Constants for MD5Transform routine. */ #define S11 7 #define S12 12 #define S13 17 #define S14 22 #define S21 5 #define S22 9 #define S23 14 #define S24 20 #define S31 4 #define S32 11 #define S33 16 #define S34 23 #define S41 6 #define S42 10 #define S43 15 #define S44 21 static void MD5Transform (uint32_t [4], unsigned char [64]); static void Encode(unsigned char *, uint32_t *, unsigned int); static void Decode(uint32_t *, unsigned char *, unsigned int); static unsigned char PADDING[64] = { 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; /* F, G, H and I are basic MD5 functions. */ #define F(x, y, z) (((x) & (y)) | ((~x) & (z))) #define G(x, y, z) (((x) & (z)) | ((y) & (~z))) #define H(x, y, z) ((x) ^ (y) ^ (z)) #define I(x, y, z) ((y) ^ ((x) | (~z))) /* ROTATE_LEFT rotates x left n bits. */ #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n)))) /* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4. Rotation is separate from addition to prevent recomputation. */ #define FF(a, b, c, d, x, s, ac) { \ (a) += F ((b), (c), (d)) + (x) + (uint32_t)(ac); \ (a) = ROTATE_LEFT ((a), (s)); \ (a) += (b); \ } #define GG(a, b, c, d, x, s, ac) { \ (a) += G ((b), (c), (d)) + (x) + (uint32_t)(ac); \ (a) = ROTATE_LEFT ((a), (s)); \ (a) += (b); \ } #define HH(a, b, c, d, x, s, ac) { \ (a) += H ((b), (c), (d)) + (x) + (uint32_t)(ac); \ (a) = ROTATE_LEFT ((a), (s)); \ (a) += (b); \ } #define II(a, b, c, d, x, s, ac) { \ (a) += I ((b), (c), (d)) + (x) + (uint32_t)(ac); \ (a) = ROTATE_LEFT ((a), (s)); \ (a) += (b); \ } /* MD5 initialization. Begins an MD5 operation, writing a new context. */ static void MD5Init (MD5_CTX *context) { context->count[0] = context->count[1] = 0; /* Load magic initialization constants. */ context->state[0] = 0x67452301; context->state[1] = 0xefcdab89; context->state[2] = 0x98badcfe; context->state[3] = 0x10325476; } /* MD5 block update operation. Continues an MD5 message-digest operation, processing another message block, and updating the context. */ static void MD5Update (MD5_CTX *context, unsigned char *input, unsigned int inputLen) { unsigned int i, index, partLen; /* Compute number of bytes mod 64 */ index = (unsigned int)((context->count[0] >> 3) & 0x3F); /* Update number of bits */ if ((context->count[0] += ((uint32_t)inputLen << 3)) < ((uint32_t)inputLen << 3)) { context->count[1]++; } context->count[1] += ((uint32_t)inputLen >> 29); partLen = 64 - index; /* Transform as many times as possible. */ if (inputLen >= partLen) { memcpy(&context->buffer[index], input, partLen); MD5Transform(context->state, context->buffer); for (i = partLen; (i + 63) < inputLen; i += 64) { MD5Transform (context->state, &input[i]); } index = 0; } else { i = 0; } /* Buffer remaining input */ memcpy(&context->buffer[index], &input[i], inputLen - i); return; } /* MD5 finalization. Ends an MD5 message-digest operation, writing the the message digest and zeroizing the context. */ static void MD5Final(unsigned char digest[16], MD5_CTX *context) { unsigned char bits[8]; unsigned int index, padLen; /* Save number of bits */ Encode(bits, context->count, 8); /* Pad out to 56 mod 64. */ index = (unsigned int)((context->count[0] >> 3) & 0x3f); padLen = (index < 56) ? (56 - index) : (120 - index); MD5Update(context, PADDING, padLen); /* Append length (before padding) */ MD5Update(context, bits, 8); /* Store state in digest */ Encode(digest, context->state, 16); /* Zeroize sensitive information. */ memset(context, 0, sizeof(*context)); return; } /* MD5 basic transformation. Transforms state based on block. */ static void MD5Transform (uint32_t state[4], unsigned char block[64]) { uint32_t a = state[0], b = state[1], c = state[2], d = state[3], x[16]; Decode(x, block, 64); /* Round 1 */ FF(a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */ FF(d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */ FF(c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */ FF(b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */ FF(a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */ FF(d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */ FF(c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */ FF(b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */ FF(a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */ FF(d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */ FF(c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */ FF(b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */ FF(a, b, c, d, x[12], S11, 0x6b901122); /* 13 */ FF(d, a, b, c, x[13], S12, 0xfd987193); /* 14 */ FF(c, d, a, b, x[14], S13, 0xa679438e); /* 15 */ FF(b, c, d, a, x[15], S14, 0x49b40821); /* 16 */ /* Round 2 */ GG(a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */ GG(d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */ GG(c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */ GG(b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */ GG(a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */ GG(d, a, b, c, x[10], S22, 0x2441453); /* 22 */ GG(c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */ GG(b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */ GG(a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */ GG(d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */ GG(c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */ GG(b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */ GG(a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */ GG(d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */ GG(c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */ GG(b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */ /* Round 3 */ HH(a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */ HH(d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */ HH(c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */ HH(b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */ HH(a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */ HH(d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */ HH(c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */ HH(b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */ HH(a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */ HH(d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */ HH(c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */ HH(b, c, d, a, x[ 6], S34, 0x4881d05); /* 44 */ HH(a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */ HH(d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */ HH(c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */ HH(b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */ /* Round 4 */ II(a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */ II(d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */ II(c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */ II(b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */ II(a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */ II(d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */ II(c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */ II(b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */ II(a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */ II(d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */ II(c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */ II(b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */ II(a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */ II(d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */ II(c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */ II(b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */ state[0] += a; state[1] += b; state[2] += c; state[3] += d; /* Zeroize sensitive information. */ memset (x, 0, sizeof (x)); return; } /* Encodes input (uint32_t) into output (unsigned char). Assumes len is a multiple of 4. */ static void Encode(unsigned char *output, uint32_t *input, unsigned int len) { unsigned int i, j; for (i = 0, j = 0; j < len; i++, j += 4) { output[j] = (unsigned char)(input[i] & 0xff); output[j+1] = (unsigned char)((input[i] >> 8) & 0xff); output[j+2] = (unsigned char)((input[i] >> 16) & 0xff); output[j+3] = (unsigned char)((input[i] >> 24) & 0xff); } return; } /* Decodes input (unsigned char) into output (uint32_t). Assumes len is a multiple of 4. */ static void Decode (uint32_t *output, unsigned char *input, unsigned int len) { unsigned int i, j; for (i = 0, j = 0; j < len; i++, j += 4) { output[i] = ((uint32_t)input[j]) | (((uint32_t)input[j+1]) << 8) | \ (((uint32_t)input[j+2]) << 16) | (((uint32_t)input[j+3]) << 24); } return; } cackey-0.7.10/md5.h0000644000000000000000000000270313563537513012407 0ustar rootroot/* MD5.H - header file for MD5.C */ /* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All rights reserved. License to copy and use this software is granted provided that it is identified as the "RSA Data Security, Inc. MD5 Message-Digest Algorithm" in all material mentioning or referencing this software or this function. License is also granted to make and use derivative works provided that such works are identified as "derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm" in all material mentioning or referencing the derived work. RSA Data Security, Inc. makes no representations concerning either the merchantability of this software or the suitability of this software for any particular purpose. It is provided "as is" without express or implied warranty of any kind. These notices must be retained in any copies of any part of this documentation and/or software. */ #ifndef _MD5_H_ #define _MD5_H_ #include "config.h" #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #define MD5HashSize 16 /* MD5 context. */ typedef struct { uint32_t state[4]; /* state (ABCD) */ uint32_t count[2]; /* number of bits, modulo 2^64 (lsb first) */ uint8_t buffer[64]; /* input buffer */ } MD5_CTX; static void MD5Init(MD5_CTX *); static void MD5Update(MD5_CTX *, unsigned char *, unsigned int); static void MD5Final(unsigned char [MD5HashSize], MD5_CTX *); #endif cackey-0.7.10/pkcs11/0000755000000000000000000000000013563537513012651 5ustar rootrootcackey-0.7.10/pkcs11/mypkcs11.h0000644000000000000000000000301413563537513014470 0ustar rootroot/* ***** BEGIN COPYRIGHT BLOCK ***** * Copyright (C) 2005 Red Hat, Inc. * All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation version * 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * ***** END COPYRIGHT BLOCK *****/ #ifndef COOLKEY_MYPKCS11_H #define COOLKEY_MYPKCS11_H #if defined(_WIN32) #define CK_PTR * #define CK_DECLARE_FUNCTION(rv,func) rv __declspec(dllexport) func #define CK_DECLARE_FUNCTION_POINTER(rv,func) rv (* func) #define CK_CALLBACK_FUNCTION(rv,func) rv (* func) #define CK_NULL_PTR 0 #else #define CK_PTR * #define CK_DECLARE_FUNCTION(rv,func) rv func #define CK_DECLARE_FUNCTION_POINTER(rv,func) rv (* func) #define CK_CALLBACK_FUNCTION(rv,func) rv (* func) #define CK_NULL_PTR 0 #endif #if defined(_WIN32) #pragma warning(disable:4103) #pragma pack(push, cryptoki, 1) #endif #include "pkcs11.h" #include "pkcs11n.h" #if defined (_WIN32) #pragma warning(disable:4103) #pragma pack(pop, cryptoki) #endif #endif cackey-0.7.10/pkcs11/pkcs11.h0000644000000000000000000002236413563537513014133 0ustar rootroot/* ***** BEGIN COPYRIGHT BLOCK ***** * Copyright (C) 2005 Red Hat, Inc. * All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation version * 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * ***** END COPYRIGHT BLOCK *****/ /* pkcs11.h include file for PKCS #11. 2001 June 25 */ #ifndef _PKCS11_H_ #define _PKCS11_H_ 1 #ifdef __cplusplus extern "C" { #endif /* Before including this file (pkcs11.h) (or pkcs11t.h by * itself), 6 platform-specific macros must be defined. These * macros are described below, and typical definitions for them * are also given. Be advised that these definitions can depend * on both the platform and the compiler used (and possibly also * on whether a Cryptoki library is linked statically or * dynamically). * * In addition to defining these 6 macros, the packing convention * for Cryptoki structures should be set. The Cryptoki * convention on packing is that structures should be 1-byte * aligned. * * If you're using Microsoft Developer Studio 5.0 to produce * Win32 stuff, this might be done by using the following * preprocessor directive before including pkcs11.h or pkcs11t.h: * * #pragma pack(push, cryptoki, 1) * * and using the following preprocessor directive after including * pkcs11.h or pkcs11t.h: * * #pragma pack(pop, cryptoki) * * If you're using an earlier version of Microsoft Developer * Studio to produce Win16 stuff, this might be done by using * the following preprocessor directive before including * pkcs11.h or pkcs11t.h: * * #pragma pack(1) * * In a UNIX environment, you're on your own for this. You might * not need to do (or be able to do!) anything. * * * Now for the macros: * * * 1. CK_PTR: The indirection string for making a pointer to an * object. It can be used like this: * * typedef CK_BYTE CK_PTR CK_BYTE_PTR; * * If you're using Microsoft Developer Studio 5.0 to produce * Win32 stuff, it might be defined by: * * #define CK_PTR * * * If you're using an earlier version of Microsoft Developer * Studio to produce Win16 stuff, it might be defined by: * * #define CK_PTR far * * * In a typical UNIX environment, it might be defined by: * * #define CK_PTR * * * * 2. CK_DEFINE_FUNCTION(returnType, name): A macro which makes * an exportable Cryptoki library function definition out of a * return type and a function name. It should be used in the * following fashion to define the exposed Cryptoki functions in * a Cryptoki library: * * CK_DEFINE_FUNCTION(CK_RV, C_Initialize)( * CK_VOID_PTR pReserved * ) * { * ... * } * * If you're using Microsoft Developer Studio 5.0 to define a * function in a Win32 Cryptoki .dll, it might be defined by: * * #define CK_DEFINE_FUNCTION(returnType, name) \ * returnType __declspec(dllexport) name * * If you're using an earlier version of Microsoft Developer * Studio to define a function in a Win16 Cryptoki .dll, it * might be defined by: * * #define CK_DEFINE_FUNCTION(returnType, name) \ * returnType __export _far _pascal name * * In a UNIX environment, it might be defined by: * * #define CK_DEFINE_FUNCTION(returnType, name) \ * returnType name * * * 3. CK_DECLARE_FUNCTION(returnType, name): A macro which makes * an importable Cryptoki library function declaration out of a * return type and a function name. It should be used in the * following fashion: * * extern CK_DECLARE_FUNCTION(CK_RV, C_Initialize)( * CK_VOID_PTR pReserved * ); * * If you're using Microsoft Developer Studio 5.0 to declare a * function in a Win32 Cryptoki .dll, it might be defined by: * * #define CK_DECLARE_FUNCTION(returnType, name) \ * returnType __declspec(dllimport) name * * If you're using an earlier version of Microsoft Developer * Studio to declare a function in a Win16 Cryptoki .dll, it * might be defined by: * * #define CK_DECLARE_FUNCTION(returnType, name) \ * returnType __export _far _pascal name * * In a UNIX environment, it might be defined by: * * #define CK_DECLARE_FUNCTION(returnType, name) \ * returnType name * * * 4. CK_DECLARE_FUNCTION_POINTER(returnType, name): A macro * which makes a Cryptoki API function pointer declaration or * function pointer type declaration out of a return type and a * function name. It should be used in the following fashion: * * // Define funcPtr to be a pointer to a Cryptoki API function * // taking arguments args and returning CK_RV. * CK_DECLARE_FUNCTION_POINTER(CK_RV, funcPtr)(args); * * or * * // Define funcPtrType to be the type of a pointer to a * // Cryptoki API function taking arguments args and returning * // CK_RV, and then define funcPtr to be a variable of type * // funcPtrType. * typedef CK_DECLARE_FUNCTION_POINTER(CK_RV, funcPtrType)(args); * funcPtrType funcPtr; * * If you're using Microsoft Developer Studio 5.0 to access * functions in a Win32 Cryptoki .dll, in might be defined by: * * #define CK_DECLARE_FUNCTION_POINTER(returnType, name) \ * returnType __declspec(dllimport) (* name) * * If you're using an earlier version of Microsoft Developer * Studio to access functions in a Win16 Cryptoki .dll, it might * be defined by: * * #define CK_DECLARE_FUNCTION_POINTER(returnType, name) \ * returnType __export _far _pascal (* name) * * In a UNIX environment, it might be defined by: * * #define CK_DECLARE_FUNCTION_POINTER(returnType, name) \ * returnType (* name) * * * 5. CK_CALLBACK_FUNCTION(returnType, name): A macro which makes * a function pointer type for an application callback out of * a return type for the callback and a name for the callback. * It should be used in the following fashion: * * CK_CALLBACK_FUNCTION(CK_RV, myCallback)(args); * * to declare a function pointer, myCallback, to a callback * which takes arguments args and returns a CK_RV. It can also * be used like this: * * typedef CK_CALLBACK_FUNCTION(CK_RV, myCallbackType)(args); * myCallbackType myCallback; * * If you're using Microsoft Developer Studio 5.0 to do Win32 * Cryptoki development, it might be defined by: * * #define CK_CALLBACK_FUNCTION(returnType, name) \ * returnType (* name) * * If you're using an earlier version of Microsoft Developer * Studio to do Win16 development, it might be defined by: * * #define CK_CALLBACK_FUNCTION(returnType, name) \ * returnType _far _pascal (* name) * * In a UNIX environment, it might be defined by: * * #define CK_CALLBACK_FUNCTION(returnType, name) \ * returnType (* name) * * * 6. NULL_PTR: This macro is the value of a NULL pointer. * * In any ANSI/ISO C environment (and in many others as well), * this should best be defined by * * #ifndef NULL_PTR * #define NULL_PTR 0 * #endif */ #ifdef _WIN32 #pragma pack(push, cryptoki, 1) #endif /* All the various Cryptoki types and #define'd values are in the * file pkcs11t.h. */ #include "pkcs11t.h" #define __PASTE(x,y) x##y /* ============================================================== * Define the "extern" form of all the entry points. * ============================================================== */ #define CK_NEED_ARG_LIST 1 #define CK_PKCS11_FUNCTION_INFO(name) \ CK_DECLARE_FUNCTION(CK_RV, name) /* pkcs11f.h has all the information about the Cryptoki * function prototypes. */ #include "pkcs11f.h" #undef CK_NEED_ARG_LIST #undef CK_PKCS11_FUNCTION_INFO /* ============================================================== * Define the typedef form of all the entry points. That is, for * each Cryptoki function C_XXX, define a type CK_C_XXX which is * a pointer to that kind of function. * ============================================================== */ #define CK_NEED_ARG_LIST 1 #define CK_PKCS11_FUNCTION_INFO(name) \ typedef CK_DECLARE_FUNCTION_POINTER(CK_RV, __PASTE(CK_,name)) /* pkcs11f.h has all the information about the Cryptoki * function prototypes. */ #include "pkcs11f.h" #undef CK_NEED_ARG_LIST #undef CK_PKCS11_FUNCTION_INFO /* ============================================================== * Define structed vector of entry points. A CK_FUNCTION_LIST * contains a CK_VERSION indicating a library's Cryptoki version * and then a whole slew of function pointers to the routines in * the library. This type was declared, but not defined, in * pkcs11t.h. * ============================================================== */ #define CK_PKCS11_FUNCTION_INFO(name) \ __PASTE(CK_,name) name; struct CK_FUNCTION_LIST { CK_VERSION version; /* Cryptoki version */ /* Pile all the function pointers into the CK_FUNCTION_LIST. */ /* pkcs11f.h has all the information about the Cryptoki * function prototypes. */ #include "pkcs11f.h" }; #ifdef _WIN32 #pragma pack(pop, cryptoki) #endif #undef CK_PKCS11_FUNCTION_INFO #undef __PASTE #ifdef __cplusplus } #endif #endif cackey-0.7.10/pkcs11/pkcs11f.h0000644000000000000000000006741613563537513014310 0ustar rootroot/* ***** BEGIN COPYRIGHT BLOCK ***** * Copyright (C) 2005 Red Hat, Inc. * All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation version * 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * ***** END COPYRIGHT BLOCK *****/ /* pkcs11f.h include file for PKCS #11. 2001 June 25 */ /* This function contains pretty much everything about all the */ /* Cryptoki function prototypes. Because this information is */ /* used for more than just declaring function prototypes, the */ /* order of the functions appearing herein is important, and */ /* should not be altered. */ /* General-purpose */ /* C_Initialize initializes the Cryptoki library. */ CK_PKCS11_FUNCTION_INFO(C_Initialize) #ifdef CK_NEED_ARG_LIST ( CK_VOID_PTR pInitArgs /* if this is not NULL_PTR, it gets * cast to CK_C_INITIALIZE_ARGS_PTR * and dereferenced */ ); #endif /* C_Finalize indicates that an application is done with the * Cryptoki library. */ CK_PKCS11_FUNCTION_INFO(C_Finalize) #ifdef CK_NEED_ARG_LIST ( CK_VOID_PTR pReserved /* reserved. Should be NULL_PTR */ ); #endif /* C_GetInfo returns general information about Cryptoki. */ CK_PKCS11_FUNCTION_INFO(C_GetInfo) #ifdef CK_NEED_ARG_LIST ( CK_INFO_PTR pInfo /* location that receives information */ ); #endif /* C_GetFunctionList returns the function list. */ CK_PKCS11_FUNCTION_INFO(C_GetFunctionList) #ifdef CK_NEED_ARG_LIST ( CK_FUNCTION_LIST_PTR_PTR ppFunctionList /* receives pointer to * function list */ ); #endif /* Slot and token management */ /* C_GetSlotList obtains a list of slots in the system. */ CK_PKCS11_FUNCTION_INFO(C_GetSlotList) #ifdef CK_NEED_ARG_LIST ( CK_BBOOL tokenPresent, /* only slots with tokens? */ CK_SLOT_ID_PTR pSlotList, /* receives array of slot IDs */ CK_ULONG_PTR pulCount /* receives number of slots */ ); #endif /* C_GetSlotInfo obtains information about a particular slot in * the system. */ CK_PKCS11_FUNCTION_INFO(C_GetSlotInfo) #ifdef CK_NEED_ARG_LIST ( CK_SLOT_ID slotID, /* the ID of the slot */ CK_SLOT_INFO_PTR pInfo /* receives the slot information */ ); #endif /* C_GetTokenInfo obtains information about a particular token * in the system. */ CK_PKCS11_FUNCTION_INFO(C_GetTokenInfo) #ifdef CK_NEED_ARG_LIST ( CK_SLOT_ID slotID, /* ID of the token's slot */ CK_TOKEN_INFO_PTR pInfo /* receives the token information */ ); #endif /* C_GetMechanismList obtains a list of mechanism types * supported by a token. */ CK_PKCS11_FUNCTION_INFO(C_GetMechanismList) #ifdef CK_NEED_ARG_LIST ( CK_SLOT_ID slotID, /* ID of token's slot */ CK_MECHANISM_TYPE_PTR pMechanismList, /* gets mech. array */ CK_ULONG_PTR pulCount /* gets # of mechs. */ ); #endif /* C_GetMechanismInfo obtains information about a particular * mechanism possibly supported by a token. */ CK_PKCS11_FUNCTION_INFO(C_GetMechanismInfo) #ifdef CK_NEED_ARG_LIST ( CK_SLOT_ID slotID, /* ID of the token's slot */ CK_MECHANISM_TYPE type, /* type of mechanism */ CK_MECHANISM_INFO_PTR pInfo /* receives mechanism info */ ); #endif /* C_InitToken initializes a token. */ CK_PKCS11_FUNCTION_INFO(C_InitToken) #ifdef CK_NEED_ARG_LIST /* pLabel changed from CK_CHAR_PTR to CK_UTF8CHAR_PTR for v2.10 */ ( CK_SLOT_ID slotID, /* ID of the token's slot */ CK_UTF8CHAR_PTR pPin, /* the SO's initial PIN */ CK_ULONG ulPinLen, /* length in bytes of the PIN */ CK_UTF8CHAR_PTR pLabel /* 32-byte token label (blank padded) */ ); #endif /* C_InitPIN initializes the normal user's PIN. */ CK_PKCS11_FUNCTION_INFO(C_InitPIN) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_UTF8CHAR_PTR pPin, /* the normal user's PIN */ CK_ULONG ulPinLen /* length in bytes of the PIN */ ); #endif /* C_SetPIN modifies the PIN of the user who is logged in. */ CK_PKCS11_FUNCTION_INFO(C_SetPIN) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_UTF8CHAR_PTR pOldPin, /* the old PIN */ CK_ULONG ulOldLen, /* length of the old PIN */ CK_UTF8CHAR_PTR pNewPin, /* the new PIN */ CK_ULONG ulNewLen /* length of the new PIN */ ); #endif /* Session management */ /* C_OpenSession opens a session between an application and a * token. */ CK_PKCS11_FUNCTION_INFO(C_OpenSession) #ifdef CK_NEED_ARG_LIST ( CK_SLOT_ID slotID, /* the slot's ID */ CK_FLAGS flags, /* from CK_SESSION_INFO */ CK_VOID_PTR pApplication, /* passed to callback */ CK_NOTIFY Notify, /* callback function */ CK_SESSION_HANDLE_PTR phSession /* gets session handle */ ); #endif /* C_CloseSession closes a session between an application and a * token. */ CK_PKCS11_FUNCTION_INFO(C_CloseSession) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession /* the session's handle */ ); #endif /* C_CloseAllSessions closes all sessions with a token. */ CK_PKCS11_FUNCTION_INFO(C_CloseAllSessions) #ifdef CK_NEED_ARG_LIST ( CK_SLOT_ID slotID /* the token's slot */ ); #endif /* C_GetSessionInfo obtains information about the session. */ CK_PKCS11_FUNCTION_INFO(C_GetSessionInfo) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_SESSION_INFO_PTR pInfo /* receives session info */ ); #endif /* C_GetOperationState obtains the state of the cryptographic operation * in a session. */ CK_PKCS11_FUNCTION_INFO(C_GetOperationState) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* session's handle */ CK_BYTE_PTR pOperationState, /* gets state */ CK_ULONG_PTR pulOperationStateLen /* gets state length */ ); #endif /* C_SetOperationState restores the state of the cryptographic * operation in a session. */ CK_PKCS11_FUNCTION_INFO(C_SetOperationState) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* session's handle */ CK_BYTE_PTR pOperationState, /* holds state */ CK_ULONG ulOperationStateLen, /* holds state length */ CK_OBJECT_HANDLE hEncryptionKey, /* en/decryption key */ CK_OBJECT_HANDLE hAuthenticationKey /* sign/verify key */ ); #endif /* C_Login logs a user into a token. */ CK_PKCS11_FUNCTION_INFO(C_Login) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_USER_TYPE userType, /* the user type */ CK_UTF8CHAR_PTR pPin, /* the user's PIN */ CK_ULONG ulPinLen /* the length of the PIN */ ); #endif /* C_Logout logs a user out from a token. */ CK_PKCS11_FUNCTION_INFO(C_Logout) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession /* the session's handle */ ); #endif /* Object management */ /* C_CreateObject creates a new object. */ CK_PKCS11_FUNCTION_INFO(C_CreateObject) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_ATTRIBUTE_PTR pTemplate, /* the object's template */ CK_ULONG ulCount, /* attributes in template */ CK_OBJECT_HANDLE_PTR phObject /* gets new object's handle. */ ); #endif /* C_CopyObject copies an object, creating a new object for the * copy. */ CK_PKCS11_FUNCTION_INFO(C_CopyObject) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_OBJECT_HANDLE hObject, /* the object's handle */ CK_ATTRIBUTE_PTR pTemplate, /* template for new object */ CK_ULONG ulCount, /* attributes in template */ CK_OBJECT_HANDLE_PTR phNewObject /* receives handle of copy */ ); #endif /* C_DestroyObject destroys an object. */ CK_PKCS11_FUNCTION_INFO(C_DestroyObject) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_OBJECT_HANDLE hObject /* the object's handle */ ); #endif /* C_GetObjectSize gets the size of an object in bytes. */ CK_PKCS11_FUNCTION_INFO(C_GetObjectSize) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_OBJECT_HANDLE hObject, /* the object's handle */ CK_ULONG_PTR pulSize /* receives size of object */ ); #endif /* C_GetAttributeValue obtains the value of one or more object * attributes. */ CK_PKCS11_FUNCTION_INFO(C_GetAttributeValue) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_OBJECT_HANDLE hObject, /* the object's handle */ CK_ATTRIBUTE_PTR pTemplate, /* specifies attrs; gets vals */ CK_ULONG ulCount /* attributes in template */ ); #endif /* C_SetAttributeValue modifies the value of one or more object * attributes */ CK_PKCS11_FUNCTION_INFO(C_SetAttributeValue) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_OBJECT_HANDLE hObject, /* the object's handle */ CK_ATTRIBUTE_PTR pTemplate, /* specifies attrs and values */ CK_ULONG ulCount /* attributes in template */ ); #endif /* C_FindObjectsInit initializes a search for token and session * objects that match a template. */ CK_PKCS11_FUNCTION_INFO(C_FindObjectsInit) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_ATTRIBUTE_PTR pTemplate, /* attribute values to match */ CK_ULONG ulCount /* attrs in search template */ ); #endif /* C_FindObjects continues a search for token and session * objects that match a template, obtaining additional object * handles. */ CK_PKCS11_FUNCTION_INFO(C_FindObjects) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* session's handle */ CK_OBJECT_HANDLE_PTR phObject, /* gets obj. handles */ CK_ULONG ulMaxObjectCount, /* max handles to get */ CK_ULONG_PTR pulObjectCount /* actual # returned */ ); #endif /* C_FindObjectsFinal finishes a search for token and session * objects. */ CK_PKCS11_FUNCTION_INFO(C_FindObjectsFinal) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession /* the session's handle */ ); #endif /* Encryption and decryption */ /* C_EncryptInit initializes an encryption operation. */ CK_PKCS11_FUNCTION_INFO(C_EncryptInit) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_MECHANISM_PTR pMechanism, /* the encryption mechanism */ CK_OBJECT_HANDLE hKey /* handle of encryption key */ ); #endif /* C_Encrypt encrypts single-part data. */ CK_PKCS11_FUNCTION_INFO(C_Encrypt) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* session's handle */ CK_BYTE_PTR pData, /* the plaintext data */ CK_ULONG ulDataLen, /* bytes of plaintext */ CK_BYTE_PTR pEncryptedData, /* gets ciphertext */ CK_ULONG_PTR pulEncryptedDataLen /* gets c-text size */ ); #endif /* C_EncryptUpdate continues a multiple-part encryption * operation. */ CK_PKCS11_FUNCTION_INFO(C_EncryptUpdate) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* session's handle */ CK_BYTE_PTR pPart, /* the plaintext data */ CK_ULONG ulPartLen, /* plaintext data len */ CK_BYTE_PTR pEncryptedPart, /* gets ciphertext */ CK_ULONG_PTR pulEncryptedPartLen /* gets c-text size */ ); #endif /* C_EncryptFinal finishes a multiple-part encryption * operation. */ CK_PKCS11_FUNCTION_INFO(C_EncryptFinal) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* session handle */ CK_BYTE_PTR pLastEncryptedPart, /* last c-text */ CK_ULONG_PTR pulLastEncryptedPartLen /* gets last size */ ); #endif /* C_DecryptInit initializes a decryption operation. */ CK_PKCS11_FUNCTION_INFO(C_DecryptInit) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_MECHANISM_PTR pMechanism, /* the decryption mechanism */ CK_OBJECT_HANDLE hKey /* handle of decryption key */ ); #endif /* C_Decrypt decrypts encrypted data in a single part. */ CK_PKCS11_FUNCTION_INFO(C_Decrypt) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* session's handle */ CK_BYTE_PTR pEncryptedData, /* ciphertext */ CK_ULONG ulEncryptedDataLen, /* ciphertext length */ CK_BYTE_PTR pData, /* gets plaintext */ CK_ULONG_PTR pulDataLen /* gets p-text size */ ); #endif /* C_DecryptUpdate continues a multiple-part decryption * operation. */ CK_PKCS11_FUNCTION_INFO(C_DecryptUpdate) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* session's handle */ CK_BYTE_PTR pEncryptedPart, /* encrypted data */ CK_ULONG ulEncryptedPartLen, /* input length */ CK_BYTE_PTR pPart, /* gets plaintext */ CK_ULONG_PTR pulPartLen /* p-text size */ ); #endif /* C_DecryptFinal finishes a multiple-part decryption * operation. */ CK_PKCS11_FUNCTION_INFO(C_DecryptFinal) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_BYTE_PTR pLastPart, /* gets plaintext */ CK_ULONG_PTR pulLastPartLen /* p-text size */ ); #endif /* Message digesting */ /* C_DigestInit initializes a message-digesting operation. */ CK_PKCS11_FUNCTION_INFO(C_DigestInit) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_MECHANISM_PTR pMechanism /* the digesting mechanism */ ); #endif /* C_Digest digests data in a single part. */ CK_PKCS11_FUNCTION_INFO(C_Digest) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_BYTE_PTR pData, /* data to be digested */ CK_ULONG ulDataLen, /* bytes of data to digest */ CK_BYTE_PTR pDigest, /* gets the message digest */ CK_ULONG_PTR pulDigestLen /* gets digest length */ ); #endif /* C_DigestUpdate continues a multiple-part message-digesting * operation. */ CK_PKCS11_FUNCTION_INFO(C_DigestUpdate) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_BYTE_PTR pPart, /* data to be digested */ CK_ULONG ulPartLen /* bytes of data to be digested */ ); #endif /* C_DigestKey continues a multi-part message-digesting * operation, by digesting the value of a secret key as part of * the data already digested. */ CK_PKCS11_FUNCTION_INFO(C_DigestKey) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_OBJECT_HANDLE hKey /* secret key to digest */ ); #endif /* C_DigestFinal finishes a multiple-part message-digesting * operation. */ CK_PKCS11_FUNCTION_INFO(C_DigestFinal) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_BYTE_PTR pDigest, /* gets the message digest */ CK_ULONG_PTR pulDigestLen /* gets byte count of digest */ ); #endif /* Signing and MACing */ /* C_SignInit initializes a signature (private key encryption) * operation, where the signature is (will be) an appendix to * the data, and plaintext cannot be recovered from the *signature. */ CK_PKCS11_FUNCTION_INFO(C_SignInit) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_MECHANISM_PTR pMechanism, /* the signature mechanism */ CK_OBJECT_HANDLE hKey /* handle of signature key */ ); #endif /* C_Sign signs (encrypts with private key) data in a single * part, where the signature is (will be) an appendix to the * data, and plaintext cannot be recovered from the signature. */ CK_PKCS11_FUNCTION_INFO(C_Sign) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_BYTE_PTR pData, /* the data to sign */ CK_ULONG ulDataLen, /* count of bytes to sign */ CK_BYTE_PTR pSignature, /* gets the signature */ CK_ULONG_PTR pulSignatureLen /* gets signature length */ ); #endif /* C_SignUpdate continues a multiple-part signature operation, * where the signature is (will be) an appendix to the data, * and plaintext cannot be recovered from the signature. */ CK_PKCS11_FUNCTION_INFO(C_SignUpdate) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_BYTE_PTR pPart, /* the data to sign */ CK_ULONG ulPartLen /* count of bytes to sign */ ); #endif /* C_SignFinal finishes a multiple-part signature operation, * returning the signature. */ CK_PKCS11_FUNCTION_INFO(C_SignFinal) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_BYTE_PTR pSignature, /* gets the signature */ CK_ULONG_PTR pulSignatureLen /* gets signature length */ ); #endif /* C_SignRecoverInit initializes a signature operation, where * the data can be recovered from the signature. */ CK_PKCS11_FUNCTION_INFO(C_SignRecoverInit) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_MECHANISM_PTR pMechanism, /* the signature mechanism */ CK_OBJECT_HANDLE hKey /* handle of the signature key */ ); #endif /* C_SignRecover signs data in a single operation, where the * data can be recovered from the signature. */ CK_PKCS11_FUNCTION_INFO(C_SignRecover) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_BYTE_PTR pData, /* the data to sign */ CK_ULONG ulDataLen, /* count of bytes to sign */ CK_BYTE_PTR pSignature, /* gets the signature */ CK_ULONG_PTR pulSignatureLen /* gets signature length */ ); #endif /* Verifying signatures and MACs */ /* C_VerifyInit initializes a verification operation, where the * signature is an appendix to the data, and plaintext cannot * cannot be recovered from the signature (e.g. DSA). */ CK_PKCS11_FUNCTION_INFO(C_VerifyInit) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_MECHANISM_PTR pMechanism, /* the verification mechanism */ CK_OBJECT_HANDLE hKey /* verification key */ ); #endif /* C_Verify verifies a signature in a single-part operation, * where the signature is an appendix to the data, and plaintext * cannot be recovered from the signature. */ CK_PKCS11_FUNCTION_INFO(C_Verify) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_BYTE_PTR pData, /* signed data */ CK_ULONG ulDataLen, /* length of signed data */ CK_BYTE_PTR pSignature, /* signature */ CK_ULONG ulSignatureLen /* signature length*/ ); #endif /* C_VerifyUpdate continues a multiple-part verification * operation, where the signature is an appendix to the data, * and plaintext cannot be recovered from the signature. */ CK_PKCS11_FUNCTION_INFO(C_VerifyUpdate) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_BYTE_PTR pPart, /* signed data */ CK_ULONG ulPartLen /* length of signed data */ ); #endif /* C_VerifyFinal finishes a multiple-part verification * operation, checking the signature. */ CK_PKCS11_FUNCTION_INFO(C_VerifyFinal) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_BYTE_PTR pSignature, /* signature to verify */ CK_ULONG ulSignatureLen /* signature length */ ); #endif /* C_VerifyRecoverInit initializes a signature verification * operation, where the data is recovered from the signature. */ CK_PKCS11_FUNCTION_INFO(C_VerifyRecoverInit) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_MECHANISM_PTR pMechanism, /* the verification mechanism */ CK_OBJECT_HANDLE hKey /* verification key */ ); #endif /* C_VerifyRecover verifies a signature in a single-part * operation, where the data is recovered from the signature. */ CK_PKCS11_FUNCTION_INFO(C_VerifyRecover) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_BYTE_PTR pSignature, /* signature to verify */ CK_ULONG ulSignatureLen, /* signature length */ CK_BYTE_PTR pData, /* gets signed data */ CK_ULONG_PTR pulDataLen /* gets signed data len */ ); #endif /* Dual-function cryptographic operations */ /* C_DigestEncryptUpdate continues a multiple-part digesting * and encryption operation. */ CK_PKCS11_FUNCTION_INFO(C_DigestEncryptUpdate) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* session's handle */ CK_BYTE_PTR pPart, /* the plaintext data */ CK_ULONG ulPartLen, /* plaintext length */ CK_BYTE_PTR pEncryptedPart, /* gets ciphertext */ CK_ULONG_PTR pulEncryptedPartLen /* gets c-text length */ ); #endif /* C_DecryptDigestUpdate continues a multiple-part decryption and * digesting operation. */ CK_PKCS11_FUNCTION_INFO(C_DecryptDigestUpdate) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* session's handle */ CK_BYTE_PTR pEncryptedPart, /* ciphertext */ CK_ULONG ulEncryptedPartLen, /* ciphertext length */ CK_BYTE_PTR pPart, /* gets plaintext */ CK_ULONG_PTR pulPartLen /* gets plaintext len */ ); #endif /* C_SignEncryptUpdate continues a multiple-part signing and * encryption operation. */ CK_PKCS11_FUNCTION_INFO(C_SignEncryptUpdate) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* session's handle */ CK_BYTE_PTR pPart, /* the plaintext data */ CK_ULONG ulPartLen, /* plaintext length */ CK_BYTE_PTR pEncryptedPart, /* gets ciphertext */ CK_ULONG_PTR pulEncryptedPartLen /* gets c-text length */ ); #endif /* C_DecryptVerifyUpdate continues a multiple-part decryption and * verify operation. */ CK_PKCS11_FUNCTION_INFO(C_DecryptVerifyUpdate) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* session's handle */ CK_BYTE_PTR pEncryptedPart, /* ciphertext */ CK_ULONG ulEncryptedPartLen, /* ciphertext length */ CK_BYTE_PTR pPart, /* gets plaintext */ CK_ULONG_PTR pulPartLen /* gets p-text length */ ); #endif /* Key management */ /* C_GenerateKey generates a secret key, creating a new key * object. */ CK_PKCS11_FUNCTION_INFO(C_GenerateKey) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_MECHANISM_PTR pMechanism, /* key generation mech. */ CK_ATTRIBUTE_PTR pTemplate, /* template for new key */ CK_ULONG ulCount, /* # of attrs in template */ CK_OBJECT_HANDLE_PTR phKey /* gets handle of new key */ ); #endif /* C_GenerateKeyPair generates a public-key/private-key pair, * creating new key objects. */ CK_PKCS11_FUNCTION_INFO(C_GenerateKeyPair) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* session * handle */ CK_MECHANISM_PTR pMechanism, /* key-gen * mech. */ CK_ATTRIBUTE_PTR pPublicKeyTemplate, /* template * for pub. * key */ CK_ULONG ulPublicKeyAttributeCount, /* # pub. * attrs. */ CK_ATTRIBUTE_PTR pPrivateKeyTemplate, /* template * for priv. * key */ CK_ULONG ulPrivateKeyAttributeCount, /* # priv. * attrs. */ CK_OBJECT_HANDLE_PTR phPublicKey, /* gets pub. * key * handle */ CK_OBJECT_HANDLE_PTR phPrivateKey /* gets * priv. key * handle */ ); #endif /* C_WrapKey wraps (i.e., encrypts) a key. */ CK_PKCS11_FUNCTION_INFO(C_WrapKey) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_MECHANISM_PTR pMechanism, /* the wrapping mechanism */ CK_OBJECT_HANDLE hWrappingKey, /* wrapping key */ CK_OBJECT_HANDLE hKey, /* key to be wrapped */ CK_BYTE_PTR pWrappedKey, /* gets wrapped key */ CK_ULONG_PTR pulWrappedKeyLen /* gets wrapped key size */ ); #endif /* C_UnwrapKey unwraps (decrypts) a wrapped key, creating a new * key object. */ CK_PKCS11_FUNCTION_INFO(C_UnwrapKey) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* session's handle */ CK_MECHANISM_PTR pMechanism, /* unwrapping mech. */ CK_OBJECT_HANDLE hUnwrappingKey, /* unwrapping key */ CK_BYTE_PTR pWrappedKey, /* the wrapped key */ CK_ULONG ulWrappedKeyLen, /* wrapped key len */ CK_ATTRIBUTE_PTR pTemplate, /* new key template */ CK_ULONG ulAttributeCount, /* template length */ CK_OBJECT_HANDLE_PTR phKey /* gets new handle */ ); #endif /* C_DeriveKey derives a key from a base key, creating a new key * object. */ CK_PKCS11_FUNCTION_INFO(C_DeriveKey) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* session's handle */ CK_MECHANISM_PTR pMechanism, /* key deriv. mech. */ CK_OBJECT_HANDLE hBaseKey, /* base key */ CK_ATTRIBUTE_PTR pTemplate, /* new key template */ CK_ULONG ulAttributeCount, /* template length */ CK_OBJECT_HANDLE_PTR phKey /* gets new handle */ ); #endif /* Random number generation */ /* C_SeedRandom mixes additional seed material into the token's * random number generator. */ CK_PKCS11_FUNCTION_INFO(C_SeedRandom) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_BYTE_PTR pSeed, /* the seed material */ CK_ULONG ulSeedLen /* length of seed material */ ); #endif /* C_GenerateRandom generates random data. */ CK_PKCS11_FUNCTION_INFO(C_GenerateRandom) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_BYTE_PTR RandomData, /* receives the random data */ CK_ULONG ulRandomLen /* # of bytes to generate */ ); #endif /* Parallel function management */ /* C_GetFunctionStatus is a legacy function; it obtains an * updated status of a function running in parallel with an * application. */ CK_PKCS11_FUNCTION_INFO(C_GetFunctionStatus) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession /* the session's handle */ ); #endif /* C_CancelFunction is a legacy function; it cancels a function * running in parallel. */ CK_PKCS11_FUNCTION_INFO(C_CancelFunction) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession /* the session's handle */ ); #endif /* Functions added in for Cryptoki Version 2.01 or later */ /* C_WaitForSlotEvent waits for a slot event (token insertion, * removal, etc.) to occur. */ CK_PKCS11_FUNCTION_INFO(C_WaitForSlotEvent) #ifdef CK_NEED_ARG_LIST ( CK_FLAGS flags, /* blocking/nonblocking flag */ CK_SLOT_ID_PTR pSlot, /* location that receives the slot ID */ CK_VOID_PTR pRserved /* reserved. Should be NULL_PTR */ ); #endif cackey-0.7.10/pkcs11/pkcs11n.h0000644000000000000000000001060113563537513014300 0ustar rootroot/* ***** BEGIN COPYRIGHT BLOCK ***** * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is the Netscape security libraries. * * The Initial Developer of the Original Code is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1994-2000 Netscape Communications Corporation. All * Rights Reserved. * * Alternatively, the contents of this file may be used under the * terms of the GNU General Public License Version 2 or later (the * "GPL"), in which case the provisions of the GPL are applicable * instead of those above. If you wish to allow use of your * version of this file only under the terms of the GPL and not to * allow others to use your version of this file under the MPL, * indicate your decision by deleting the provisions above and * replace them with the notice and other provisions required by * the GPL. If you do not delete the provisions above, a recipient * may use your version of this file under either the MPL or the * GPL. * ***** END COPYRIGHT BLOCK *****/ #ifndef _PKCS11N_H_ #define _PKCS11N_H_ #ifdef DEBUG static const char CKT_CVS_ID[] = "@(#) $RCSfile: pkcs11n.h,v $ $Revision: 1.1 $ $Date: 2006/06/09 18:39:11 $ $Name: $"; #endif /* DEBUG */ /* * pkcs11n.h * * This file contains the NSS-specific type definitions for Cryptoki * (PKCS#11). */ /* * NSSCK_VENDOR_NETSCAPE * * Cryptoki reserves the high half of all the number spaces for * vendor-defined use. I'd like to keep all of our Netscape- * specific values together, but not in the oh-so-obvious * 0x80000001, 0x80000002, etc. area. So I've picked an offset, * and constructed values for the beginnings of our spaces. * * Note that some "historical" Netscape values don't fall within * this range. */ #define NSSCK_VENDOR_NETSCAPE 0x4E534350 /* NSCP */ /* * Netscape-defined object classes * */ #define CKO_NETSCAPE (CKO_VENDOR_DEFINED|NSSCK_VENDOR_NETSCAPE) #define CKO_NETSCAPE_TRUST (CKO_NETSCAPE + 3) #define CKO_MOZ_READER (CKO_NETSCAPE + 5) /* * Netscape-defined object attributes * */ #define CKA_NETSCAPE (CKA_VENDOR_DEFINED|NSSCK_VENDOR_NETSCAPE) #define CKA_MOZ_IS_COOL_KEY (CKA_NETSCAPE + 24) #define CKA_MOZ_ATR (CKA_NETSCAPE + 25) #define CKA_MOZ_TPS_URL (CKA_NETSCAPE + 26) /* * Trust info * * This isn't part of the Cryptoki standard (yet), so I'm putting * all the definitions here. Some of this would move to nssckt.h * if trust info were made part of the standard. In view of this * possibility, I'm putting my (NSS) values in the NSS * vendor space, like everything else. */ typedef CK_ULONG CK_TRUST; /* If trust goes standard, these'll probably drop out of vendor space. */ #define CKT_VENDOR_DEFINED 0x80000000 #define CKT_NETSCAPE (CKT_VENDOR_DEFINED|NSSCK_VENDOR_NETSCAPE) #define CK_TRUSTED (CKT_NETSCAPE + 1) #define CK_TRUSTED_DELEGATOR (CKT_NETSCAPE + 2) #define CK_MUST_VERIFY_TRUST (CKT_NETSCAPE + 3) #define CK_NOT_TRUSTED (CKT_NETSCAPE + 10) #define CK_TRUST_UNKNOWN (CKT_NETSCAPE + 5) /* default */ #define CKA_TRUST (CKA_NETSCAPE + 0x2000) #define CKA_TRUST_DIGITAL_SIGNATURE (CKA_TRUST + 1) #define CKA_TRUST_NON_REPUDIATION (CKA_TRUST + 2) #define CKA_TRUST_KEY_ENCIPHERMENT (CKA_TRUST + 3) #define CKA_TRUST_DATA_ENCIPHERMENT (CKA_TRUST + 4) #define CKA_TRUST_KEY_AGREEMENT (CKA_TRUST + 5) #define CKA_TRUST_KEY_CERT_SIGN (CKA_TRUST + 6) #define CKA_TRUST_CRL_SIGN (CKA_TRUST + 7) #define CKA_CERT_SHA1_HASH (CKA_TRUST + 0x64) #define CKA_CERT_MD5_HASH (CKA_TRUST + 0x65) #ifndef CKA_TRUST_SERVER_AUTH # define CKA_TRUST_SERVER_AUTH 0xce536358 #endif #ifndef CKA_TRUST_CLIENT_AUTH # define CKA_TRUST_CLIENT_AUTH 0xce536359 #endif #ifndef CKA_TRUST_CODE_SIGNING # define CKA_TRUST_CODE_SIGNING 0xce53635a #endif #ifndef CKA_TRUST_EMAIL_PROTECTION # define CKA_TRUST_EMAIL_PROTECTION 0xce53635b #endif #endif /* _PKCS11N_H_ */ cackey-0.7.10/pkcs11/pkcs11t.h0000644000000000000000000014170713563537513014322 0ustar rootroot/* ***** BEGIN COPYRIGHT BLOCK ***** * Copyright (C) 2005 Red Hat, Inc. * All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation version * 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * ***** END COPYRIGHT BLOCK *****/ /* pkcs11t.h include file for PKCS #11. 2001 June 25 */ /* See top of pkcs11.h for information about the macros that * must be defined and the structure-packing conventions that * must be set before including this file. */ #ifndef _PKCS11T_H_ #define _PKCS11T_H_ 1 #ifndef FALSE #define FALSE 0 #endif #ifndef TRUE #define TRUE (!FALSE) #endif /* an unsigned 8-bit value */ typedef unsigned char CK_BYTE; /* an unsigned 8-bit character */ typedef CK_BYTE CK_CHAR; /* an 8-bit UTF-8 character */ typedef CK_BYTE CK_UTF8CHAR; /* a BYTE-sized Boolean flag */ typedef CK_BYTE CK_BBOOL; /* an unsigned value, at least 32 bits long */ typedef unsigned long int CK_ULONG; /* a signed value, the same size as a CK_ULONG */ /* CK_LONG is new for v2.0 */ typedef long int CK_LONG; /* at least 32 bits; each bit is a Boolean flag */ typedef CK_ULONG CK_FLAGS; /* some special values for certain CK_ULONG variables */ #define CK_UNAVAILABLE_INFORMATION (~0UL) #define CK_EFFECTIVELY_INFINITE 0 typedef CK_BYTE CK_PTR CK_BYTE_PTR; typedef CK_CHAR CK_PTR CK_CHAR_PTR; typedef CK_UTF8CHAR CK_PTR CK_UTF8CHAR_PTR; typedef CK_ULONG CK_PTR CK_ULONG_PTR; typedef void CK_PTR CK_VOID_PTR; /* Pointer to a CK_VOID_PTR-- i.e., pointer to pointer to void */ typedef CK_VOID_PTR CK_PTR CK_VOID_PTR_PTR; /* The following value is always invalid if used as a session */ /* handle or object handle */ #define CK_INVALID_HANDLE 0 typedef struct CK_VERSION { CK_BYTE major; /* integer portion of version number */ CK_BYTE minor; /* 1/100ths portion of version number */ } CK_VERSION; typedef CK_VERSION CK_PTR CK_VERSION_PTR; typedef struct CK_INFO { /* manufacturerID and libraryDecription have been changed from * CK_CHAR to CK_UTF8CHAR for v2.10 */ CK_VERSION cryptokiVersion; /* Cryptoki interface ver */ CK_UTF8CHAR manufacturerID[32]; /* blank padded */ CK_FLAGS flags; /* must be zero */ /* libraryDescription and libraryVersion are new for v2.0 */ CK_UTF8CHAR libraryDescription[32]; /* blank padded */ CK_VERSION libraryVersion; /* version of library */ } CK_INFO; typedef CK_INFO CK_PTR CK_INFO_PTR; /* CK_NOTIFICATION enumerates the types of notifications that * Cryptoki provides to an application */ /* CK_NOTIFICATION has been changed from an enum to a CK_ULONG * for v2.0 */ typedef CK_ULONG CK_NOTIFICATION; #define CKN_SURRENDER 0 typedef CK_ULONG CK_SLOT_ID; typedef CK_SLOT_ID CK_PTR CK_SLOT_ID_PTR; /* CK_SLOT_INFO provides information about a slot */ typedef struct CK_SLOT_INFO { /* slotDescription and manufacturerID have been changed from * CK_CHAR to CK_UTF8CHAR for v2.10 */ CK_UTF8CHAR slotDescription[64]; /* blank padded */ CK_UTF8CHAR manufacturerID[32]; /* blank padded */ CK_FLAGS flags; /* hardwareVersion and firmwareVersion are new for v2.0 */ CK_VERSION hardwareVersion; /* version of hardware */ CK_VERSION firmwareVersion; /* version of firmware */ } CK_SLOT_INFO; /* flags: bit flags that provide capabilities of the slot * Bit Flag Mask Meaning */ #define CKF_TOKEN_PRESENT 0x00000001 /* a token is there */ #define CKF_REMOVABLE_DEVICE 0x00000002 /* removable devices*/ #define CKF_HW_SLOT 0x00000004 /* hardware slot */ typedef CK_SLOT_INFO CK_PTR CK_SLOT_INFO_PTR; /* CK_TOKEN_INFO provides information about a token */ typedef struct CK_TOKEN_INFO { /* label, manufacturerID, and model have been changed from * CK_CHAR to CK_UTF8CHAR for v2.10 */ CK_UTF8CHAR label[32]; /* blank padded */ CK_UTF8CHAR manufacturerID[32]; /* blank padded */ CK_UTF8CHAR model[16]; /* blank padded */ CK_CHAR serialNumber[16]; /* blank padded */ CK_FLAGS flags; /* see below */ /* ulMaxSessionCount, ulSessionCount, ulMaxRwSessionCount, * ulRwSessionCount, ulMaxPinLen, and ulMinPinLen have all been * changed from CK_USHORT to CK_ULONG for v2.0 */ CK_ULONG ulMaxSessionCount; /* max open sessions */ CK_ULONG ulSessionCount; /* sess. now open */ CK_ULONG ulMaxRwSessionCount; /* max R/W sessions */ CK_ULONG ulRwSessionCount; /* R/W sess. now open */ CK_ULONG ulMaxPinLen; /* in bytes */ CK_ULONG ulMinPinLen; /* in bytes */ CK_ULONG ulTotalPublicMemory; /* in bytes */ CK_ULONG ulFreePublicMemory; /* in bytes */ CK_ULONG ulTotalPrivateMemory; /* in bytes */ CK_ULONG ulFreePrivateMemory; /* in bytes */ /* hardwareVersion, firmwareVersion, and time are new for * v2.0 */ CK_VERSION hardwareVersion; /* version of hardware */ CK_VERSION firmwareVersion; /* version of firmware */ CK_CHAR utcTime[16]; /* time */ } CK_TOKEN_INFO; /* The flags parameter is defined as follows: * Bit Flag Mask Meaning */ #define CKF_RNG 0x00000001 /* has random # * generator */ #define CKF_WRITE_PROTECTED 0x00000002 /* token is * write- * protected */ #define CKF_LOGIN_REQUIRED 0x00000004 /* user must * login */ #define CKF_USER_PIN_INITIALIZED 0x00000008 /* normal user's * PIN is set */ /* CKF_RESTORE_KEY_NOT_NEEDED is new for v2.0. If it is set, * that means that *every* time the state of cryptographic * operations of a session is successfully saved, all keys * needed to continue those operations are stored in the state */ #define CKF_RESTORE_KEY_NOT_NEEDED 0x00000020 /* CKF_CLOCK_ON_TOKEN is new for v2.0. If it is set, that means * that the token has some sort of clock. The time on that * clock is returned in the token info structure */ #define CKF_CLOCK_ON_TOKEN 0x00000040 /* CKF_PROTECTED_AUTHENTICATION_PATH is new for v2.0. If it is * set, that means that there is some way for the user to login * without sending a PIN through the Cryptoki library itself */ #define CKF_PROTECTED_AUTHENTICATION_PATH 0x00000100 /* CKF_DUAL_CRYPTO_OPERATIONS is new for v2.0. If it is true, * that means that a single session with the token can perform * dual simultaneous cryptographic operations (digest and * encrypt; decrypt and digest; sign and encrypt; and decrypt * and sign) */ #define CKF_DUAL_CRYPTO_OPERATIONS 0x00000200 /* CKF_TOKEN_INITIALIZED if new for v2.10. If it is true, the * token has been initialized using C_InitializeToken or an * equivalent mechanism outside the scope of PKCS #11. * Calling C_InitializeToken when this flag is set will cause * the token to be reinitialized. */ #define CKF_TOKEN_INITIALIZED 0x00000400 /* CKF_SECONDARY_AUTHENTICATION if new for v2.10. If it is * true, the token supports secondary authentication for * private key objects. */ #define CKF_SECONDARY_AUTHENTICATION 0x00000800 /* CKF_USER_PIN_COUNT_LOW if new for v2.10. If it is true, an * incorrect user login PIN has been entered at least once * since the last successful authentication. */ #define CKF_USER_PIN_COUNT_LOW 0x00010000 /* CKF_USER_PIN_FINAL_TRY if new for v2.10. If it is true, * supplying an incorrect user PIN will it to become locked. */ #define CKF_USER_PIN_FINAL_TRY 0x00020000 /* CKF_USER_PIN_LOCKED if new for v2.10. If it is true, the * user PIN has been locked. User login to the token is not * possible. */ #define CKF_USER_PIN_LOCKED 0x00040000 /* CKF_USER_PIN_TO_BE_CHANGED if new for v2.10. If it is true, * the user PIN value is the default value set by token * initialization or manufacturing, or the PIN has been * expired by the card. */ #define CKF_USER_PIN_TO_BE_CHANGED 0x00080000 /* CKF_SO_PIN_COUNT_LOW if new for v2.10. If it is true, an * incorrect SO login PIN has been entered at least once since * the last successful authentication. */ #define CKF_SO_PIN_COUNT_LOW 0x00100000 /* CKF_SO_PIN_FINAL_TRY if new for v2.10. If it is true, * supplying an incorrect SO PIN will it to become locked. */ #define CKF_SO_PIN_FINAL_TRY 0x00200000 /* CKF_SO_PIN_LOCKED if new for v2.10. If it is true, the SO * PIN has been locked. SO login to the token is not possible. */ #define CKF_SO_PIN_LOCKED 0x00400000 /* CKF_SO_PIN_TO_BE_CHANGED if new for v2.10. If it is true, * the SO PIN value is the default value set by token * initialization or manufacturing, or the PIN has been * expired by the card. */ #define CKF_SO_PIN_TO_BE_CHANGED 0x00800000 typedef CK_TOKEN_INFO CK_PTR CK_TOKEN_INFO_PTR; /* CK_SESSION_HANDLE is a Cryptoki-assigned value that * identifies a session */ typedef CK_ULONG CK_SESSION_HANDLE; typedef CK_SESSION_HANDLE CK_PTR CK_SESSION_HANDLE_PTR; /* CK_USER_TYPE enumerates the types of Cryptoki users */ /* CK_USER_TYPE has been changed from an enum to a CK_ULONG for * v2.0 */ typedef CK_ULONG CK_USER_TYPE; /* Security Officer */ #define CKU_SO 0 /* Normal user */ #define CKU_USER 1 /* CK_STATE enumerates the session states */ /* CK_STATE has been changed from an enum to a CK_ULONG for * v2.0 */ typedef CK_ULONG CK_STATE; #define CKS_RO_PUBLIC_SESSION 0 #define CKS_RO_USER_FUNCTIONS 1 #define CKS_RW_PUBLIC_SESSION 2 #define CKS_RW_USER_FUNCTIONS 3 #define CKS_RW_SO_FUNCTIONS 4 /* CK_SESSION_INFO provides information about a session */ typedef struct CK_SESSION_INFO { CK_SLOT_ID slotID; CK_STATE state; CK_FLAGS flags; /* see below */ /* ulDeviceError was changed from CK_USHORT to CK_ULONG for * v2.0 */ CK_ULONG ulDeviceError; /* device-dependent error code */ } CK_SESSION_INFO; /* The flags are defined in the following table: * Bit Flag Mask Meaning */ #define CKF_RW_SESSION 0x00000002 /* session is r/w */ #define CKF_SERIAL_SESSION 0x00000004 /* no parallel */ typedef CK_SESSION_INFO CK_PTR CK_SESSION_INFO_PTR; /* CK_OBJECT_HANDLE is a token-specific identifier for an * object */ typedef CK_ULONG CK_OBJECT_HANDLE; typedef CK_OBJECT_HANDLE CK_PTR CK_OBJECT_HANDLE_PTR; /* CK_OBJECT_CLASS is a value that identifies the classes (or * types) of objects that Cryptoki recognizes. It is defined * as follows: */ /* CK_OBJECT_CLASS was changed from CK_USHORT to CK_ULONG for * v2.0 */ typedef CK_ULONG CK_OBJECT_CLASS; /* The following classes of objects are defined: */ /* CKO_HW_FEATURE is new for v2.10 */ /* CKO_DOMAIN_PARAMETERS is new for v2.11 */ #define CKO_DATA 0x00000000 #define CKO_CERTIFICATE 0x00000001 #define CKO_PUBLIC_KEY 0x00000002 #define CKO_PRIVATE_KEY 0x00000003 #define CKO_SECRET_KEY 0x00000004 #define CKO_HW_FEATURE 0x00000005 #define CKO_DOMAIN_PARAMETERS 0x00000006 #define CKO_VENDOR_DEFINED 0x80000000 typedef CK_OBJECT_CLASS CK_PTR CK_OBJECT_CLASS_PTR; /* CK_HW_FEATURE_TYPE is new for v2.10. CK_HW_FEATURE_TYPE is a * value that identifies the hardware feature type of an object * with CK_OBJECT_CLASS equal to CKO_HW_FEATURE. */ typedef CK_ULONG CK_HW_FEATURE_TYPE; /* The following hardware feature types are defined */ #define CKH_MONOTONIC_COUNTER 0x00000001 #define CKH_CLOCK 0x00000002 #define CKH_VENDOR_DEFINED 0x80000000 /* CK_KEY_TYPE is a value that identifies a key type */ /* CK_KEY_TYPE was changed from CK_USHORT to CK_ULONG for v2.0 */ typedef CK_ULONG CK_KEY_TYPE; /* the following key types are defined: */ #define CKK_RSA 0x00000000 #define CKK_DSA 0x00000001 #define CKK_DH 0x00000002 /* CKK_ECDSA and CKK_KEA are new for v2.0 */ /* CKK_ECDSA is deprecated in v2.11, CKK_EC is preferred. */ #define CKK_ECDSA 0x00000003 #define CKK_EC 0x00000003 #define CKK_X9_42_DH 0x00000004 #define CKK_KEA 0x00000005 #define CKK_GENERIC_SECRET 0x00000010 #define CKK_RC2 0x00000011 #define CKK_RC4 0x00000012 #define CKK_DES 0x00000013 #define CKK_DES2 0x00000014 #define CKK_DES3 0x00000015 /* all these key types are new for v2.0 */ #define CKK_CAST 0x00000016 #define CKK_CAST3 0x00000017 /* CKK_CAST5 is deprecated in v2.11, CKK_CAST128 is preferred. */ #define CKK_CAST5 0x00000018 #define CKK_CAST128 0x00000018 #define CKK_RC5 0x00000019 #define CKK_IDEA 0x0000001A #define CKK_SKIPJACK 0x0000001B #define CKK_BATON 0x0000001C #define CKK_JUNIPER 0x0000001D #define CKK_CDMF 0x0000001E #define CKK_AES 0x0000001F #define CKK_VENDOR_DEFINED 0x80000000 /* CK_CERTIFICATE_TYPE is a value that identifies a certificate * type */ /* CK_CERTIFICATE_TYPE was changed from CK_USHORT to CK_ULONG * for v2.0 */ typedef CK_ULONG CK_CERTIFICATE_TYPE; /* The following certificate types are defined: */ /* CKC_X_509_ATTR_CERT is new for v2.10 */ #define CKC_X_509 0x00000000 #define CKC_X_509_ATTR_CERT 0x00000001 #define CKC_VENDOR_DEFINED 0x80000000 /* CK_ATTRIBUTE_TYPE is a value that identifies an attribute * type */ /* CK_ATTRIBUTE_TYPE was changed from CK_USHORT to CK_ULONG for * v2.0 */ typedef CK_ULONG CK_ATTRIBUTE_TYPE; /* The following attribute types are defined: */ #define CKA_CLASS 0x00000000 #define CKA_TOKEN 0x00000001 #define CKA_PRIVATE 0x00000002 #define CKA_LABEL 0x00000003 #define CKA_APPLICATION 0x00000010 #define CKA_VALUE 0x00000011 /* CKA_OBJECT_ID is new for v2.10 */ #define CKA_OBJECT_ID 0x00000012 #define CKA_CERTIFICATE_TYPE 0x00000080 #define CKA_ISSUER 0x00000081 #define CKA_SERIAL_NUMBER 0x00000082 /* CKA_AC_ISSUER, CKA_OWNER, and CKA_ATTR_TYPES are new * for v2.10 */ #define CKA_AC_ISSUER 0x00000083 #define CKA_OWNER 0x00000084 #define CKA_ATTR_TYPES 0x00000085 /* CKA_TRUSTED is new for v2.11 */ #define CKA_TRUSTED 0x00000086 #define CKA_KEY_TYPE 0x00000100 #define CKA_SUBJECT 0x00000101 #define CKA_ID 0x00000102 #define CKA_SENSITIVE 0x00000103 #define CKA_ENCRYPT 0x00000104 #define CKA_DECRYPT 0x00000105 #define CKA_WRAP 0x00000106 #define CKA_UNWRAP 0x00000107 #define CKA_SIGN 0x00000108 #define CKA_SIGN_RECOVER 0x00000109 #define CKA_VERIFY 0x0000010A #define CKA_VERIFY_RECOVER 0x0000010B #define CKA_DERIVE 0x0000010C #define CKA_START_DATE 0x00000110 #define CKA_END_DATE 0x00000111 #define CKA_MODULUS 0x00000120 #define CKA_MODULUS_BITS 0x00000121 #define CKA_PUBLIC_EXPONENT 0x00000122 #define CKA_PRIVATE_EXPONENT 0x00000123 #define CKA_PRIME_1 0x00000124 #define CKA_PRIME_2 0x00000125 #define CKA_EXPONENT_1 0x00000126 #define CKA_EXPONENT_2 0x00000127 #define CKA_COEFFICIENT 0x00000128 #define CKA_PRIME 0x00000130 #define CKA_SUBPRIME 0x00000131 #define CKA_BASE 0x00000132 /* CKA_PRIME_BITS and CKA_SUB_PRIME_BITS are new for v2.11 */ #define CKA_PRIME_BITS 0x00000133 #define CKA_SUB_PRIME_BITS 0x00000134 #define CKA_VALUE_BITS 0x00000160 #define CKA_VALUE_LEN 0x00000161 /* CKA_EXTRACTABLE, CKA_LOCAL, CKA_NEVER_EXTRACTABLE, * CKA_ALWAYS_SENSITIVE, CKA_MODIFIABLE, CKA_ECDSA_PARAMS, * and CKA_EC_POINT are new for v2.0 */ #define CKA_EXTRACTABLE 0x00000162 #define CKA_LOCAL 0x00000163 #define CKA_NEVER_EXTRACTABLE 0x00000164 #define CKA_ALWAYS_SENSITIVE 0x00000165 /* CKA_KEY_GEN_MECHANISM is new for v2.11 */ #define CKA_KEY_GEN_MECHANISM 0x00000166 #define CKA_MODIFIABLE 0x00000170 /* CKA_ECDSA_PARAMS is deprecated in v2.11, * CKA_EC_PARAMS is preferred. */ #define CKA_ECDSA_PARAMS 0x00000180 #define CKA_EC_PARAMS 0x00000180 #define CKA_EC_POINT 0x00000181 /* CKA_SECONDARY_AUTH, CKA_AUTH_PIN_FLAGS, * CKA_HW_FEATURE_TYPE, CKA_RESET_ON_INIT, and CKA_HAS_RESET * are new for v2.10 */ #define CKA_SECONDARY_AUTH 0x00000200 #define CKA_AUTH_PIN_FLAGS 0x00000201 #define CKA_HW_FEATURE_TYPE 0x00000300 #define CKA_RESET_ON_INIT 0x00000301 #define CKA_HAS_RESET 0x00000302 #define CKA_VENDOR_DEFINED 0x80000000 /* CK_ATTRIBUTE is a structure that includes the type, length * and value of an attribute */ typedef struct CK_ATTRIBUTE { CK_ATTRIBUTE_TYPE type; CK_VOID_PTR pValue; /* ulValueLen went from CK_USHORT to CK_ULONG for v2.0 */ CK_ULONG ulValueLen; /* in bytes */ } CK_ATTRIBUTE; typedef CK_ATTRIBUTE CK_PTR CK_ATTRIBUTE_PTR; /* CK_DATE is a structure that defines a date */ typedef struct CK_DATE{ CK_CHAR year[4]; /* the year ("1900" - "9999") */ CK_CHAR month[2]; /* the month ("01" - "12") */ CK_CHAR day[2]; /* the day ("01" - "31") */ } CK_DATE; /* CK_MECHANISM_TYPE is a value that identifies a mechanism * type */ /* CK_MECHANISM_TYPE was changed from CK_USHORT to CK_ULONG for * v2.0 */ typedef CK_ULONG CK_MECHANISM_TYPE; /* the following mechanism types are defined: */ #define CKM_RSA_PKCS_KEY_PAIR_GEN 0x00000000 #define CKM_RSA_PKCS 0x00000001 #define CKM_RSA_9796 0x00000002 #define CKM_RSA_X_509 0x00000003 /* CKM_MD2_RSA_PKCS, CKM_MD5_RSA_PKCS, and CKM_SHA1_RSA_PKCS * are new for v2.0. They are mechanisms which hash and sign */ #define CKM_MD2_RSA_PKCS 0x00000004 #define CKM_MD5_RSA_PKCS 0x00000005 #define CKM_SHA1_RSA_PKCS 0x00000006 /* CKM_RIPEMD128_RSA_PKCS, CKM_RIPEMD160_RSA_PKCS, and * CKM_RSA_PKCS_OAEP are new for v2.10 */ #define CKM_RIPEMD128_RSA_PKCS 0x00000007 #define CKM_RIPEMD160_RSA_PKCS 0x00000008 #define CKM_RSA_PKCS_OAEP 0x00000009 /* CKM_RSA_X9_31_KEY_PAIR_GEN, CKM_RSA_X9_31, CKM_SHA1_RSA_X9_31, * CKM_RSA_PKCS_PSS, and CKM_SHA1_RSA_PKCS_PSS are new for v2.11 */ #define CKM_RSA_X9_31_KEY_PAIR_GEN 0x0000000A #define CKM_RSA_X9_31 0x0000000B #define CKM_SHA1_RSA_X9_31 0x0000000C #define CKM_RSA_PKCS_PSS 0x0000000D #define CKM_SHA1_RSA_PKCS_PSS 0x0000000E #define CKM_DSA_KEY_PAIR_GEN 0x00000010 #define CKM_DSA 0x00000011 #define CKM_DSA_SHA1 0x00000012 #define CKM_DH_PKCS_KEY_PAIR_GEN 0x00000020 #define CKM_DH_PKCS_DERIVE 0x00000021 /* CKM_X9_42_DH_KEY_PAIR_GEN, CKM_X9_42_DH_DERIVE, * CKM_X9_42_DH_HYBRID_DERIVE, and CKM_X9_42_MQV_DERIVE are new for * v2.11 */ #define CKM_X9_42_DH_KEY_PAIR_GEN 0x00000030 #define CKM_X9_42_DH_DERIVE 0x00000031 #define CKM_X9_42_DH_HYBRID_DERIVE 0x00000032 #define CKM_X9_42_MQV_DERIVE 0x00000033 #define CKM_RC2_KEY_GEN 0x00000100 #define CKM_RC2_ECB 0x00000101 #define CKM_RC2_CBC 0x00000102 #define CKM_RC2_MAC 0x00000103 /* CKM_RC2_MAC_GENERAL and CKM_RC2_CBC_PAD are new for v2.0 */ #define CKM_RC2_MAC_GENERAL 0x00000104 #define CKM_RC2_CBC_PAD 0x00000105 #define CKM_RC4_KEY_GEN 0x00000110 #define CKM_RC4 0x00000111 #define CKM_DES_KEY_GEN 0x00000120 #define CKM_DES_ECB 0x00000121 #define CKM_DES_CBC 0x00000122 #define CKM_DES_MAC 0x00000123 /* CKM_DES_MAC_GENERAL and CKM_DES_CBC_PAD are new for v2.0 */ #define CKM_DES_MAC_GENERAL 0x00000124 #define CKM_DES_CBC_PAD 0x00000125 #define CKM_DES2_KEY_GEN 0x00000130 #define CKM_DES3_KEY_GEN 0x00000131 #define CKM_DES3_ECB 0x00000132 #define CKM_DES3_CBC 0x00000133 #define CKM_DES3_MAC 0x00000134 /* CKM_DES3_MAC_GENERAL, CKM_DES3_CBC_PAD, CKM_CDMF_KEY_GEN, * CKM_CDMF_ECB, CKM_CDMF_CBC, CKM_CDMF_MAC, * CKM_CDMF_MAC_GENERAL, and CKM_CDMF_CBC_PAD are new for v2.0 */ #define CKM_DES3_MAC_GENERAL 0x00000135 #define CKM_DES3_CBC_PAD 0x00000136 #define CKM_CDMF_KEY_GEN 0x00000140 #define CKM_CDMF_ECB 0x00000141 #define CKM_CDMF_CBC 0x00000142 #define CKM_CDMF_MAC 0x00000143 #define CKM_CDMF_MAC_GENERAL 0x00000144 #define CKM_CDMF_CBC_PAD 0x00000145 #define CKM_MD2 0x00000200 /* CKM_MD2_HMAC and CKM_MD2_HMAC_GENERAL are new for v2.0 */ #define CKM_MD2_HMAC 0x00000201 #define CKM_MD2_HMAC_GENERAL 0x00000202 #define CKM_MD5 0x00000210 /* CKM_MD5_HMAC and CKM_MD5_HMAC_GENERAL are new for v2.0 */ #define CKM_MD5_HMAC 0x00000211 #define CKM_MD5_HMAC_GENERAL 0x00000212 #define CKM_SHA_1 0x00000220 /* CKM_SHA_1_HMAC and CKM_SHA_1_HMAC_GENERAL are new for v2.0 */ #define CKM_SHA_1_HMAC 0x00000221 #define CKM_SHA_1_HMAC_GENERAL 0x00000222 /* CKM_RIPEMD128, CKM_RIPEMD128_HMAC, * CKM_RIPEMD128_HMAC_GENERAL, CKM_RIPEMD160, CKM_RIPEMD160_HMAC, * and CKM_RIPEMD160_HMAC_GENERAL are new for v2.10 */ #define CKM_RIPEMD128 0x00000230 #define CKM_RIPEMD128_HMAC 0x00000231 #define CKM_RIPEMD128_HMAC_GENERAL 0x00000232 #define CKM_RIPEMD160 0x00000240 #define CKM_RIPEMD160_HMAC 0x00000241 #define CKM_RIPEMD160_HMAC_GENERAL 0x00000242 /* All of the following mechanisms are new for v2.0 */ /* Note that CAST128 and CAST5 are the same algorithm */ #define CKM_CAST_KEY_GEN 0x00000300 #define CKM_CAST_ECB 0x00000301 #define CKM_CAST_CBC 0x00000302 #define CKM_CAST_MAC 0x00000303 #define CKM_CAST_MAC_GENERAL 0x00000304 #define CKM_CAST_CBC_PAD 0x00000305 #define CKM_CAST3_KEY_GEN 0x00000310 #define CKM_CAST3_ECB 0x00000311 #define CKM_CAST3_CBC 0x00000312 #define CKM_CAST3_MAC 0x00000313 #define CKM_CAST3_MAC_GENERAL 0x00000314 #define CKM_CAST3_CBC_PAD 0x00000315 #define CKM_CAST5_KEY_GEN 0x00000320 #define CKM_CAST128_KEY_GEN 0x00000320 #define CKM_CAST5_ECB 0x00000321 #define CKM_CAST128_ECB 0x00000321 #define CKM_CAST5_CBC 0x00000322 #define CKM_CAST128_CBC 0x00000322 #define CKM_CAST5_MAC 0x00000323 #define CKM_CAST128_MAC 0x00000323 #define CKM_CAST5_MAC_GENERAL 0x00000324 #define CKM_CAST128_MAC_GENERAL 0x00000324 #define CKM_CAST5_CBC_PAD 0x00000325 #define CKM_CAST128_CBC_PAD 0x00000325 #define CKM_RC5_KEY_GEN 0x00000330 #define CKM_RC5_ECB 0x00000331 #define CKM_RC5_CBC 0x00000332 #define CKM_RC5_MAC 0x00000333 #define CKM_RC5_MAC_GENERAL 0x00000334 #define CKM_RC5_CBC_PAD 0x00000335 #define CKM_IDEA_KEY_GEN 0x00000340 #define CKM_IDEA_ECB 0x00000341 #define CKM_IDEA_CBC 0x00000342 #define CKM_IDEA_MAC 0x00000343 #define CKM_IDEA_MAC_GENERAL 0x00000344 #define CKM_IDEA_CBC_PAD 0x00000345 #define CKM_GENERIC_SECRET_KEY_GEN 0x00000350 #define CKM_CONCATENATE_BASE_AND_KEY 0x00000360 #define CKM_CONCATENATE_BASE_AND_DATA 0x00000362 #define CKM_CONCATENATE_DATA_AND_BASE 0x00000363 #define CKM_XOR_BASE_AND_DATA 0x00000364 #define CKM_EXTRACT_KEY_FROM_KEY 0x00000365 #define CKM_SSL3_PRE_MASTER_KEY_GEN 0x00000370 #define CKM_SSL3_MASTER_KEY_DERIVE 0x00000371 #define CKM_SSL3_KEY_AND_MAC_DERIVE 0x00000372 /* CKM_SSL3_MASTER_KEY_DERIVE_DH, CKM_TLS_PRE_MASTER_KEY_GEN, * CKM_TLS_MASTER_KEY_DERIVE, CKM_TLS_KEY_AND_MAC_DERIVE, and * CKM_TLS_MASTER_KEY_DERIVE_DH are new for v2.11 */ #define CKM_SSL3_MASTER_KEY_DERIVE_DH 0x00000373 #define CKM_TLS_PRE_MASTER_KEY_GEN 0x00000374 #define CKM_TLS_MASTER_KEY_DERIVE 0x00000375 #define CKM_TLS_KEY_AND_MAC_DERIVE 0x00000376 #define CKM_TLS_MASTER_KEY_DERIVE_DH 0x00000377 #define CKM_SSL3_MD5_MAC 0x00000380 #define CKM_SSL3_SHA1_MAC 0x00000381 #define CKM_MD5_KEY_DERIVATION 0x00000390 #define CKM_MD2_KEY_DERIVATION 0x00000391 #define CKM_SHA1_KEY_DERIVATION 0x00000392 #define CKM_PBE_MD2_DES_CBC 0x000003A0 #define CKM_PBE_MD5_DES_CBC 0x000003A1 #define CKM_PBE_MD5_CAST_CBC 0x000003A2 #define CKM_PBE_MD5_CAST3_CBC 0x000003A3 #define CKM_PBE_MD5_CAST5_CBC 0x000003A4 #define CKM_PBE_MD5_CAST128_CBC 0x000003A4 #define CKM_PBE_SHA1_CAST5_CBC 0x000003A5 #define CKM_PBE_SHA1_CAST128_CBC 0x000003A5 #define CKM_PBE_SHA1_RC4_128 0x000003A6 #define CKM_PBE_SHA1_RC4_40 0x000003A7 #define CKM_PBE_SHA1_DES3_EDE_CBC 0x000003A8 #define CKM_PBE_SHA1_DES2_EDE_CBC 0x000003A9 #define CKM_PBE_SHA1_RC2_128_CBC 0x000003AA #define CKM_PBE_SHA1_RC2_40_CBC 0x000003AB /* CKM_PKCS5_PBKD2 is new for v2.10 */ #define CKM_PKCS5_PBKD2 0x000003B0 #define CKM_PBA_SHA1_WITH_SHA1_HMAC 0x000003C0 #define CKM_KEY_WRAP_LYNKS 0x00000400 #define CKM_KEY_WRAP_SET_OAEP 0x00000401 /* Fortezza mechanisms */ #define CKM_SKIPJACK_KEY_GEN 0x00001000 #define CKM_SKIPJACK_ECB64 0x00001001 #define CKM_SKIPJACK_CBC64 0x00001002 #define CKM_SKIPJACK_OFB64 0x00001003 #define CKM_SKIPJACK_CFB64 0x00001004 #define CKM_SKIPJACK_CFB32 0x00001005 #define CKM_SKIPJACK_CFB16 0x00001006 #define CKM_SKIPJACK_CFB8 0x00001007 #define CKM_SKIPJACK_WRAP 0x00001008 #define CKM_SKIPJACK_PRIVATE_WRAP 0x00001009 #define CKM_SKIPJACK_RELAYX 0x0000100a #define CKM_KEA_KEY_PAIR_GEN 0x00001010 #define CKM_KEA_KEY_DERIVE 0x00001011 #define CKM_FORTEZZA_TIMESTAMP 0x00001020 #define CKM_BATON_KEY_GEN 0x00001030 #define CKM_BATON_ECB128 0x00001031 #define CKM_BATON_ECB96 0x00001032 #define CKM_BATON_CBC128 0x00001033 #define CKM_BATON_COUNTER 0x00001034 #define CKM_BATON_SHUFFLE 0x00001035 #define CKM_BATON_WRAP 0x00001036 /* CKM_ECDSA_KEY_PAIR_GEN is deprecated in v2.11, * CKM_EC_KEY_PAIR_GEN is preferred */ #define CKM_ECDSA_KEY_PAIR_GEN 0x00001040 #define CKM_EC_KEY_PAIR_GEN 0x00001040 #define CKM_ECDSA 0x00001041 #define CKM_ECDSA_SHA1 0x00001042 /* CKM_ECDH1_DERIVE, CKM_ECDH1_COFACTOR_DERIVE, and CKM_ECMQV_DERIVE * are new for v2.11 */ #define CKM_ECDH1_DERIVE 0x00001050 #define CKM_ECDH1_COFACTOR_DERIVE 0x00001051 #define CKM_ECMQV_DERIVE 0x00001052 #define CKM_JUNIPER_KEY_GEN 0x00001060 #define CKM_JUNIPER_ECB128 0x00001061 #define CKM_JUNIPER_CBC128 0x00001062 #define CKM_JUNIPER_COUNTER 0x00001063 #define CKM_JUNIPER_SHUFFLE 0x00001064 #define CKM_JUNIPER_WRAP 0x00001065 #define CKM_FASTHASH 0x00001070 /* CKM_AES_KEY_GEN, CKM_AES_ECB, CKM_AES_CBC, CKM_AES_MAC, * CKM_AES_MAC_GENERAL, CKM_AES_CBC_PAD, CKM_DSA_PARAMETER_GEN, * CKM_DH_PKCS_PARAMETER_GEN, and CKM_X9_42_DH_PARAMETER_GEN are * new for v2.11 */ #define CKM_AES_KEY_GEN 0x00001080 #define CKM_AES_ECB 0x00001081 #define CKM_AES_CBC 0x00001082 #define CKM_AES_MAC 0x00001083 #define CKM_AES_MAC_GENERAL 0x00001084 #define CKM_AES_CBC_PAD 0x00001085 #define CKM_DSA_PARAMETER_GEN 0x00002000 #define CKM_DH_PKCS_PARAMETER_GEN 0x00002001 #define CKM_X9_42_DH_PARAMETER_GEN 0x00002002 #define CKM_VENDOR_DEFINED 0x80000000 typedef CK_MECHANISM_TYPE CK_PTR CK_MECHANISM_TYPE_PTR; /* CK_MECHANISM is a structure that specifies a particular * mechanism */ typedef struct CK_MECHANISM { CK_MECHANISM_TYPE mechanism; CK_VOID_PTR pParameter; /* ulParameterLen was changed from CK_USHORT to CK_ULONG for * v2.0 */ CK_ULONG ulParameterLen; /* in bytes */ } CK_MECHANISM; typedef CK_MECHANISM CK_PTR CK_MECHANISM_PTR; /* CK_MECHANISM_INFO provides information about a particular * mechanism */ typedef struct CK_MECHANISM_INFO { CK_ULONG ulMinKeySize; CK_ULONG ulMaxKeySize; CK_FLAGS flags; } CK_MECHANISM_INFO; /* The flags are defined as follows: * Bit Flag Mask Meaning */ #define CKF_HW 0x00000001 /* performed by HW */ /* The flags CKF_ENCRYPT, CKF_DECRYPT, CKF_DIGEST, CKF_SIGN, * CKG_SIGN_RECOVER, CKF_VERIFY, CKF_VERIFY_RECOVER, * CKF_GENERATE, CKF_GENERATE_KEY_PAIR, CKF_WRAP, CKF_UNWRAP, * and CKF_DERIVE are new for v2.0. They specify whether or not * a mechanism can be used for a particular task */ #define CKF_ENCRYPT 0x00000100 #define CKF_DECRYPT 0x00000200 #define CKF_DIGEST 0x00000400 #define CKF_SIGN 0x00000800 #define CKF_SIGN_RECOVER 0x00001000 #define CKF_VERIFY 0x00002000 #define CKF_VERIFY_RECOVER 0x00004000 #define CKF_GENERATE 0x00008000 #define CKF_GENERATE_KEY_PAIR 0x00010000 #define CKF_WRAP 0x00020000 #define CKF_UNWRAP 0x00040000 #define CKF_DERIVE 0x00080000 /* CKF_EC_F_P, CKF_EC_F_2M, CKF_EC_ECPARAMETERS, CKF_EC_NAMEDCURVE, * CKF_EC_UNCOMPRESS, and CKF_EC_COMPRESS are new for v2.11. They * describe a token's EC capabilities not available in mechanism * information. */ #define CKF_EC_F_P 0x00100000 #define CKF_EC_F_2M 0x00200000 #define CKF_EC_ECPARAMETERS 0x00400000 #define CKF_EC_NAMEDCURVE 0x00800000 #define CKF_EC_UNCOMPRESS 0x01000000 #define CKF_EC_COMPRESS 0x02000000 #define CKF_EXTENSION 0x80000000 /* FALSE for 2.01 */ typedef CK_MECHANISM_INFO CK_PTR CK_MECHANISM_INFO_PTR; /* CK_RV is a value that identifies the return value of a * Cryptoki function */ /* CK_RV was changed from CK_USHORT to CK_ULONG for v2.0 */ typedef CK_ULONG CK_RV; #define CKR_OK 0x00000000 #define CKR_CANCEL 0x00000001 #define CKR_HOST_MEMORY 0x00000002 #define CKR_SLOT_ID_INVALID 0x00000003 /* CKR_FLAGS_INVALID was removed for v2.0 */ /* CKR_GENERAL_ERROR and CKR_FUNCTION_FAILED are new for v2.0 */ #define CKR_GENERAL_ERROR 0x00000005 #define CKR_FUNCTION_FAILED 0x00000006 /* CKR_ARGUMENTS_BAD, CKR_NO_EVENT, CKR_NEED_TO_CREATE_THREADS, * and CKR_CANT_LOCK are new for v2.01 */ #define CKR_ARGUMENTS_BAD 0x00000007 #define CKR_NO_EVENT 0x00000008 #define CKR_NEED_TO_CREATE_THREADS 0x00000009 #define CKR_CANT_LOCK 0x0000000A #define CKR_ATTRIBUTE_READ_ONLY 0x00000010 #define CKR_ATTRIBUTE_SENSITIVE 0x00000011 #define CKR_ATTRIBUTE_TYPE_INVALID 0x00000012 #define CKR_ATTRIBUTE_VALUE_INVALID 0x00000013 #define CKR_DATA_INVALID 0x00000020 #define CKR_DATA_LEN_RANGE 0x00000021 #define CKR_DEVICE_ERROR 0x00000030 #define CKR_DEVICE_MEMORY 0x00000031 #define CKR_DEVICE_REMOVED 0x00000032 #define CKR_ENCRYPTED_DATA_INVALID 0x00000040 #define CKR_ENCRYPTED_DATA_LEN_RANGE 0x00000041 #define CKR_FUNCTION_CANCELED 0x00000050 #define CKR_FUNCTION_NOT_PARALLEL 0x00000051 /* CKR_FUNCTION_NOT_SUPPORTED is new for v2.0 */ #define CKR_FUNCTION_NOT_SUPPORTED 0x00000054 #define CKR_KEY_HANDLE_INVALID 0x00000060 /* CKR_KEY_SENSITIVE was removed for v2.0 */ #define CKR_KEY_SIZE_RANGE 0x00000062 #define CKR_KEY_TYPE_INCONSISTENT 0x00000063 /* CKR_KEY_NOT_NEEDED, CKR_KEY_CHANGED, CKR_KEY_NEEDED, * CKR_KEY_INDIGESTIBLE, CKR_KEY_FUNCTION_NOT_PERMITTED, * CKR_KEY_NOT_WRAPPABLE, and CKR_KEY_UNEXTRACTABLE are new for * v2.0 */ #define CKR_KEY_NOT_NEEDED 0x00000064 #define CKR_KEY_CHANGED 0x00000065 #define CKR_KEY_NEEDED 0x00000066 #define CKR_KEY_INDIGESTIBLE 0x00000067 #define CKR_KEY_FUNCTION_NOT_PERMITTED 0x00000068 #define CKR_KEY_NOT_WRAPPABLE 0x00000069 #define CKR_KEY_UNEXTRACTABLE 0x0000006A #define CKR_MECHANISM_INVALID 0x00000070 #define CKR_MECHANISM_PARAM_INVALID 0x00000071 /* CKR_OBJECT_CLASS_INCONSISTENT and CKR_OBJECT_CLASS_INVALID * were removed for v2.0 */ #define CKR_OBJECT_HANDLE_INVALID 0x00000082 #define CKR_OPERATION_ACTIVE 0x00000090 #define CKR_OPERATION_NOT_INITIALIZED 0x00000091 #define CKR_PIN_INCORRECT 0x000000A0 #define CKR_PIN_INVALID 0x000000A1 #define CKR_PIN_LEN_RANGE 0x000000A2 /* CKR_PIN_EXPIRED and CKR_PIN_LOCKED are new for v2.0 */ #define CKR_PIN_EXPIRED 0x000000A3 #define CKR_PIN_LOCKED 0x000000A4 #define CKR_SESSION_CLOSED 0x000000B0 #define CKR_SESSION_COUNT 0x000000B1 #define CKR_SESSION_HANDLE_INVALID 0x000000B3 #define CKR_SESSION_PARALLEL_NOT_SUPPORTED 0x000000B4 #define CKR_SESSION_READ_ONLY 0x000000B5 #define CKR_SESSION_EXISTS 0x000000B6 /* CKR_SESSION_READ_ONLY_EXISTS and * CKR_SESSION_READ_WRITE_SO_EXISTS are new for v2.0 */ #define CKR_SESSION_READ_ONLY_EXISTS 0x000000B7 #define CKR_SESSION_READ_WRITE_SO_EXISTS 0x000000B8 #define CKR_SIGNATURE_INVALID 0x000000C0 #define CKR_SIGNATURE_LEN_RANGE 0x000000C1 #define CKR_TEMPLATE_INCOMPLETE 0x000000D0 #define CKR_TEMPLATE_INCONSISTENT 0x000000D1 #define CKR_TOKEN_NOT_PRESENT 0x000000E0 #define CKR_TOKEN_NOT_RECOGNIZED 0x000000E1 #define CKR_TOKEN_WRITE_PROTECTED 0x000000E2 #define CKR_UNWRAPPING_KEY_HANDLE_INVALID 0x000000F0 #define CKR_UNWRAPPING_KEY_SIZE_RANGE 0x000000F1 #define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT 0x000000F2 #define CKR_USER_ALREADY_LOGGED_IN 0x00000100 #define CKR_USER_NOT_LOGGED_IN 0x00000101 #define CKR_USER_PIN_NOT_INITIALIZED 0x00000102 #define CKR_USER_TYPE_INVALID 0x00000103 /* CKR_USER_ANOTHER_ALREADY_LOGGED_IN and CKR_USER_TOO_MANY_TYPES * are new to v2.01 */ #define CKR_USER_ANOTHER_ALREADY_LOGGED_IN 0x00000104 #define CKR_USER_TOO_MANY_TYPES 0x00000105 #define CKR_WRAPPED_KEY_INVALID 0x00000110 #define CKR_WRAPPED_KEY_LEN_RANGE 0x00000112 #define CKR_WRAPPING_KEY_HANDLE_INVALID 0x00000113 #define CKR_WRAPPING_KEY_SIZE_RANGE 0x00000114 #define CKR_WRAPPING_KEY_TYPE_INCONSISTENT 0x00000115 #define CKR_RANDOM_SEED_NOT_SUPPORTED 0x00000120 /* These are new to v2.0 */ #define CKR_RANDOM_NO_RNG 0x00000121 /* These are new to v2.11 */ #define CKR_DOMAIN_PARAMS_INVALID 0x00000130 /* These are new to v2.0 */ #define CKR_BUFFER_TOO_SMALL 0x00000150 #define CKR_SAVED_STATE_INVALID 0x00000160 #define CKR_INFORMATION_SENSITIVE 0x00000170 #define CKR_STATE_UNSAVEABLE 0x00000180 /* These are new to v2.01 */ #define CKR_CRYPTOKI_NOT_INITIALIZED 0x00000190 #define CKR_CRYPTOKI_ALREADY_INITIALIZED 0x00000191 #define CKR_MUTEX_BAD 0x000001A0 #define CKR_MUTEX_NOT_LOCKED 0x000001A1 #define CKR_VENDOR_DEFINED 0x80000000 /* CK_NOTIFY is an application callback that processes events */ typedef CK_CALLBACK_FUNCTION(CK_RV, CK_NOTIFY)( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_NOTIFICATION event, CK_VOID_PTR pApplication /* passed to C_OpenSession */ ); /* CK_FUNCTION_LIST is a structure holding a Cryptoki spec * version and pointers of appropriate types to all the * Cryptoki functions */ /* CK_FUNCTION_LIST is new for v2.0 */ typedef struct CK_FUNCTION_LIST CK_FUNCTION_LIST; typedef CK_FUNCTION_LIST CK_PTR CK_FUNCTION_LIST_PTR; typedef CK_FUNCTION_LIST_PTR CK_PTR CK_FUNCTION_LIST_PTR_PTR; /* CK_CREATEMUTEX is an application callback for creating a * mutex object */ typedef CK_CALLBACK_FUNCTION(CK_RV, CK_CREATEMUTEX)( CK_VOID_PTR_PTR ppMutex /* location to receive ptr to mutex */ ); /* CK_DESTROYMUTEX is an application callback for destroying a * mutex object */ typedef CK_CALLBACK_FUNCTION(CK_RV, CK_DESTROYMUTEX)( CK_VOID_PTR pMutex /* pointer to mutex */ ); /* CK_LOCKMUTEX is an application callback for locking a mutex */ typedef CK_CALLBACK_FUNCTION(CK_RV, CK_LOCKMUTEX)( CK_VOID_PTR pMutex /* pointer to mutex */ ); /* CK_UNLOCKMUTEX is an application callback for unlocking a * mutex */ typedef CK_CALLBACK_FUNCTION(CK_RV, CK_UNLOCKMUTEX)( CK_VOID_PTR pMutex /* pointer to mutex */ ); /* CK_C_INITIALIZE_ARGS provides the optional arguments to * C_Initialize */ typedef struct CK_C_INITIALIZE_ARGS { CK_CREATEMUTEX CreateMutex; CK_DESTROYMUTEX DestroyMutex; CK_LOCKMUTEX LockMutex; CK_UNLOCKMUTEX UnlockMutex; CK_FLAGS flags; CK_VOID_PTR pReserved; } CK_C_INITIALIZE_ARGS; /* flags: bit flags that provide capabilities of the slot * Bit Flag Mask Meaning */ #define CKF_LIBRARY_CANT_CREATE_OS_THREADS 0x00000001 #define CKF_OS_LOCKING_OK 0x00000002 typedef CK_C_INITIALIZE_ARGS CK_PTR CK_C_INITIALIZE_ARGS_PTR; /* additional flags for parameters to functions */ /* CKF_DONT_BLOCK is for the function C_WaitForSlotEvent */ #define CKF_DONT_BLOCK 1 /* CK_RSA_PKCS_OAEP_MGF_TYPE is new for v2.10. * CK_RSA_PKCS_OAEP_MGF_TYPE is used to indicate the Message * Generation Function (MGF) applied to a message block when * formatting a message block for the PKCS #1 OAEP encryption * scheme. */ typedef CK_ULONG CK_RSA_PKCS_MGF_TYPE; typedef CK_RSA_PKCS_MGF_TYPE CK_PTR CK_RSA_PKCS_MGF_TYPE_PTR; /* The following MGFs are defined */ #define CKG_MGF1_SHA1 0x00000001 /* CK_RSA_PKCS_OAEP_SOURCE_TYPE is new for v2.10. * CK_RSA_PKCS_OAEP_SOURCE_TYPE is used to indicate the source * of the encoding parameter when formatting a message block * for the PKCS #1 OAEP encryption scheme. */ typedef CK_ULONG CK_RSA_PKCS_OAEP_SOURCE_TYPE; typedef CK_RSA_PKCS_OAEP_SOURCE_TYPE CK_PTR CK_RSA_PKCS_OAEP_SOURCE_TYPE_PTR; /* The following encoding parameter sources are defined */ #define CKZ_DATA_SPECIFIED 0x00000001 /* CK_RSA_PKCS_OAEP_PARAMS is new for v2.10. * CK_RSA_PKCS_OAEP_PARAMS provides the parameters to the * CKM_RSA_PKCS_OAEP mechanism. */ typedef struct CK_RSA_PKCS_OAEP_PARAMS { CK_MECHANISM_TYPE hashAlg; CK_RSA_PKCS_MGF_TYPE mgf; CK_RSA_PKCS_OAEP_SOURCE_TYPE source; CK_VOID_PTR pSourceData; CK_ULONG ulSourceDataLen; } CK_RSA_PKCS_OAEP_PARAMS; typedef CK_RSA_PKCS_OAEP_PARAMS CK_PTR CK_RSA_PKCS_OAEP_PARAMS_PTR; /* CK_RSA_PKCS_PSS_PARAMS is new for v2.11. * CK_RSA_PKCS_PSS_PARAMS provides the parameters to the * CKM_RSA_PKCS_PSS mechanism(s). */ typedef struct CK_RSA_PKCS_PSS_PARAMS { CK_MECHANISM_TYPE hashAlg; CK_RSA_PKCS_MGF_TYPE mgf; CK_ULONG sLen; } CK_RSA_PKCS_PSS_PARAMS; /* CK_KEA_DERIVE_PARAMS provides the parameters to the * CKM_KEA_DERIVE mechanism */ /* CK_KEA_DERIVE_PARAMS is new for v2.0 */ typedef struct CK_KEA_DERIVE_PARAMS { CK_BBOOL isSender; CK_ULONG ulRandomLen; CK_BYTE_PTR pRandomA; CK_BYTE_PTR pRandomB; CK_ULONG ulPublicDataLen; CK_BYTE_PTR pPublicData; } CK_KEA_DERIVE_PARAMS; typedef CK_KEA_DERIVE_PARAMS CK_PTR CK_KEA_DERIVE_PARAMS_PTR; /* CK_RC2_PARAMS provides the parameters to the CKM_RC2_ECB and * CKM_RC2_MAC mechanisms. An instance of CK_RC2_PARAMS just * holds the effective keysize */ typedef CK_ULONG CK_RC2_PARAMS; typedef CK_RC2_PARAMS CK_PTR CK_RC2_PARAMS_PTR; /* CK_RC2_CBC_PARAMS provides the parameters to the CKM_RC2_CBC * mechanism */ typedef struct CK_RC2_CBC_PARAMS { /* ulEffectiveBits was changed from CK_USHORT to CK_ULONG for * v2.0 */ CK_ULONG ulEffectiveBits; /* effective bits (1-1024) */ CK_BYTE iv[8]; /* IV for CBC mode */ } CK_RC2_CBC_PARAMS; typedef CK_RC2_CBC_PARAMS CK_PTR CK_RC2_CBC_PARAMS_PTR; /* CK_RC2_MAC_GENERAL_PARAMS provides the parameters for the * CKM_RC2_MAC_GENERAL mechanism */ /* CK_RC2_MAC_GENERAL_PARAMS is new for v2.0 */ typedef struct CK_RC2_MAC_GENERAL_PARAMS { CK_ULONG ulEffectiveBits; /* effective bits (1-1024) */ CK_ULONG ulMacLength; /* Length of MAC in bytes */ } CK_RC2_MAC_GENERAL_PARAMS; typedef CK_RC2_MAC_GENERAL_PARAMS CK_PTR \ CK_RC2_MAC_GENERAL_PARAMS_PTR; /* CK_RC5_PARAMS provides the parameters to the CKM_RC5_ECB and * CKM_RC5_MAC mechanisms */ /* CK_RC5_PARAMS is new for v2.0 */ typedef struct CK_RC5_PARAMS { CK_ULONG ulWordsize; /* wordsize in bits */ CK_ULONG ulRounds; /* number of rounds */ } CK_RC5_PARAMS; typedef CK_RC5_PARAMS CK_PTR CK_RC5_PARAMS_PTR; /* CK_RC5_CBC_PARAMS provides the parameters to the CKM_RC5_CBC * mechanism */ /* CK_RC5_CBC_PARAMS is new for v2.0 */ typedef struct CK_RC5_CBC_PARAMS { CK_ULONG ulWordsize; /* wordsize in bits */ CK_ULONG ulRounds; /* number of rounds */ CK_BYTE_PTR pIv; /* pointer to IV */ CK_ULONG ulIvLen; /* length of IV in bytes */ } CK_RC5_CBC_PARAMS; typedef CK_RC5_CBC_PARAMS CK_PTR CK_RC5_CBC_PARAMS_PTR; /* CK_RC5_MAC_GENERAL_PARAMS provides the parameters for the * CKM_RC5_MAC_GENERAL mechanism */ /* CK_RC5_MAC_GENERAL_PARAMS is new for v2.0 */ typedef struct CK_RC5_MAC_GENERAL_PARAMS { CK_ULONG ulWordsize; /* wordsize in bits */ CK_ULONG ulRounds; /* number of rounds */ CK_ULONG ulMacLength; /* Length of MAC in bytes */ } CK_RC5_MAC_GENERAL_PARAMS; typedef CK_RC5_MAC_GENERAL_PARAMS CK_PTR \ CK_RC5_MAC_GENERAL_PARAMS_PTR; /* CK_MAC_GENERAL_PARAMS provides the parameters to most block * ciphers' MAC_GENERAL mechanisms. Its value is the length of * the MAC */ /* CK_MAC_GENERAL_PARAMS is new for v2.0 */ typedef CK_ULONG CK_MAC_GENERAL_PARAMS; typedef CK_MAC_GENERAL_PARAMS CK_PTR CK_MAC_GENERAL_PARAMS_PTR; /* CK_SKIPJACK_PRIVATE_WRAP_PARAMS provides the parameters to the * CKM_SKIPJACK_PRIVATE_WRAP mechanism */ /* CK_SKIPJACK_PRIVATE_WRAP_PARAMS is new for v2.0 */ typedef struct CK_SKIPJACK_PRIVATE_WRAP_PARAMS { CK_ULONG ulPasswordLen; CK_BYTE_PTR pPassword; CK_ULONG ulPublicDataLen; CK_BYTE_PTR pPublicData; CK_ULONG ulPAndGLen; CK_ULONG ulQLen; CK_ULONG ulRandomLen; CK_BYTE_PTR pRandomA; CK_BYTE_PTR pPrimeP; CK_BYTE_PTR pBaseG; CK_BYTE_PTR pSubprimeQ; } CK_SKIPJACK_PRIVATE_WRAP_PARAMS; typedef CK_SKIPJACK_PRIVATE_WRAP_PARAMS CK_PTR \ CK_SKIPJACK_PRIVATE_WRAP_PTR; /* CK_SKIPJACK_RELAYX_PARAMS provides the parameters to the * CKM_SKIPJACK_RELAYX mechanism */ /* CK_SKIPJACK_RELAYX_PARAMS is new for v2.0 */ typedef struct CK_SKIPJACK_RELAYX_PARAMS { CK_ULONG ulOldWrappedXLen; CK_BYTE_PTR pOldWrappedX; CK_ULONG ulOldPasswordLen; CK_BYTE_PTR pOldPassword; CK_ULONG ulOldPublicDataLen; CK_BYTE_PTR pOldPublicData; CK_ULONG ulOldRandomLen; CK_BYTE_PTR pOldRandomA; CK_ULONG ulNewPasswordLen; CK_BYTE_PTR pNewPassword; CK_ULONG ulNewPublicDataLen; CK_BYTE_PTR pNewPublicData; CK_ULONG ulNewRandomLen; CK_BYTE_PTR pNewRandomA; } CK_SKIPJACK_RELAYX_PARAMS; typedef CK_SKIPJACK_RELAYX_PARAMS CK_PTR \ CK_SKIPJACK_RELAYX_PARAMS_PTR; typedef struct CK_PBE_PARAMS { CK_BYTE_PTR pInitVector; CK_UTF8CHAR_PTR pPassword; CK_ULONG ulPasswordLen; CK_BYTE_PTR pSalt; CK_ULONG ulSaltLen; CK_ULONG ulIteration; } CK_PBE_PARAMS; typedef CK_PBE_PARAMS CK_PTR CK_PBE_PARAMS_PTR; /* CK_KEY_WRAP_SET_OAEP_PARAMS provides the parameters to the * CKM_KEY_WRAP_SET_OAEP mechanism */ /* CK_KEY_WRAP_SET_OAEP_PARAMS is new for v2.0 */ typedef struct CK_KEY_WRAP_SET_OAEP_PARAMS { CK_BYTE bBC; /* block contents byte */ CK_BYTE_PTR pX; /* extra data */ CK_ULONG ulXLen; /* length of extra data in bytes */ } CK_KEY_WRAP_SET_OAEP_PARAMS; typedef CK_KEY_WRAP_SET_OAEP_PARAMS CK_PTR \ CK_KEY_WRAP_SET_OAEP_PARAMS_PTR; typedef struct CK_SSL3_RANDOM_DATA { CK_BYTE_PTR pClientRandom; CK_ULONG ulClientRandomLen; CK_BYTE_PTR pServerRandom; CK_ULONG ulServerRandomLen; } CK_SSL3_RANDOM_DATA; typedef struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS { CK_SSL3_RANDOM_DATA RandomInfo; CK_VERSION_PTR pVersion; } CK_SSL3_MASTER_KEY_DERIVE_PARAMS; typedef struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS CK_PTR \ CK_SSL3_MASTER_KEY_DERIVE_PARAMS_PTR; typedef struct CK_SSL3_KEY_MAT_OUT { CK_OBJECT_HANDLE hClientMacSecret; CK_OBJECT_HANDLE hServerMacSecret; CK_OBJECT_HANDLE hClientKey; CK_OBJECT_HANDLE hServerKey; CK_BYTE_PTR pIVClient; CK_BYTE_PTR pIVServer; } CK_SSL3_KEY_MAT_OUT; typedef CK_SSL3_KEY_MAT_OUT CK_PTR CK_SSL3_KEY_MAT_OUT_PTR; typedef struct CK_SSL3_KEY_MAT_PARAMS { CK_ULONG ulMacSizeInBits; CK_ULONG ulKeySizeInBits; CK_ULONG ulIVSizeInBits; CK_BBOOL bIsExport; CK_SSL3_RANDOM_DATA RandomInfo; CK_SSL3_KEY_MAT_OUT_PTR pReturnedKeyMaterial; } CK_SSL3_KEY_MAT_PARAMS; typedef CK_SSL3_KEY_MAT_PARAMS CK_PTR CK_SSL3_KEY_MAT_PARAMS_PTR; typedef struct CK_KEY_DERIVATION_STRING_DATA { CK_BYTE_PTR pData; CK_ULONG ulLen; } CK_KEY_DERIVATION_STRING_DATA; typedef CK_KEY_DERIVATION_STRING_DATA CK_PTR \ CK_KEY_DERIVATION_STRING_DATA_PTR; /* The CK_EXTRACT_PARAMS is used for the * CKM_EXTRACT_KEY_FROM_KEY mechanism. It specifies which bit * of the base key should be used as the first bit of the * derived key */ /* CK_EXTRACT_PARAMS is new for v2.0 */ typedef CK_ULONG CK_EXTRACT_PARAMS; typedef CK_EXTRACT_PARAMS CK_PTR CK_EXTRACT_PARAMS_PTR; /* CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE is new for v2.10. * CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE is used to * indicate the Pseudo-Random Function (PRF) used to generate * key bits using PKCS #5 PBKDF2. */ typedef CK_ULONG CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE; typedef CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE CK_PTR CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE_PTR; /* The following PRFs are defined in PKCS #5 v2.0. */ #define CKP_PKCS5_PBKD2_HMAC_SHA1 0x00000001 /* CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE is new for v2.10. * CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE is used to indicate the * source of the salt value when deriving a key using PKCS #5 * PBKDF2. */ typedef CK_ULONG CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE; typedef CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE CK_PTR CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE_PTR; /* The following salt value sources are defined in PKCS #5 v2.0. */ #define CKZ_SALT_SPECIFIED 0x00000001 /* CK_PKCS5_PBKD2_PARAMS is new for v2.10. * CK_PKCS5_PBKD2_PARAMS is a structure that provides the * parameters to the CKM_PKCS5_PBKD2 mechanism. */ typedef struct CK_PKCS5_PBKD2_PARAMS { CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE saltSource; CK_VOID_PTR pSaltSourceData; CK_ULONG ulSaltSourceDataLen; CK_ULONG iterations; CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE prf; CK_VOID_PTR pPrfData; CK_ULONG ulPrfDataLen; CK_UTF8CHAR_PTR pPassword; CK_ULONG_PTR ulPasswordLen; } CK_PKCS5_PBKD2_PARAMS; typedef CK_PKCS5_PBKD2_PARAMS CK_PTR CK_PKCS5_PBKD2_PARAMS_PTR; #endif cackey-0.7.10/sha-private.h0000644000000000000000000000157213563537513014150 0ustar rootroot/************************ sha-private.h ************************/ /***************** See RFC 6234 for details. *******************/ #ifndef _SHA_PRIVATE__H #define _SHA_PRIVATE__H /* * These definitions are defined in FIPS 180-3, section 4.1. * Ch() and Maj() are defined identically in sections 4.1.1, * 4.1.2, and 4.1.3. * * The definitions used in FIPS 180-3 are as follows: */ #ifndef USE_MODIFIED_MACROS #define SHA_Ch(x,y,z) (((x) & (y)) ^ ((~(x)) & (z))) #define SHA_Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z))) #else /* USE_MODIFIED_MACROS */ /* * The following definitions are equivalent and potentially faster. */ #define SHA_Ch(x, y, z) (((x) & ((y) ^ (z))) ^ (z)) #define SHA_Maj(x, y, z) (((x) & ((y) | (z))) | ((y) & (z))) #endif /* USE_MODIFIED_MACROS */ #define SHA_Parity(x, y, z) ((x) ^ (y) ^ (z)) #endif /* _SHA_PRIVATE__H */ cackey-0.7.10/sha.h0000644000000000000000000003345213563537513012502 0ustar rootroot/**************************** sha.h ****************************/ /***************** See RFC 6234 for details. *******************/ /* Copyright (c) 2011 IETF Trust and the persons identified as authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of Internet Society, IETF or IETF Trust, nor the names of specific contributors, may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SHA_H_ #define _SHA_H_ /* * Description: * This file implements the Secure Hash Algorithms * as defined in the U.S. National Institute of Standards * and Technology Federal Information Processing Standards * Publication (FIPS PUB) 180-3 published in October 2008 * and formerly defined in its predecessors, FIPS PUB 180-1 * and FIP PUB 180-2. * * A combined document showing all algorithms is available at * http://csrc.nist.gov/publications/fips/ * fips180-3/fips180-3_final.pdf * * The five hashes are defined in these sizes: * SHA-1 20 byte / 160 bit * SHA-224 28 byte / 224 bit * SHA-256 32 byte / 256 bit * SHA-384 48 byte / 384 bit * SHA-512 64 byte / 512 bit * * Compilation Note: * These files may be compiled with two options: * USE_32BIT_ONLY - use 32-bit arithmetic only, for systems * without 64-bit integers * * USE_MODIFIED_MACROS - use alternate form of the SHA_Ch() * and SHA_Maj() macros that are equivalent * and potentially faster on many systems * */ #include "config.h" #ifdef HAVE_STDINT_H # include #elif defined(HAVE_INTTYPES_H) # include #endif /* * If you do not have the ISO standard stdint.h header file, then you * must typedef the following: * name meaning * uint64_t unsigned 64-bit integer * uint32_t unsigned 32-bit integer * uint8_t unsigned 8-bit integer (i.e., unsigned char) * int_least16_t integer of >= 16 bits * * See stdint-example.h */ #ifndef _SHA_enum_ #define _SHA_enum_ /* * All SHA functions return one of these values. */ enum { shaSuccess = 0, shaNull, /* Null pointer parameter */ shaInputTooLong, /* input data too long */ shaStateError, /* called Input after FinalBits or Result */ shaBadParam /* passed a bad parameter */ }; #endif /* _SHA_enum_ */ /* * These constants hold size information for each of the SHA * hashing operations */ enum { SHA1_Message_Block_Size = 64, SHA224_Message_Block_Size = 64, SHA256_Message_Block_Size = 64, SHA384_Message_Block_Size = 128, SHA512_Message_Block_Size = 128, USHA_Max_Message_Block_Size = SHA512_Message_Block_Size, SHA1HashSize = 20, SHA224HashSize = 28, SHA256HashSize = 32, SHA384HashSize = 48, SHA512HashSize = 64, USHAMaxHashSize = SHA512HashSize, SHA1HashSizeBits = 160, SHA224HashSizeBits = 224, SHA256HashSizeBits = 256, SHA384HashSizeBits = 384, SHA512HashSizeBits = 512, USHAMaxHashSizeBits = SHA512HashSizeBits }; /* * These constants are used in the USHA (Unified SHA) functions. */ typedef enum SHAversion { SHA1, SHA224, SHA256, SHA384, SHA512 } SHAversion; /* * This structure will hold context information for the SHA-1 * hashing operation. */ typedef struct SHA1Context { uint32_t Intermediate_Hash[SHA1HashSize/4]; /* Message Digest */ uint32_t Length_High; /* Message length in bits */ uint32_t Length_Low; /* Message length in bits */ int_least16_t Message_Block_Index; /* Message_Block array index */ /* 512-bit message blocks */ uint8_t Message_Block[SHA1_Message_Block_Size]; int Computed; /* Is the hash computed? */ int Corrupted; /* Cumulative corruption code */ } SHA1Context; /* * This structure will hold context information for the SHA-256 * hashing operation. */ typedef struct SHA256Context { uint32_t Intermediate_Hash[SHA256HashSize/4]; /* Message Digest */ uint32_t Length_High; /* Message length in bits */ uint32_t Length_Low; /* Message length in bits */ int_least16_t Message_Block_Index; /* Message_Block array index */ /* 512-bit message blocks */ uint8_t Message_Block[SHA256_Message_Block_Size]; int Computed; /* Is the hash computed? */ int Corrupted; /* Cumulative corruption code */ } SHA256Context; /* * This structure will hold context information for the SHA-512 * hashing operation. */ typedef struct SHA512Context { #ifdef USE_32BIT_ONLY uint32_t Intermediate_Hash[SHA512HashSize/4]; /* Message Digest */ uint32_t Length[4]; /* Message length in bits */ #else /* !USE_32BIT_ONLY */ uint64_t Intermediate_Hash[SHA512HashSize/8]; /* Message Digest */ uint64_t Length_High, Length_Low; /* Message length in bits */ #endif /* USE_32BIT_ONLY */ int_least16_t Message_Block_Index; /* Message_Block array index */ /* 1024-bit message blocks */ uint8_t Message_Block[SHA512_Message_Block_Size]; int Computed; /* Is the hash computed?*/ int Corrupted; /* Cumulative corruption code */ } SHA512Context; /* * This structure will hold context information for the SHA-224 * hashing operation. It uses the SHA-256 structure for computation. */ typedef struct SHA256Context SHA224Context; /* * This structure will hold context information for the SHA-384 * hashing operation. It uses the SHA-512 structure for computation. */ typedef struct SHA512Context SHA384Context; /* * This structure holds context information for all SHA * hashing operations. */ typedef struct USHAContext { int whichSha; /* which SHA is being used */ union { SHA1Context sha1Context; SHA224Context sha224Context; SHA256Context sha256Context; SHA384Context sha384Context; SHA512Context sha512Context; } ctx; } USHAContext; /* * This structure will hold context information for the HMAC * keyed-hashing operation. */ typedef struct HMACContext { int whichSha; /* which SHA is being used */ int hashSize; /* hash size of SHA being used */ int blockSize; /* block size of SHA being used */ USHAContext shaContext; /* SHA context */ unsigned char k_opad[USHA_Max_Message_Block_Size]; /* outer padding - key XORd with opad */ int Computed; /* Is the MAC computed? */ int Corrupted; /* Cumulative corruption code */ } HMACContext; /* * This structure will hold context information for the HKDF * extract-and-expand Key Derivation Functions. */ typedef struct HKDFContext { int whichSha; /* which SHA is being used */ HMACContext hmacContext; int hashSize; /* hash size of SHA being used */ unsigned char prk[USHAMaxHashSize]; /* pseudo-random key - output of hkdfInput */ int Computed; /* Is the key material computed? */ int Corrupted; /* Cumulative corruption code */ } HKDFContext; /* * Function Prototypes */ /* SHA-1 */ extern int SHA1Reset(SHA1Context *); extern int SHA1Input(SHA1Context *, const uint8_t *bytes, unsigned int bytecount); extern int SHA1FinalBits(SHA1Context *, uint8_t bits, unsigned int bit_count); extern int SHA1Result(SHA1Context *, uint8_t Message_Digest[SHA1HashSize]); /* SHA-224 */ extern int SHA224Reset(SHA224Context *); extern int SHA224Input(SHA224Context *, const uint8_t *bytes, unsigned int bytecount); extern int SHA224FinalBits(SHA224Context *, uint8_t bits, unsigned int bit_count); extern int SHA224Result(SHA224Context *, uint8_t Message_Digest[SHA224HashSize]); /* SHA-256 */ extern int SHA256Reset(SHA256Context *); extern int SHA256Input(SHA256Context *, const uint8_t *bytes, unsigned int bytecount); extern int SHA256FinalBits(SHA256Context *, uint8_t bits, unsigned int bit_count); extern int SHA256Result(SHA256Context *, uint8_t Message_Digest[SHA256HashSize]); /* SHA-384 */ extern int SHA384Reset(SHA384Context *); extern int SHA384Input(SHA384Context *, const uint8_t *bytes, unsigned int bytecount); extern int SHA384FinalBits(SHA384Context *, uint8_t bits, unsigned int bit_count); extern int SHA384Result(SHA384Context *, uint8_t Message_Digest[SHA384HashSize]); /* SHA-512 */ extern int SHA512Reset(SHA512Context *); extern int SHA512Input(SHA512Context *, const uint8_t *bytes, unsigned int bytecount); extern int SHA512FinalBits(SHA512Context *, uint8_t bits, unsigned int bit_count); extern int SHA512Result(SHA512Context *, uint8_t Message_Digest[SHA512HashSize]); /* Unified SHA functions, chosen by whichSha */ extern int USHAReset(USHAContext *context, SHAversion whichSha); extern int USHAInput(USHAContext *context, const uint8_t *bytes, unsigned int bytecount); extern int USHAFinalBits(USHAContext *context, uint8_t bits, unsigned int bit_count); extern int USHAResult(USHAContext *context, uint8_t Message_Digest[USHAMaxHashSize]); extern int USHABlockSize(enum SHAversion whichSha); extern int USHAHashSize(enum SHAversion whichSha); extern int USHAHashSizeBits(enum SHAversion whichSha); extern const char *USHAHashName(enum SHAversion whichSha); /* * HMAC Keyed-Hashing for Message Authentication, RFC 2104, * for all SHAs. * This interface allows a fixed-length text input to be used. */ extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */ const unsigned char *text, /* pointer to data stream */ int text_len, /* length of data stream */ const unsigned char *key, /* pointer to authentication key */ int key_len, /* length of authentication key */ uint8_t digest[USHAMaxHashSize]); /* caller digest to fill in */ /* * HMAC Keyed-Hashing for Message Authentication, RFC 2104, * for all SHAs. * This interface allows any length of text input to be used. */ extern int hmacReset(HMACContext *context, enum SHAversion whichSha, const unsigned char *key, int key_len); extern int hmacInput(HMACContext *context, const unsigned char *text, int text_len); extern int hmacFinalBits(HMACContext *context, uint8_t bits, unsigned int bit_count); extern int hmacResult(HMACContext *context, uint8_t digest[USHAMaxHashSize]); /* * HKDF HMAC-based Extract-and-Expand Key Derivation Function, * RFC 5869, for all SHAs. */ extern int hkdf(SHAversion whichSha, const unsigned char *salt, int salt_len, const unsigned char *ikm, int ikm_len, const unsigned char *info, int info_len, uint8_t okm[ ], int okm_len); extern int hkdfExtract(SHAversion whichSha, const unsigned char *salt, int salt_len, const unsigned char *ikm, int ikm_len, uint8_t prk[USHAMaxHashSize]); extern int hkdfExpand(SHAversion whichSha, const uint8_t prk[ ], int prk_len, const unsigned char *info, int info_len, uint8_t okm[ ], int okm_len); /* * HKDF HMAC-based Extract-and-Expand Key Derivation Function, * RFC 5869, for all SHAs. * This interface allows any length of text input to be used. */ extern int hkdfReset(HKDFContext *context, enum SHAversion whichSha, const unsigned char *salt, int salt_len); extern int hkdfInput(HKDFContext *context, const unsigned char *ikm, int ikm_len); extern int hkdfFinalBits(HKDFContext *context, uint8_t ikm_bits, unsigned int ikm_bit_count); extern int hkdfResult(HKDFContext *context, uint8_t prk[USHAMaxHashSize], const unsigned char *info, int info_len, uint8_t okm[USHAMaxHashSize], int okm_len); #endif /* _SHA_H_ */ cackey-0.7.10/sha1.c0000644000000000000000000003037513563537513012557 0ustar rootroot/**************************** sha1.c ***************************/ /***************** See RFC 6234 for details. *******************/ /* Copyright (c) 2011 IETF Trust and the persons identified as */ /* authors of the code. All rights reserved. */ /* See sha.h for terms of use and redistribution. */ /* * Description: * This file implements the Secure Hash Algorithm SHA-1 * as defined in the U.S. National Institute of Standards * and Technology Federal Information Processing Standards * Publication (FIPS PUB) 180-3 published in October 2008 * and formerly defined in its predecessors, FIPS PUB 180-1 * and FIP PUB 180-2. * * A combined document showing all algorithms is available at * http://csrc.nist.gov/publications/fips/ * fips180-3/fips180-3_final.pdf * * The SHA-1 algorithm produces a 160-bit message digest for a * given data stream that can serve as a means of providing a * "fingerprint" for a message. * * Portability Issues: * SHA-1 is defined in terms of 32-bit "words". This code * uses (included via "sha.h") to define 32- and * 8-bit unsigned integer types. If your C compiler does * not support 32-bit unsigned integers, this code is not * appropriate. * * Caveats: * SHA-1 is designed to work with messages less than 2^64 bits * long. This implementation uses SHA1Input() to hash the bits * that are a multiple of the size of an 8-bit octet, and then * optionally uses SHA1FinalBits() to hash the final few bits of * the input. */ #include "sha.h" #include "sha-private.h" /* * Define the SHA1 circular left shift macro */ #define SHA1_ROTL(bits,word) \ (((word) << (bits)) | ((word) >> (32-(bits)))) /* * Add "length" to the length. * Set Corrupted when overflow has occurred. */ static uint32_t addTemp; #define SHA1AddLength(context, length) \ (addTemp = (context)->Length_Low, \ (context)->Corrupted = \ (((context)->Length_Low += (length)) < addTemp) && \ (++(context)->Length_High == 0) ? shaInputTooLong \ : (context)->Corrupted ) /* Local Function Prototypes */ static void SHA1ProcessMessageBlock(SHA1Context *context); static void SHA1Finalize(SHA1Context *context, uint8_t Pad_Byte); static void SHA1PadMessage(SHA1Context *context, uint8_t Pad_Byte); /* * SHA1Reset * * Description: * This function will initialize the SHA1Context in preparation * for computing a new SHA1 message digest. * * Parameters: * context: [in/out] * The context to reset. * * Returns: * sha Error Code. * */ int SHA1Reset(SHA1Context *context) { if (!context) return shaNull; context->Length_High = context->Length_Low = 0; context->Message_Block_Index = 0; /* Initial Hash Values: FIPS 180-3 section 5.3.1 */ context->Intermediate_Hash[0] = 0x67452301; context->Intermediate_Hash[1] = 0xEFCDAB89; context->Intermediate_Hash[2] = 0x98BADCFE; context->Intermediate_Hash[3] = 0x10325476; context->Intermediate_Hash[4] = 0xC3D2E1F0; context->Computed = 0; context->Corrupted = shaSuccess; return shaSuccess; } /* * SHA1Input * * Description: * This function accepts an array of octets as the next portion * of the message. * * Parameters: * context: [in/out] * The SHA context to update. * message_array[ ]: [in] * An array of octets representing the next portion of * the message. * length: [in] * The length of the message in message_array. * * Returns: * sha Error Code. * */ int SHA1Input(SHA1Context *context, const uint8_t *message_array, unsigned length) { if (!context) return shaNull; if (!length) return shaSuccess; if (!message_array) return shaNull; if (context->Computed) return context->Corrupted = shaStateError; if (context->Corrupted) return context->Corrupted; while (length--) { context->Message_Block[context->Message_Block_Index++] = *message_array; if ((SHA1AddLength(context, 8) == shaSuccess) && (context->Message_Block_Index == SHA1_Message_Block_Size)) SHA1ProcessMessageBlock(context); message_array++; } return context->Corrupted; } /* * SHA1FinalBits * * Description: * This function will add in any final bits of the message. * * Parameters: * context: [in/out] * The SHA context to update. * message_bits: [in] * The final bits of the message, in the upper portion of the * byte. (Use 0b###00000 instead of 0b00000### to input the * three bits ###.) * length: [in] * The number of bits in message_bits, between 1 and 7. * * Returns: * sha Error Code. */ int SHA1FinalBits(SHA1Context *context, uint8_t message_bits, unsigned int length) { static uint8_t masks[8] = { /* 0 0b00000000 */ 0x00, /* 1 0b10000000 */ 0x80, /* 2 0b11000000 */ 0xC0, /* 3 0b11100000 */ 0xE0, /* 4 0b11110000 */ 0xF0, /* 5 0b11111000 */ 0xF8, /* 6 0b11111100 */ 0xFC, /* 7 0b11111110 */ 0xFE }; static uint8_t markbit[8] = { /* 0 0b10000000 */ 0x80, /* 1 0b01000000 */ 0x40, /* 2 0b00100000 */ 0x20, /* 3 0b00010000 */ 0x10, /* 4 0b00001000 */ 0x08, /* 5 0b00000100 */ 0x04, /* 6 0b00000010 */ 0x02, /* 7 0b00000001 */ 0x01 }; if (!context) return shaNull; if (!length) return shaSuccess; if (context->Corrupted) return context->Corrupted; if (context->Computed) return context->Corrupted = shaStateError; if (length >= 8) return context->Corrupted = shaBadParam; SHA1AddLength(context, length); SHA1Finalize(context, (uint8_t) ((message_bits & masks[length]) | markbit[length])); return context->Corrupted; } /* * SHA1Result * * Description: * This function will return the 160-bit message digest * into the Message_Digest array provided by the caller. * NOTE: * The first octet of hash is stored in the element with index 0, * the last octet of hash in the element with index 19. * * Parameters: * context: [in/out] * The context to use to calculate the SHA-1 hash. * Message_Digest[ ]: [out] * Where the digest is returned. * * Returns: * sha Error Code. * */ int SHA1Result(SHA1Context *context, uint8_t Message_Digest[SHA1HashSize]) { int i; if (!context) return shaNull; if (!Message_Digest) return shaNull; if (context->Corrupted) return context->Corrupted; if (!context->Computed) SHA1Finalize(context, 0x80); for (i = 0; i < SHA1HashSize; ++i) Message_Digest[i] = (uint8_t) (context->Intermediate_Hash[i>>2] >> (8 * ( 3 - ( i & 0x03 ) ))); return shaSuccess; } /* * SHA1ProcessMessageBlock * * Description: * This helper function will process the next 512 bits of the * message stored in the Message_Block array. * * Parameters: * context: [in/out] * The SHA context to update. * * Returns: * Nothing. * * Comments: * Many of the variable names in this code, especially the * single character names, were used because those were the * names used in the Secure Hash Standard. */ static void SHA1ProcessMessageBlock(SHA1Context *context) { /* Constants defined in FIPS 180-3, section 4.2.1 */ const uint32_t K[4] = { 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xCA62C1D6 }; int t; /* Loop counter */ uint32_t temp; /* Temporary word value */ uint32_t W[80]; /* Word sequence */ uint32_t A, B, C, D, E; /* Word buffers */ /* * Initialize the first 16 words in the array W */ for (t = 0; t < 16; t++) { W[t] = ((uint32_t)context->Message_Block[t * 4]) << 24; W[t] |= ((uint32_t)context->Message_Block[t * 4 + 1]) << 16; W[t] |= ((uint32_t)context->Message_Block[t * 4 + 2]) << 8; W[t] |= ((uint32_t)context->Message_Block[t * 4 + 3]); } for (t = 16; t < 80; t++) W[t] = SHA1_ROTL(1, W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16]); A = context->Intermediate_Hash[0]; B = context->Intermediate_Hash[1]; C = context->Intermediate_Hash[2]; D = context->Intermediate_Hash[3]; E = context->Intermediate_Hash[4]; for (t = 0; t < 20; t++) { temp = SHA1_ROTL(5,A) + SHA_Ch(B, C, D) + E + W[t] + K[0]; E = D; D = C; C = SHA1_ROTL(30,B); B = A; A = temp; } for (t = 20; t < 40; t++) { temp = SHA1_ROTL(5,A) + SHA_Parity(B, C, D) + E + W[t] + K[1]; E = D; D = C; C = SHA1_ROTL(30,B); B = A; A = temp; } for (t = 40; t < 60; t++) { temp = SHA1_ROTL(5,A) + SHA_Maj(B, C, D) + E + W[t] + K[2]; E = D; D = C; C = SHA1_ROTL(30,B); B = A; A = temp; } for (t = 60; t < 80; t++) { temp = SHA1_ROTL(5,A) + SHA_Parity(B, C, D) + E + W[t] + K[3]; E = D; D = C; C = SHA1_ROTL(30,B); B = A; A = temp; } context->Intermediate_Hash[0] += A; context->Intermediate_Hash[1] += B; context->Intermediate_Hash[2] += C; context->Intermediate_Hash[3] += D; context->Intermediate_Hash[4] += E; context->Message_Block_Index = 0; } /* * SHA1Finalize * * Description: * This helper function finishes off the digest calculations. * * Parameters: * context: [in/out] * The SHA context to update. * Pad_Byte: [in] * The last byte to add to the message block before the 0-padding * and length. This will contain the last bits of the message * followed by another single bit. If the message was an * exact multiple of 8-bits long, Pad_Byte will be 0x80. * * Returns: * sha Error Code. * */ static void SHA1Finalize(SHA1Context *context, uint8_t Pad_Byte) { int i; SHA1PadMessage(context, Pad_Byte); /* message may be sensitive, clear it out */ for (i = 0; i < SHA1_Message_Block_Size; ++i) context->Message_Block[i] = 0; context->Length_High = 0; /* and clear length */ context->Length_Low = 0; context->Computed = 1; } /* * SHA1PadMessage * * Description: * According to the standard, the message must be padded to the next * even multiple of 512 bits. The first padding bit must be a '1'. * The last 64 bits represent the length of the original message. * All bits in between should be 0. This helper function will pad * the message according to those rules by filling the Message_Block * array accordingly. When it returns, it can be assumed that the * message digest has been computed. * * Parameters: * context: [in/out] * The context to pad. * Pad_Byte: [in] * The last byte to add to the message block before the 0-padding * and length. This will contain the last bits of the message * followed by another single bit. If the message was an * exact multiple of 8-bits long, Pad_Byte will be 0x80. * * Returns: * Nothing. */ static void SHA1PadMessage(SHA1Context *context, uint8_t Pad_Byte) { /* * Check to see if the current message block is too small to hold * the initial padding bits and length. If so, we will pad the * block, process it, and then continue padding into a second * block. */ if (context->Message_Block_Index >= (SHA1_Message_Block_Size - 8)) { context->Message_Block[context->Message_Block_Index++] = Pad_Byte; while (context->Message_Block_Index < SHA1_Message_Block_Size) context->Message_Block[context->Message_Block_Index++] = 0; SHA1ProcessMessageBlock(context); } else context->Message_Block[context->Message_Block_Index++] = Pad_Byte; while (context->Message_Block_Index < (SHA1_Message_Block_Size - 8)) context->Message_Block[context->Message_Block_Index++] = 0; /* * Store the message length as the last 8 octets */ context->Message_Block[56] = (uint8_t) (context->Length_High >> 24); context->Message_Block[57] = (uint8_t) (context->Length_High >> 16); context->Message_Block[58] = (uint8_t) (context->Length_High >> 8); context->Message_Block[59] = (uint8_t) (context->Length_High); context->Message_Block[60] = (uint8_t) (context->Length_Low >> 24); context->Message_Block[61] = (uint8_t) (context->Length_Low >> 16); context->Message_Block[62] = (uint8_t) (context->Length_Low >> 8); context->Message_Block[63] = (uint8_t) (context->Length_Low); SHA1ProcessMessageBlock(context); } cackey-0.7.10/test.c0000644000000000000000000006723013563537513012702 0ustar rootroot#include #include #include #include #include #ifdef CACKEY_TEST_AFL #include #include static unsigned char *inputData; static unsigned long inputDataLen; /* Include the CACKey source */ #include "cackey.c" #undef CACKEY_DEBUG_PRINTF #define CACKEY_DEBUG_PRINTF(x...) /**/ #undef malloc #undef realloc #undef strdup /* Fake a smartcard */ const SCARD_IO_REQUEST g_rgSCardT0Pci, g_rgSCardT1Pci; static int scard_inTransaction = 0; static LONG scard_protocol; PCSC_API LONG SCardEstablishContext(DWORD dwScope, LPCVOID pvReserved1, LPCVOID pvReserved2, LPSCARDCONTEXT phContext) { CACKEY_DEBUG_PRINTF("Called"); *phContext = 42; return(SCARD_S_SUCCESS); } PCSC_API LONG SCardIsValidContext(SCARDCONTEXT hContext) { CACKEY_DEBUG_PRINTF("Called"); if (hContext != 42) { return(SCARD_E_INVALID_HANDLE); } return(SCARD_S_SUCCESS); } PCSC_API LONG SCardListReaders(SCARDCONTEXT hContext, LPCSTR mszGroups, LPSTR mszReaders, LPDWORD pcchReaders) { static char *readers = "READER0"; CACKEY_DEBUG_PRINTF("Called"); if (hContext != 42) { return(SCARD_E_INVALID_HANDLE); } *pcchReaders = strlen(readers) + 1; if (mszReaders == NULL) { return(SCARD_S_SUCCESS); } memcpy(mszReaders, readers, *pcchReaders); return(SCARD_S_SUCCESS); } PCSC_API LONG SCardBeginTransaction(SCARDHANDLE hCard) { CACKEY_DEBUG_PRINTF("Called"); if (hCard != 99) { return(SCARD_E_INVALID_HANDLE); } if (scard_inTransaction) { return(SCARD_E_SHARING_VIOLATION); } scard_inTransaction = 1; return(SCARD_S_SUCCESS); } PCSC_API LONG SCardEndTransaction(SCARDHANDLE hCard, DWORD dwDisposition) { CACKEY_DEBUG_PRINTF("Called"); if (hCard != 99) { return(SCARD_E_INVALID_HANDLE); } scard_inTransaction = 0; return(SCARD_S_SUCCESS); } PCSC_API LONG SCardStatus(SCARDHANDLE hCard, LPSTR mszReaderName, LPDWORD pcchReaderLen, LPDWORD pdwState, LPDWORD pdwProtocol, LPBYTE pbAtr, LPDWORD pcbAtrLen) { LONG scardlistreaders_ret; CACKEY_DEBUG_PRINTF("Called"); if (hCard != 99) { return(SCARD_E_INVALID_HANDLE); } *pdwState = 0; scardlistreaders_ret = SCardListReaders(42, NULL, mszReaderName, pcchReaderLen); if (scardlistreaders_ret != SCARD_S_SUCCESS) { return(scardlistreaders_ret); } *pdwProtocol = scard_protocol; return(SCARD_S_SUCCESS); } PCSC_API LONG SCardConnect(SCARDCONTEXT hContext, LPCSTR szReader, DWORD dwShareMode, DWORD dwPreferredProtocols, LPSCARDHANDLE phCard, LPDWORD pdwActiveProtocol) { CACKEY_DEBUG_PRINTF("Called"); if (hContext != 42) { return(SCARD_E_INVALID_HANDLE); } if ((dwPreferredProtocols & SCARD_PROTOCOL_T0) == SCARD_PROTOCOL_T0) { *pdwActiveProtocol = SCARD_PROTOCOL_T0; } else { *pdwActiveProtocol = SCARD_PROTOCOL_T1; } scard_protocol = *pdwActiveProtocol; *phCard = 99; return(SCARD_S_SUCCESS); } PCSC_API LONG SCardDisconnect(SCARDHANDLE hCard, DWORD dwDisposition) { CACKEY_DEBUG_PRINTF("Called"); if (hCard != 99) { return(SCARD_E_INVALID_HANDLE); } return(SCARD_S_SUCCESS); } PCSC_API LONG SCardReconnect(SCARDHANDLE hCard, DWORD dwShareMode, DWORD dwPreferredProtocols, DWORD dwInitialization, LPDWORD pdwActiveProtocol) { CACKEY_DEBUG_PRINTF("Called"); if (hCard != 99) { return(SCARD_E_INVALID_HANDLE); } return(SCardConnect(42, NULL, dwShareMode, dwPreferredProtocols, NULL, pdwActiveProtocol)); } PCSC_API LONG SCardReleaseContext(SCARDCONTEXT hContext) { CACKEY_DEBUG_PRINTF("Called"); if (hContext != 42) { return(SCARD_E_INVALID_HANDLE); } return(SCARD_S_SUCCESS); } PCSC_API LONG SCardTransmit(SCARDHANDLE hCard, const SCARD_IO_REQUEST *pioSendPci, LPCBYTE pbSendBuffer, DWORD cbSendLength, SCARD_IO_REQUEST *pioRecvPci, LPBYTE pbRecvBuffer, LPDWORD pcbRecvLength) { CACKEY_DEBUG_PRINTF("Called"); unsigned int bytesToRead; if (hCard != 99) { return(SCARD_E_INVALID_HANDLE); } if (inputDataLen <= 1) { *pcbRecvLength = 0; return(SCARD_S_SUCCESS); } bytesToRead = (inputData[0] << 8) | inputData[1]; inputData += 2; inputDataLen -= 2; if (bytesToRead > inputDataLen) { bytesToRead = inputDataLen; } if (bytesToRead > *pcbRecvLength) { return(SCARD_E_INSUFFICIENT_BUFFER); } *pcbRecvLength = bytesToRead; memcpy(pbRecvBuffer, inputData, bytesToRead); inputData += bytesToRead; inputDataLen -= bytesToRead; return(SCARD_S_SUCCESS); } static void loadTestData(const char *fileName) { ssize_t read_ret; int fd; if (fileName == NULL) { goto cleanup; } fd = open(fileName, O_RDONLY); if (fd < 0) { goto cleanup; } inputDataLen = 16384; inputData = malloc(inputDataLen); read_ret = read(fd, inputData, inputDataLen); if (read_ret < 0) { goto cleanup; } inputDataLen = read_ret; inputData = realloc(inputData, inputDataLen); close(fd); cleanup: return; } #else #include "mypkcs11.h" static void loadTestData(const char *filename) { return; } #endif static char *pkcs11_attribute_to_name(CK_ATTRIBUTE_TYPE attrib) { static char retbuf[1024]; switch (attrib) { case 0x00000000: return "CKA_CLASS"; case 0x00000001: return "CKA_TOKEN"; case 0x00000002: return "CKA_PRIVATE"; case 0x00000003: return "CKA_LABEL"; case 0x00000010: return "CKA_APPLICATION"; case 0x00000011: return "CKA_VALUE"; case 0x00000012: return "CKA_OBJECT_ID"; case 0x00000080: return "CKA_CERTIFICATE_TYPE"; case 0x00000081: return "CKA_ISSUER"; case 0x00000082: return "CKA_SERIAL_NUMBER"; case 0x00000083: return "CKA_AC_ISSUER"; case 0x00000084: return "CKA_OWNER"; case 0x00000085: return "CKA_ATTR_TYPES"; case 0x00000086: return "CKA_TRUSTED"; case 0x00000100: return "CKA_KEY_TYPE"; case 0x00000101: return "CKA_SUBJECT"; case 0x00000102: return "CKA_ID"; case 0x00000103: return "CKA_SENSITIVE"; case 0x00000104: return "CKA_ENCRYPT"; case 0x00000105: return "CKA_DECRYPT"; case 0x00000106: return "CKA_WRAP"; case 0x00000107: return "CKA_UNWRAP"; case 0x00000108: return "CKA_SIGN"; case 0x00000109: return "CKA_SIGN_RECOVER"; case 0x0000010A: return "CKA_VERIFY"; case 0x0000010B: return "CKA_VERIFY_RECOVER"; case 0x0000010C: return "CKA_DERIVE"; case 0x00000110: return "CKA_START_DATE"; case 0x00000111: return "CKA_END_DATE"; case 0x00000120: return "CKA_MODULUS"; case 0x00000121: return "CKA_MODULUS_BITS"; case 0x00000122: return "CKA_PUBLIC_EXPONENT"; case 0x00000123: return "CKA_PRIVATE_EXPONENT"; case 0x00000124: return "CKA_PRIME_1"; case 0x00000125: return "CKA_PRIME_2"; case 0x00000126: return "CKA_EXPONENT_1"; case 0x00000127: return "CKA_EXPONENT_2"; case 0x00000128: return "CKA_COEFFICIENT"; case 0x00000130: return "CKA_PRIME"; case 0x00000131: return "CKA_SUBPRIME"; case 0x00000132: return "CKA_BASE"; case 0x00000133: return "CKA_PRIME_BITS"; case 0x00000134: return "CKA_SUB_PRIME_BITS"; case 0x00000160: return "CKA_VALUE_BITS"; case 0x00000161: return "CKA_VALUE_LEN"; case 0x00000162: return "CKA_EXTRACTABLE"; case 0x00000163: return "CKA_LOCAL"; case 0x00000164: return "CKA_NEVER_EXTRACTABLE"; case 0x00000165: return "CKA_ALWAYS_SENSITIVE"; case 0x00000166: return "CKA_KEY_GEN_MECHANISM"; case 0x00000170: return "CKA_MODIFIABLE"; case 0x00000180: return "CKA_EC_PARAMS"; case 0x00000181: return "CKA_EC_POINT"; case 0x00000200: return "CKA_SECONDARY_AUTH"; case 0x00000201: return "CKA_AUTH_PIN_FLAGS"; case 0x00000300: return "CKA_HW_FEATURE_TYPE"; case 0x00000301: return "CKA_RESET_ON_INIT"; case 0x00000302: return "CKA_HAS_RESET"; case 0xce5363b4: return "CKA_CERT_SHA1_HASH"; case 0xce5363b5: return "CKA_CERT_MD5_HASH"; } snprintf(retbuf, sizeof(retbuf), "0x%08lx", (unsigned long) attrib); retbuf[sizeof(retbuf) - 1] = '\0'; return(retbuf); } int main_pkcs11(void) { CK_FUNCTION_LIST_PTR pFunctionList; CK_RV (*C_CloseSession)(CK_SESSION_HANDLE hSession) = NULL; CK_RV (*C_Decrypt)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedData, CK_ULONG ulEncryptedDataLen, CK_BYTE_PTR pData, CK_ULONG_PTR pulDataLen) = NULL; CK_RV (*C_DecryptInit)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) = NULL; CK_RV (*C_Encrypt)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pEncryptedData, CK_ULONG_PTR pulEncryptedDataLen) = NULL; CK_RV (*C_EncryptInit)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) = NULL; CK_RV (*C_Finalize)(CK_VOID_PTR pReserved) = NULL; CK_RV (*C_FindObjects)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE_PTR phObject, CK_ULONG ulMaxObjectCount, CK_ULONG_PTR pulObjectCount) = NULL; CK_RV (*C_FindObjectsFinal)(CK_SESSION_HANDLE hSession) = NULL; CK_RV (*C_FindObjectsInit)(CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount) = NULL; CK_RV (*C_GetAttributeValue)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount) = NULL; CK_RV (*C_GetInfo)(CK_INFO_PTR pInfo) = NULL; CK_RV (*C_GetSessionInfo)(CK_SESSION_HANDLE hSession, CK_SESSION_INFO_PTR pInfo) = NULL; CK_RV (*C_GetSlotInfo)(CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo) = NULL; CK_RV (*C_GetSlotList)(CK_BBOOL tokenPresent, CK_SLOT_ID_PTR pSlotList, CK_ULONG_PTR pulCount) = NULL; CK_RV (*C_GetTokenInfo)(CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo) = NULL; CK_RV (*C_Initialize)(CK_VOID_PTR pInitArgs) = NULL; CK_RV (*C_Login)(CK_SESSION_HANDLE hSession, CK_USER_TYPE userType, CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen) = NULL; CK_RV (*C_OpenSession)(CK_SLOT_ID slotID, CK_FLAGS flags, CK_VOID_PTR pApplication, CK_NOTIFY notify, CK_SESSION_HANDLE_PTR phSession) = NULL; CK_RV (*C_Sign)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen) = NULL; CK_RV (*C_SignInit)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey) = NULL; CK_C_INITIALIZE_ARGS initargs; CK_INFO clientinfo; CK_ULONG numSlots, currSlot; CK_SLOT_ID_PTR slots; CK_SLOT_INFO slotInfo; CK_TOKEN_INFO tokenInfo; CK_SESSION_HANDLE hSession; CK_SESSION_INFO sessionInfo; CK_OBJECT_HANDLE hObject, *privateKeyObjects_root, *privateKeyObjects, *currPrivKey; CK_ULONG ulObjectCount; CK_ATTRIBUTE template[] = { {CKA_CLASS, NULL, 0}, {CKA_TOKEN, NULL, 0}, {CKA_LABEL, NULL, 0}, {CKA_PRIVATE, NULL, 0}, {CKA_ID, NULL, 0}, {CKA_SERIAL_NUMBER, NULL, 0}, {CKA_SUBJECT, NULL, 0}, {CKA_ISSUER, NULL, 0}, {CKA_CERTIFICATE_TYPE, NULL, 0}, {CKA_KEY_TYPE, NULL, 0}, {CKA_SIGN, NULL, 0}, {CKA_VALUE, NULL, 0}, {CKA_CERT_MD5_HASH, NULL, 0}, {CKA_CERT_SHA1_HASH, NULL, 0}, {CKA_TRUSTED, NULL, 0}, {CKA_TRUST_CLIENT_AUTH, NULL, 0}, {CKA_TRUST_CODE_SIGNING, NULL, 0}, {CKA_TRUST_CRL_SIGN, NULL, 0}, {CKA_TRUST_DATA_ENCIPHERMENT, NULL, 0}, {CKA_TRUST_DIGITAL_SIGNATURE, NULL, 0}, {CKA_TRUST_EMAIL_PROTECTION, NULL, 0}, {CKA_TRUST_KEY_AGREEMENT, NULL, 0}, {CKA_TRUST_KEY_CERT_SIGN, NULL, 0}, {CKA_TRUST_KEY_ENCIPHERMENT, NULL, 0}, {CKA_TRUST_NON_REPUDIATION, NULL, 0}, {CKA_TRUST_SERVER_AUTH, NULL, 0} }, *curr_attr; CK_ULONG curr_attr_idx; CK_ULONG byte_idx; CK_UTF8CHAR user_pin[1024], *pucValue; CK_OBJECT_CLASS objectClass; CK_BYTE signature[1024], encrypted_buf[16384], decrypted_buf[16384]; CK_ULONG signature_len, encrypted_buflen, decrypted_buflen; CK_MECHANISM mechanism = {CKM_RSA_PKCS, NULL, 0}; CK_RV chk_rv; char *fgets_ret; int i; chk_rv = C_GetFunctionList(&pFunctionList); if (chk_rv != CKR_OK) { printf("C_GetFunctionList() failed."); return(1); } C_CloseSession = pFunctionList->C_CloseSession; C_Decrypt = pFunctionList->C_Decrypt; C_DecryptInit = pFunctionList->C_DecryptInit; C_Encrypt = pFunctionList->C_Encrypt; C_EncryptInit = pFunctionList->C_EncryptInit; C_Finalize = pFunctionList->C_Finalize; C_FindObjects = pFunctionList->C_FindObjects; C_FindObjectsFinal = pFunctionList->C_FindObjectsFinal; C_FindObjectsInit = pFunctionList->C_FindObjectsInit; C_GetAttributeValue = pFunctionList->C_GetAttributeValue; C_GetInfo = pFunctionList->C_GetInfo; C_GetSessionInfo = pFunctionList->C_GetSessionInfo; C_GetSlotInfo = pFunctionList->C_GetSlotInfo; C_GetSlotList = pFunctionList->C_GetSlotList; C_GetTokenInfo = pFunctionList->C_GetTokenInfo; C_Initialize = pFunctionList->C_Initialize; C_Login = pFunctionList->C_Login; C_OpenSession = pFunctionList->C_OpenSession; C_Sign = pFunctionList->C_Sign; C_SignInit = pFunctionList->C_SignInit; privateKeyObjects = malloc(sizeof(*privateKeyObjects) * 1024); privateKeyObjects_root = privateKeyObjects; for (i = 0; i < 1024; i++) { privateKeyObjects[i] = CK_INVALID_HANDLE; } initargs.CreateMutex = NULL; initargs.DestroyMutex = NULL; initargs.LockMutex = NULL; initargs.UnlockMutex = NULL; initargs.flags = CKF_OS_LOCKING_OK; initargs.pReserved = NULL; chk_rv = C_Initialize(&initargs); if (chk_rv != CKR_OK) { initargs.CreateMutex = NULL; initargs.DestroyMutex = NULL; initargs.LockMutex = NULL; initargs.UnlockMutex = NULL; initargs.flags = 0; initargs.pReserved = NULL; chk_rv = C_Initialize(&initargs); if (chk_rv != CKR_OK) { printf("C_Initialize() failed."); return(1); } } chk_rv = C_GetInfo(&clientinfo); if (chk_rv != CKR_OK) { return(1); } printf("PKCS#11 Client Version: %i.%i, Library Version %i.%i\n", clientinfo.cryptokiVersion.major, clientinfo.cryptokiVersion.minor, clientinfo.libraryVersion.major, clientinfo.libraryVersion.minor); printf("PKCS#11 ManufID: %.*s, LibraryDesc: %.*s\n", 32, clientinfo.manufacturerID, 32, clientinfo.libraryDescription); chk_rv = C_GetSlotList(FALSE, NULL, &numSlots); if (chk_rv != CKR_OK) { return(1); } printf("Number of Slots: %lu\n", numSlots); slots = malloc(sizeof(*slots) * numSlots); chk_rv = C_GetSlotList(FALSE, slots, &numSlots); if (chk_rv != CKR_OK) { return(1); } for (currSlot = 0; currSlot < numSlots; currSlot++) { printf(" Slot %lu:\n", currSlot); chk_rv = C_GetSlotInfo(slots[currSlot], &slotInfo); if (chk_rv != CKR_OK) { return(1); } printf(" Id : %lu\n", (unsigned long) slots[currSlot]); printf(" Desc : %.*s\n", 32, slotInfo.slotDescription); printf(" ManufID: %.*s\n", 32, slotInfo.manufacturerID); printf(" HWVers : %i.%i\n", slotInfo.hardwareVersion.major, slotInfo.hardwareVersion.minor); printf(" FWVers : %i.%i\n", slotInfo.firmwareVersion.major, slotInfo.firmwareVersion.minor); printf(" Flags : "); if ((slotInfo.flags & CKF_TOKEN_PRESENT) == CKF_TOKEN_PRESENT) { printf("CKF_TOKEN_PRESENT "); } if ((slotInfo.flags & CKF_REMOVABLE_DEVICE) == CKF_REMOVABLE_DEVICE) { printf("CKF_REMOVABLE_DEVICE "); } if ((slotInfo.flags & CKF_HW_SLOT) == CKF_HW_SLOT) { printf("CKF_HW_SLOT "); } printf("\n"); if ((slotInfo.flags & CKF_TOKEN_PRESENT) == CKF_TOKEN_PRESENT) { printf(" Token:\n"); chk_rv = C_GetTokenInfo(slots[currSlot], &tokenInfo); if (chk_rv != CKR_OK) { return(1); } printf(" Label : %.*s\n", 32, tokenInfo.label); printf(" ManufID: %.*s\n", 32, tokenInfo.manufacturerID); printf(" Model : %.*s\n", 16, tokenInfo.model); printf(" SerNo : %.*s\n", 16, tokenInfo.serialNumber); printf(" HWVers : %i.%i\n", tokenInfo.hardwareVersion.major, tokenInfo.hardwareVersion.minor); printf(" FWVers : %i.%i\n", tokenInfo.firmwareVersion.major, tokenInfo.firmwareVersion.minor); printf(" Flags : "); if ((tokenInfo.flags & CKF_RNG) == CKF_RNG) { printf("CKF_RNG "); } if ((tokenInfo.flags & CKF_WRITE_PROTECTED) == CKF_WRITE_PROTECTED) { printf("CKF_WRITE_PROTECTED "); } if ((tokenInfo.flags & CKF_LOGIN_REQUIRED) == CKF_LOGIN_REQUIRED) { printf("CKF_LOGIN_REQUIRED "); } if ((tokenInfo.flags & CKF_USER_PIN_INITIALIZED) == CKF_USER_PIN_INITIALIZED) { printf("CKF_USER_PIN_INITIALIZED "); } if ((tokenInfo.flags & CKF_RESTORE_KEY_NOT_NEEDED) == CKF_RESTORE_KEY_NOT_NEEDED) { printf("CKF_RESTORE_KEY_NOT_NEEDED "); } if ((tokenInfo.flags & CKF_CLOCK_ON_TOKEN) == CKF_CLOCK_ON_TOKEN) { printf("CKF_CLOCK_ON_TOKEN "); } if ((tokenInfo.flags & CKF_PROTECTED_AUTHENTICATION_PATH) == CKF_PROTECTED_AUTHENTICATION_PATH) { printf("CKF_PROTECTED_AUTHENTICATION_PATH "); } if ((tokenInfo.flags & CKF_DUAL_CRYPTO_OPERATIONS) == CKF_DUAL_CRYPTO_OPERATIONS) { printf("CKF_DUAL_CRYPTO_OPERATIONS "); } if ((tokenInfo.flags & CKF_TOKEN_INITIALIZED) == CKF_TOKEN_INITIALIZED) { printf("CKF_TOKEN_INITIALIZED "); } if ((tokenInfo.flags & CKF_SECONDARY_AUTHENTICATION) == CKF_SECONDARY_AUTHENTICATION) { printf("CKF_SECONDARY_AUTHENTICATION "); } if ((tokenInfo.flags & CKF_USER_PIN_COUNT_LOW) == CKF_USER_PIN_COUNT_LOW) { printf("CKF_USER_PIN_COUNT_LOW "); } if ((tokenInfo.flags & CKF_USER_PIN_FINAL_TRY) == CKF_USER_PIN_FINAL_TRY) { printf("CKF_USER_PIN_FINAL_TRY "); } if ((tokenInfo.flags & CKF_USER_PIN_LOCKED) == CKF_USER_PIN_LOCKED) { printf("CKF_USER_PIN_LOCKED "); } if ((tokenInfo.flags & CKF_USER_PIN_TO_BE_CHANGED) == CKF_USER_PIN_TO_BE_CHANGED) { printf("CKF_USER_PIN_TO_BE_CHANGED "); } if ((tokenInfo.flags & CKF_SO_PIN_COUNT_LOW) == CKF_SO_PIN_COUNT_LOW) { printf("CKF_SO_PIN_COUNT_LOW "); } if ((tokenInfo.flags & CKF_SO_PIN_FINAL_TRY) == CKF_SO_PIN_FINAL_TRY) { printf("CKF_SO_PIN_FINAL_TRY "); } if ((tokenInfo.flags & CKF_SO_PIN_LOCKED) == CKF_SO_PIN_LOCKED) { printf("CKF_SO_PIN_LOCKED "); } if ((tokenInfo.flags & CKF_SO_PIN_TO_BE_CHANGED) == CKF_SO_PIN_TO_BE_CHANGED) { printf("CKF_SO_PIN_TO_BE_CHANGED "); } printf("\n"); } } chk_rv = C_OpenSession(slots[0], CKF_SERIAL_SESSION, NULL, NULL, &hSession); if (chk_rv == CKR_OK) { chk_rv = C_GetTokenInfo(slots[0], &tokenInfo); if (chk_rv != CKR_OK) { return(1); } if ((tokenInfo.flags & CKF_LOGIN_REQUIRED) == CKF_LOGIN_REQUIRED && (tokenInfo.flags & CKF_PROTECTED_AUTHENTICATION_PATH) == 0) { fgets_ret = NULL; while (fgets_ret == NULL) { printf("** ENTER PIN: "); fflush(stdout); #ifdef CACKEY_TEST_AFL memcpy(user_pin, "0000000", 8); fgets_ret = (char *) user_pin; #else fgets_ret = fgets((char *) user_pin, sizeof(user_pin), stdin); #endif } if (strlen((char *) user_pin) >= 1) { while (user_pin[strlen((char *) user_pin) - 1] < ' ') { user_pin[strlen((char *) user_pin) - 1] = '\0'; } } chk_rv = C_Login(hSession, CKU_USER, user_pin, strlen((char *) user_pin)); } else { chk_rv = C_Login(hSession, CKU_USER, NULL, 0); } if (chk_rv == CKR_OK) { printf("Login to device succeed.\n"); } else { printf("Login to device failed.\n"); } chk_rv = C_GetSessionInfo(hSession, &sessionInfo); if (chk_rv == CKR_OK) { printf("Session Info:\n"); printf(" Slot ID: %lu\n", (unsigned long) sessionInfo.slotID); printf(" Dev Err: %lu\n", (unsigned long) sessionInfo.ulDeviceError); printf(" State : "); if (sessionInfo.state == CKS_RO_PUBLIC_SESSION) { printf("CKS_RO_PUBLIC_SESSION\n"); } else if (sessionInfo.state == CKS_RO_USER_FUNCTIONS) { printf("CKS_RO_USER_FUNCTIONS\n"); } else if (sessionInfo.state == CKS_RW_PUBLIC_SESSION) { printf("CKS_RW_PUBLIC_SESSION\n"); } else if (sessionInfo.state == CKS_RW_USER_FUNCTIONS) { printf("CKS_RW_USER_FUNCTIONS\n"); } else if (sessionInfo.state == CKS_RO_PUBLIC_SESSION) { printf("CKS_RW_SO_FUNCTIONS\n"); } else { printf("Unknown (%lu)", (unsigned long) sessionInfo.state); } printf(" Flags : "); if ((sessionInfo.flags & CKF_RW_SESSION) == CKF_RW_SESSION) { printf("CKF_RW_SESSION "); } if ((sessionInfo.flags & CKF_SERIAL_SESSION) == CKF_SERIAL_SESSION) { printf("CKF_SERIAL_SESSION "); } printf("\n"); } else { printf("GetSessionInfo() failed.\n"); } chk_rv = C_FindObjectsInit(hSession, NULL, 0); if (chk_rv == CKR_OK) { while (1) { chk_rv = C_FindObjects(hSession, &hObject, 1, &ulObjectCount); if (chk_rv != CKR_OK) { printf("FindObjects() failed.\n"); break; } if (ulObjectCount == 0) { break; } if (ulObjectCount != 1) { printf("FindObjects() returned a weird number of objects. Asked for 1, got %lu.\n", ulObjectCount); break; } printf(" Object Info (object %lu):\n", (unsigned long) hObject); for (curr_attr_idx = 0; curr_attr_idx < (sizeof(template) / sizeof(template[0])); curr_attr_idx++) { curr_attr = &template[curr_attr_idx]; if (curr_attr->pValue) { free(curr_attr->pValue); } curr_attr->pValue = NULL; } chk_rv = C_GetAttributeValue(hSession, hObject, &template[0], sizeof(template) / sizeof(template[0])); if (chk_rv == CKR_ATTRIBUTE_TYPE_INVALID || chk_rv == CKR_ATTRIBUTE_SENSITIVE || chk_rv == CKR_BUFFER_TOO_SMALL) { chk_rv = CKR_OK; } if (chk_rv == CKR_OK) { for (curr_attr_idx = 0; curr_attr_idx < (sizeof(template) / sizeof(template[0])); curr_attr_idx++) { curr_attr = &template[curr_attr_idx]; if (((CK_LONG) curr_attr->ulValueLen) != ((CK_LONG) -1)) { curr_attr->pValue = malloc(curr_attr->ulValueLen); } } chk_rv = C_GetAttributeValue(hSession, hObject, &template[0], sizeof(template) / sizeof(template[0])); if (chk_rv == CKR_OK || chk_rv == CKR_ATTRIBUTE_SENSITIVE || chk_rv == CKR_ATTRIBUTE_TYPE_INVALID || chk_rv == CKR_BUFFER_TOO_SMALL) { for (curr_attr_idx = 0; curr_attr_idx < (sizeof(template) / sizeof(template[0])); curr_attr_idx++) { curr_attr = &template[curr_attr_idx]; if (curr_attr->pValue) { switch (curr_attr->type) { case CKA_LABEL: printf(" [%lu] %20s: %.*s\n", hObject, pkcs11_attribute_to_name(curr_attr->type), (int) curr_attr->ulValueLen, (char *) curr_attr->pValue); break; case CKA_CLASS: objectClass = *((CK_OBJECT_CLASS *) curr_attr->pValue); if (objectClass == CKO_PRIVATE_KEY) { *privateKeyObjects = hObject; privateKeyObjects++; } case CKA_TOKEN: case CKA_ID: case CKA_SERIAL_NUMBER: case CKA_PRIVATE: case CKA_CERTIFICATE_TYPE: case CKA_KEY_TYPE: case CKA_SIGN: case CKA_DECRYPT: case CKA_TRUSTED: case CKA_CERT_MD5_HASH: case CKA_CERT_SHA1_HASH: pucValue = curr_attr->pValue; printf(" [%lu] %20s: ", hObject, pkcs11_attribute_to_name(curr_attr->type)); for (byte_idx = 0; byte_idx < curr_attr->ulValueLen; byte_idx++) { printf("%02x ", (unsigned int) pucValue[byte_idx]); } printf(";; %p/%lu\n", curr_attr->pValue, curr_attr->ulValueLen); break; case CKA_SUBJECT: case CKA_ISSUER: pucValue = curr_attr->pValue; printf(" [%lu] %20s: ", hObject, pkcs11_attribute_to_name(curr_attr->type)); for (byte_idx = 0; byte_idx < curr_attr->ulValueLen; byte_idx++) { printf("\\x%02x", (unsigned int) pucValue[byte_idx]); } printf(" ;; %p/%lu\n", curr_attr->pValue, curr_attr->ulValueLen); break; case CKA_TRUST_CLIENT_AUTH: case CKA_TRUST_CODE_SIGNING: case CKA_TRUST_CRL_SIGN: case CKA_TRUST_DATA_ENCIPHERMENT: case CKA_TRUST_DIGITAL_SIGNATURE: case CKA_TRUST_EMAIL_PROTECTION: case CKA_TRUST_KEY_AGREEMENT: case CKA_TRUST_KEY_CERT_SIGN: case CKA_TRUST_KEY_ENCIPHERMENT: case CKA_TRUST_NON_REPUDIATION: case CKA_TRUST_SERVER_AUTH: break; default: printf(" [%lu] %20s: %p/%lu\n", hObject, pkcs11_attribute_to_name(curr_attr->type), curr_attr->pValue, curr_attr->ulValueLen); break; } } else { printf(" [%lu] %20s: (not found)\n", hObject, pkcs11_attribute_to_name(curr_attr->type)); } free(curr_attr->pValue); curr_attr->pValue = NULL; } } else { printf("GetAttributeValue()/2 failed.\n"); } } else { printf("GetAttributeValue(hObject=%lu)/1 failed (rv = %lu).\n", (unsigned long) hObject, (unsigned long) chk_rv); } } chk_rv = C_FindObjectsFinal(hSession); if (chk_rv != CKR_OK) { printf("FindObjectsFinal() failed.\n"); } } else { printf("FindObjectsInit() failed.\n"); } printf("--- Operations ---\n"); for (currPrivKey = privateKeyObjects_root; *currPrivKey != CK_INVALID_HANDLE; currPrivKey++) { chk_rv = C_SignInit(hSession, &mechanism, *currPrivKey); if (chk_rv == CKR_OK) { signature_len = sizeof(signature); chk_rv = C_Sign(hSession, (CK_BYTE_PTR) "Test", strlen("Test"), (CK_BYTE_PTR) &signature, &signature_len); if (chk_rv == CKR_OK) { printf("[%04lu/%02lx] Signature: ", (unsigned long) *currPrivKey, (unsigned long) mechanism.mechanism); for (byte_idx = 0; byte_idx < signature_len; byte_idx++) { printf("%02x ", (unsigned int) signature[byte_idx]); } printf("\n"); } else { printf("Sign() failed.\n"); } } else { printf("SignInit() failed.\n"); } } for (currPrivKey = privateKeyObjects_root; *currPrivKey != CK_INVALID_HANDLE; currPrivKey++) { chk_rv = C_EncryptInit(hSession, &mechanism, *currPrivKey); if (chk_rv == CKR_OK) { encrypted_buflen = sizeof(encrypted_buf); chk_rv = C_Encrypt(hSession, (CK_BYTE_PTR) "Test", strlen("Test"), encrypted_buf, &encrypted_buflen); if (chk_rv == CKR_OK) { printf("[%04lu/%02lx] Encrypted(Test): ", (unsigned long) *currPrivKey, (unsigned long) mechanism.mechanism); for (byte_idx = 0; byte_idx < encrypted_buflen; byte_idx++) { printf("%02x ", (unsigned int) encrypted_buf[byte_idx]); } printf("\n"); } else { printf("Encrypt() failed.\n"); } } else { printf("EncryptInit() failed.\n"); } } for (currPrivKey = privateKeyObjects_root; *currPrivKey != CK_INVALID_HANDLE; currPrivKey++) { chk_rv = C_DecryptInit(hSession, &mechanism, *currPrivKey); if (chk_rv == CKR_OK) { decrypted_buflen = sizeof(decrypted_buf); chk_rv = C_Decrypt(hSession, (CK_BYTE_PTR) "\x4c\x36\x0f\x86\x2d\xb7\xb2\x46\x92\x11\x7e\x5f\xd1\xeb\x2c\xb0\xdb\x34\x60\xb8\x0c\xf8\x27\xb5\xfb\xce\xd1\xf4\x58\xa3\x20\x52\x9d\x97\x08\xd8\x2b\x5e\xb2\x37\x46\x72\x45\x7c\x66\x23\x53\xb5\xa5\x16\x61\x96\xbc\x5c\x8d\x85\x18\x24\xcf\x74\x7f\xc2\x23\x15\xd6\x42\x72\xa5\x2b\x29\x29\x1d\xa6\xea\x2b\xcb\x57\x59\xb3\x5f\xe2\xf8\x30\x12\x2f\x1b\xfa\xbd\xa9\x19\xef\x5c\xbb\x48\xdc\x28\x42\xdd\x90\xbe\x63\xeb\x59\x0c\xaf\x59\xcb\xe4\x6a\xf2\x56\x24\x41\xc2\x77\x7b\xc9\xf8\x02\x0f\x67\x3d\x2a\x98\x91\x14\xa2\x57", 128, decrypted_buf, &decrypted_buflen); if (chk_rv == CKR_OK) { printf("[%04lu/%02lx] Decrypted(It works!): ", (unsigned long) *currPrivKey, (unsigned long) mechanism.mechanism); for (byte_idx = 0; byte_idx < decrypted_buflen; byte_idx++) { printf("%02x ", (unsigned int) decrypted_buf[byte_idx]); } printf("\n"); } else { printf("Decrypt() failed.\n"); } } else { printf("DecryptInit() failed.\n"); } } chk_rv = C_CloseSession(hSession); if (chk_rv != CKR_OK) { printf("CloseSession failed.\n"); } } else { printf("OpenSession failed.\n"); } C_Finalize(NULL); if (slots) { free(slots); } if (privateKeyObjects_root) { free(privateKeyObjects_root); } return(0); } int main(int argc, char **argv) { int retval = 0, ck_retval; printf("Testing libcackey...\n"); if (argc > 1) { loadTestData(argv[1]); } ck_retval = main_pkcs11(); if (ck_retval != 0) { retval = ck_retval; } printf("Testing libcackey... DONE. Status = %i\n", ck_retval); return(retval); }