]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Save work.
authormsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>
Fri, 8 Nov 2013 20:42:05 +0000 (20:42 +0000)
committermsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>
Fri, 8 Nov 2013 20:42:05 +0000 (20:42 +0000)
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11426 a1ca3aef-8c08-0410-bb20-df032aa958be

12 files changed:
cups/Dependencies
cups/Makefile
cups/http.c
cups/http.h
cups/tls-darwin.c
doc/help/ref-cupsd-conf.html.in
man/cupsd.conf.man.in
scheduler/conf.c
scheduler/conf.h
scheduler/tls-openssl.c [deleted file]
test/run-stp-tests.sh
xcode/CUPS.xcodeproj/project.pbxproj

index 10beea26ba737d49aa8a943afee74f7a41e39e47..ad96cd483b0f944965d8e7ee5350cbf4f359bfef 100644 (file)
 adminutil.o: adminutil.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h adminutil.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h adminutil.h
 array.o: array.c string-private.h ../config.h debug-private.h \
   ../cups/versioning.h array-private.h ../cups/array.h
 attr.o: attr.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 auth.o: auth.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 backchannel.o: backchannel.c cups.h file.h versioning.h ipp.h http.h \
-  array.h language.h
+  array.h language.h pwg.h
 backend.o: backend.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h backend.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h backend.h
 conflicts.o: conflicts.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 custom.o: custom.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 debug.o: debug.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 dest.o: dest.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 dest-job.o: dest-job.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 dest-localization.o: dest-localization.c cups-private.h string-private.h \
-  ../config.h debug-private.h ../cups/versioning.h ipp-private.h \
-  ../cups/ipp.h http.h array.h http-private.h md5-private.h \
-  language-private.h ../cups/transcode.h language.h pwg-private.h \
-  ../cups/cups.h file.h ppd-private.h ../cups/ppd.h thread-private.h
+  ../config.h debug-private.h ../cups/versioning.h array-private.h \
+  ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
+  ../cups/language.h md5-private.h language-private.h \
+  ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
+  ppd-private.h ../cups/ppd.h thread-private.h
 dest-options.o: dest-options.c cups-private.h string-private.h \
-  ../config.h debug-private.h ../cups/versioning.h ipp-private.h \
-  ../cups/ipp.h http.h array.h http-private.h md5-private.h \
-  language-private.h ../cups/transcode.h language.h pwg-private.h \
-  ../cups/cups.h file.h ppd-private.h ../cups/ppd.h thread-private.h
+  ../config.h debug-private.h ../cups/versioning.h array-private.h \
+  ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
+  ../cups/language.h md5-private.h language-private.h \
+  ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
+  ppd-private.h ../cups/ppd.h thread-private.h
 dir.o: dir.c string-private.h ../config.h debug-private.h \
   ../cups/versioning.h dir.h
 emit.o: emit.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 encode.o: encode.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 file.o: file.c file-private.h cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 getdevices.o: getdevices.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
-getifaddrs.o: getifaddrs.c http-private.h ../config.h ../cups/http.h \
-  versioning.h array.h md5-private.h ipp-private.h ../cups/ipp.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
+getifaddrs.o: getifaddrs.c http-private.h ../config.h ../cups/language.h \
+  array.h versioning.h ../cups/http.h md5-private.h ipp-private.h \
+  ../cups/ipp.h
 getputfile.o: getputfile.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 globals.o: globals.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 http.o: http.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h tls-darwin.c
 http-addr.o: http-addr.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 http-addrlist.o: http-addrlist.c cups-private.h string-private.h \
-  ../config.h debug-private.h ../cups/versioning.h ipp-private.h \
-  ../cups/ipp.h http.h array.h http-private.h md5-private.h \
-  language-private.h ../cups/transcode.h language.h pwg-private.h \
-  ../cups/cups.h file.h ppd-private.h ../cups/ppd.h thread-private.h
+  ../config.h debug-private.h ../cups/versioning.h array-private.h \
+  ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
+  ../cups/language.h md5-private.h language-private.h \
+  ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
+  ppd-private.h ../cups/ppd.h thread-private.h
 http-support.o: http-support.c cups-private.h string-private.h \
-  ../config.h debug-private.h ../cups/versioning.h ipp-private.h \
-  ../cups/ipp.h http.h array.h http-private.h md5-private.h \
-  language-private.h ../cups/transcode.h language.h pwg-private.h \
-  ../cups/cups.h file.h ppd-private.h ../cups/ppd.h thread-private.h
+  ../config.h debug-private.h ../cups/versioning.h array-private.h \
+  ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
+  ../cups/language.h md5-private.h language-private.h \
+  ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
+  ppd-private.h ../cups/ppd.h thread-private.h
 ipp.o: ipp.c cups-private.h string-private.h ../config.h debug-private.h \
-  ../cups/versioning.h ipp-private.h ../cups/ipp.h http.h array.h \
-  http-private.h md5-private.h language-private.h ../cups/transcode.h \
-  language.h pwg-private.h ../cups/cups.h file.h ppd-private.h \
-  ../cups/ppd.h thread-private.h
+  ../cups/versioning.h array-private.h ../cups/array.h ipp-private.h \
+  ../cups/ipp.h http.h http-private.h ../cups/language.h md5-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
+  file.h pwg.h ppd-private.h ../cups/ppd.h thread-private.h
 ipp-support.o: ipp-support.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 langprintf.o: langprintf.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 language.o: language.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 localize.o: localize.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 mark.o: mark.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 md5.o: md5.c md5-private.h string-private.h ../config.h
-md5passwd.o: md5passwd.c http-private.h ../config.h ../cups/http.h \
-  versioning.h array.h md5-private.h ipp-private.h ../cups/ipp.h \
-  string-private.h
+md5passwd.o: md5passwd.c http-private.h ../config.h ../cups/language.h \
+  array.h versioning.h ../cups/http.h md5-private.h ipp-private.h \
+  ../cups/ipp.h string-private.h
 notify.o: notify.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 options.o: options.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 page.o: page.c string-private.h ../config.h debug-private.h \
   ../cups/versioning.h ppd.h cups.h file.h ipp.h http.h array.h \
-  language.h
+  language.h pwg.h
 ppd.o: ppd.c cups-private.h string-private.h ../config.h debug-private.h \
-  ../cups/versioning.h ipp-private.h ../cups/ipp.h http.h array.h \
-  http-private.h md5-private.h language-private.h ../cups/transcode.h \
-  language.h pwg-private.h ../cups/cups.h file.h ppd-private.h \
-  ../cups/ppd.h thread-private.h
+  ../cups/versioning.h array-private.h ../cups/array.h ipp-private.h \
+  ../cups/ipp.h http.h http-private.h ../cups/language.h md5-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
+  file.h pwg.h ppd-private.h ../cups/ppd.h thread-private.h
 ppd-cache.o: ppd-cache.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 pwg-media.o: pwg-media.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 request.o: request.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 sidechannel.o: sidechannel.c sidechannel.h versioning.h cups-private.h \
-  string-private.h ../config.h debug-private.h ipp-private.h \
-  ../cups/ipp.h http.h array.h http-private.h md5-private.h \
-  language-private.h ../cups/transcode.h language.h pwg-private.h \
-  ../cups/cups.h file.h ppd-private.h ../cups/ppd.h thread-private.h
+  string-private.h ../config.h debug-private.h array-private.h \
+  ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
+  ../cups/language.h md5-private.h language-private.h \
+  ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
+  ppd-private.h ../cups/ppd.h thread-private.h
 snmp.o: snmp.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h snmp-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h snmp-private.h
 snprintf.o: snprintf.c string-private.h ../config.h
 string.o: string.c string-private.h ../config.h debug-private.h \
   ../cups/versioning.h thread-private.h array.h
 tempfile.o: tempfile.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 thread.o: thread.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 transcode.o: transcode.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 usersys.o: usersys.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 util.o: util.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 testadmin.o: testadmin.c adminutil.h cups.h file.h versioning.h ipp.h \
-  http.h array.h language.h string-private.h ../config.h
+  http.h array.h language.h pwg.h string-private.h ../config.h
 testarray.o: testarray.c string-private.h ../config.h debug-private.h \
-  ../cups/versioning.h array.h dir.h
+  ../cups/versioning.h array-private.h ../cups/array.h dir.h
 testconflicts.o: testconflicts.c cups.h file.h versioning.h ipp.h http.h \
-  array.h language.h ppd.h string-private.h ../config.h
+  array.h language.h pwg.h ppd.h string-private.h ../config.h
 testcups.o: testcups.c string-private.h ../config.h cups.h file.h \
-  versioning.h ipp.h http.h array.h language.h ppd.h
+  versioning.h ipp.h http.h array.h language.h pwg.h ppd.h
 testfile.o: testfile.c string-private.h ../config.h debug-private.h \
   ../cups/versioning.h file.h
-testhttp.o: testhttp.c string-private.h ../config.h http-private.h \
-  ../cups/http.h versioning.h array.h md5-private.h ipp-private.h \
-  ../cups/ipp.h
+testhttp.o: testhttp.c cups-private.h string-private.h ../config.h \
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 testi18n.o: testi18n.c string-private.h ../config.h language-private.h \
   ../cups/transcode.h language.h array.h versioning.h
 testipp.o: testipp.c file.h versioning.h string-private.h ../config.h \
   ipp-private.h ../cups/ipp.h http.h array.h
 testoptions.o: testoptions.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 testlang.o: testlang.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 testppd.o: testppd.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h
 testpwg.o: testpwg.c ppd-private.h ../cups/cups.h file.h versioning.h \
-  ipp.h http.h array.h language.h ../cups/ppd.h pwg-private.h \
+  ipp.h http.h array.h language.h pwg.h ../cups/ppd.h pwg-private.h \
   file-private.h cups-private.h string-private.h ../config.h \
-  debug-private.h ipp-private.h http-private.h md5-private.h \
-  language-private.h ../cups/transcode.h thread-private.h
+  debug-private.h array-private.h ipp-private.h http-private.h \
+  md5-private.h language-private.h ../cups/transcode.h thread-private.h
 testsnmp.o: testsnmp.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h snmp-private.h
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+  thread-private.h snmp-private.h
index a8ca3e6550180791cffd3152edda98848a681b46..084b1680e5e00535fa510429c87fb8ed17ab74e3 100644 (file)
@@ -620,6 +620,7 @@ sloc:
 #
 
 include Dependencies
+http.o: tls-darwin.c tls-gnutls.c tls-sspi.c
 
 
 #
index 9c82fdcaa9330a86ca6ab1fb802f8fbae9424b1c..bb3a7c3cf293635df246ba52d0b0137f81489dc4 100644 (file)
@@ -403,6 +403,30 @@ httpClose(http_t *http)                    /* I - HTTP connection */
 }
 
 
+/*
+ * 'httpCompareCredentials()' - Compare two sets of X.509 credentials.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - 1 if they match, 0 if they do not */
+httpCompareCredentials(
+    cups_array_t *cred1,               /* I - First set of X.509 credentials */
+    cups_array_t *cred2)               /* I - Second set of X.509 credentials */
+{
+  http_credential_t    *temp1, *temp2; /* Temporary credentials */
+
+
+  for (temp1 = (http_credential_t *)cupsArrayFirst(cred1), temp2 = (http_credential_t *)cupsArrayFirst(cred2); temp1 && temp2; temp1 = (http_credential_t *)cupsArrayNext(cred1), temp2 = (http_credential_t *)cupsArrayNext(cred2))
+    if (temp1->datalen != temp2->datalen)
+      return (0);
+    else if (memcmp(temp1->data, temp2->data, temp1->datalen))
+      return (0);
+
+  return (temp1 == temp2);
+}
+
+
 /*
  * 'httpConnect()' - Connect to a HTTP server.
  *
index e672ca5f63c15d05104490259ad05b6028fd187f..4015abf630e9e52ee4fbb33e773737eb736e8e08 100644 (file)
@@ -616,10 +616,6 @@ extern int         httpAddrFamily(http_addr_t *addr) _CUPS_API_2_0;
 extern int             httpCompareCredentials(cups_array_t *cred1,
                                               cups_array_t *cred2)
                                               _CUPS_API_2_0;
-extern int             httpCreateCredentials(const char *path,
-                                             cups_array_t **credentials,
-                                             const char *common_name)
-                                             _CUPS_API_2_0;
 extern size_t          httpCredentialsString(cups_array_t *credentials,
                                              char *buffer, size_t bufsize)
                                              _CUPS_API_2_0;
@@ -637,6 +633,7 @@ extern int          httpLoadCredentials(const char *path,
                                            cups_array_t **credentials,
                                            const char *common_name)
                                            _CUPS_API_2_0;
+extern int             httpMakeCredentials(cups_array_t **credentials, const char *common_name) _CUPS_API_2_0;
 extern const char      *httpResolveHostname(http_t *http, char *buffer, size_t bufsize) _CUPS_API_2_0;
 extern int             httpSaveCredentials(const char *path,
                                            cups_array_t *credentials,
index 66b6452873efe03b1d8b8b5046375aa76b394cc8..8c8e8ca15b7305965d3f2002f44ac8c460ed3b45 100644 (file)
@@ -125,6 +125,27 @@ _httpCreateCredentials(
 }
 
 
+/*
+ * 'httpCredentialsString()' - Return a string representing the credentials.
+ *
+ * @since CUPS 2.0@
+ */
+
+size_t                                 /* O - Total size of credentials string */
+httpCredentialsString(
+    cups_array_t *credentials,         /* I - Credentials */
+    char         *buffer,              /* I - Buffer or @code NULL@ */
+    size_t       bufsize)              /* I - Size of buffer */
+{
+  (void)credentials;
+
+  if (buffer && bufsize > 0)
+    *buffer = '\0';
+
+  return (1);
+}
+
+
 /*
  * '_httpFreeCredentials()' - Free internal credentials.
  */
@@ -140,6 +161,67 @@ _httpFreeCredentials(
 }
 
 
+/*
+ * 'httpLoadCredentials()' - Load X.509 credentials from a keychain file.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O  - -1 on error, 0 on success */
+httpLoadCredentials(
+    const char   *path,                        /* I  - Keychain/PKCS#12 path */
+    cups_array_t **credentials,                /* IO - Credentials */
+    const char   *common_name)         /* I  - Common name for credentials */
+{
+  (void)path;
+  (void)credentials;
+  (void)common_name;
+
+  return (-1);
+}
+
+
+/*
+ * 'httpMakeCredentials()' - Create self-signed credentials for the given
+ *                           name.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - 0 on success, -1 on failure */
+httpMakeCredentials(
+    cups_array_t **credentials,                /* O - Credentials */
+    const char   *common_name)         /* I - Common name for X.509 cert */
+{
+  (void)common_name;
+
+  if (credentials)
+    *credentials = NULL;
+
+  return (-1);
+}
+
+
+/*
+ * 'httpSaveCredentials()' - Save X.509 credentials to a keychain file.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - -1 on error, 0 on success */
+httpSaveCredentials(
+    const char   *path,                        /* I - Keychain/PKCS#12 path */
+    cups_array_t *credentials,         /* I - Credentials */
+    const char   *common_name)         /* I - Common name for credentials */
+{
+  (void)path;
+  (void)credentials;
+  (void)common_name;
+
+  return (-1);
+}
+
+
 /*
  * 'http_cdsa_read()' - Read function for the CDSA library.
  */
@@ -408,8 +490,7 @@ http_tls_start(http_t *http)                /* I - Connection to server */
       *hostptr = '\0';
   }
 
-  if ((http->tls = SSLCreateContext(kCFAllocatorDefault, kSSLClientSide,
-                                    kSSLStreamType)) == NULL)
+  if ((http->tls = SSLCreateContext(kCFAllocatorDefault, http->mode == _HTTP_MODE_CLIENT ? kSSLClientSide : kSSLServerSide, kSSLStreamType)) == NULL)
   {
     DEBUG_puts("4http_tls_start: SSLCreateContext failed.");
     http->error  = errno = ENOMEM;
index 1a49f2f98e0e36ef5903c506f2c297504576b921..904d01fdf8189888782c5a92387a1c6d753bd40a 100644 (file)
@@ -26,7 +26,7 @@ process using the startup script for your operating system:</P>
 /etc/init.d/cups restart
        </PRE></LI>
 
-       <LI>Mac OS X:
+       <LI>OS X:
        <PRE CLASS="command">
 sudo launchctl unload /System/Library/LaunchDaemons/org.cups.cupsd.plist
 sudo launchctl load /System/Library/LaunchDaemons/org.cups.cupsd.plist
@@ -2020,24 +2020,6 @@ HREF="#SSLPort"><CODE>SSLPort</CODE></A> directive but allows you
 to restrict access to specific interfaces or networks.</P>
 
 
-<H2 CLASS="title"><A NAME="SSLOptions">SSLOptions</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SSLOptions None
-SSLOptions NoEmptyFragments
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SSLOptions</CODE> directive specifies additional SSL/TLS
-protocol options to use for encrypted connected. Currently only two
-options are supported - <code>None</code> (the default) for the most
-secure mode and <code>NoEmptyFragments</code> to allow CUPS to work with
-Microsoft Windows with the FIPS conformance mode enabled.</p>
-
-
 <H2 CLASS="title"><A NAME="SSLPort">SSLPort</A></H2>
 
 <H3>Examples</H3>
index 60c61f7da92bb8fe54d617562b915b9116ef1a23..aa6754ad6ed2530d44cf08138e5f2bbd30137502 100644 (file)
@@ -466,12 +466,6 @@ SSLListen
 .br
 Listens on the specified address and port for encrypted connections.
 .TP 5
-SSLOptions None
-.TP 5
-SSLOptions NoEmptyFragments
-.br
-Sets SSL/TLS protocol options for encrypted connections.
-.TP 5
 SSLPort
 .br
 Listens on the specified port for encrypted connections.
index f37bbe4cb028b3187475bc3476a366be55868cfd..e86eff60677920ec48d2ded7b028b5faaee5cd8e 100644 (file)
@@ -143,10 +143,11 @@ static const cupsd_var_t  cupsfiles_vars[] =
   { "RequestRoot",             &RequestRoot,           CUPSD_VARTYPE_STRING },
   { "ServerBin",               &ServerBin,             CUPSD_VARTYPE_PATHNAME },
 #ifdef HAVE_SSL
-  { "ServerCertificate",       &ServerCertificate,     CUPSD_VARTYPE_PATHNAME },
 #  ifdef HAVE_GNUTLS
+  { "ServerCertificate",       &ServerCertificate,     CUPSD_VARTYPE_PATHNAME },
   { "ServerKey",               &ServerKey,             CUPSD_VARTYPE_PATHNAME },
 #  endif /* HAVE_GNUTLS */
+  { "ServerKeychain",          &ServerKeychain,        CUPSD_VARTYPE_PATHNAME },
 #endif /* HAVE_SSL */
   { "ServerRoot",              &ServerRoot,            CUPSD_VARTYPE_PATHNAME },
   { "SMBConfigFile",           &SMBConfigFile,         CUPSD_VARTYPE_STRING },
@@ -590,12 +591,13 @@ cupsdReadConfiguration(void)
   ClassifyOverride  = 0;
 
 #ifdef HAVE_SSL
-#  ifdef HAVE_CDSASSL
-  cupsdSetString(&ServerCertificate, "/Library/Keychains/System.keychain");
-#  else
+#  ifdef HAVE_GNUTLS
+  cupsdClearString(&ServerKeychain);
   cupsdSetString(&ServerCertificate, "ssl/server.crt");
   cupsdSetString(&ServerKey, "ssl/server.key");
-#  endif /* HAVE_CDSASSL */
+#  else
+  cupsdSetString(&ServerKeychain, "/Library/Keychains/System.keychain");
+#  endif /* HAVE_GNUTLS */
 #endif /* HAVE_SSL */
 
   language = cupsLangDefault();
@@ -685,7 +687,6 @@ cupsdReadConfiguration(void)
   default_auth_type        = CUPSD_AUTH_BASIC;
 #ifdef HAVE_SSL
   DefaultEncryption        = HTTP_ENCRYPT_REQUIRED;
-  SSLOptions               = CUPSD_SSL_NONE;
 #endif /* HAVE_SSL */
   DirtyCleanInterval       = DEFAULT_KEEPALIVE;
   JobKillDelay             = DEFAULT_TIMEOUT;
@@ -1060,6 +1061,7 @@ cupsdReadConfiguration(void)
     cupsdSetStringf(&CacheDir, "%s/%s", ServerRoot, CacheDir);
 
 #ifdef HAVE_SSL
+#  ifdef HAVE_GNUTLS
   if (ServerCertificate[0] != '/')
     cupsdSetStringf(&ServerCertificate, "%s/%s", ServerRoot, ServerCertificate);
 
@@ -1069,7 +1071,6 @@ cupsdReadConfiguration(void)
       (FatalErrors & CUPSD_FATAL_PERMISSIONS))
     return (0);
 
-#  ifdef HAVE_GNUTLS
   if (ServerKey[0] != '/')
     cupsdSetStringf(&ServerKey, "%s/%s", ServerRoot, ServerKey);
 
@@ -1078,6 +1079,9 @@ cupsdReadConfiguration(void)
       (FatalErrors & CUPSD_FATAL_PERMISSIONS))
     return (0);
 #  endif /* HAVE_GNUTLS */
+
+  if (ServerKeychain[0] != '/')
+    cupsdSetStringf(&ServerKeychain, "%s/%s", ServerRoot, ServerKeychain);
 #endif /* HAVE_SSL */
 
  /*
@@ -3286,23 +3290,6 @@ read_cupsd_conf(cups_file_t *fp) /* I - File to read from */
                        "Missing value for SetEnv directive on line %d.",
                        linenum);
     }
-#ifdef HAVE_SSL
-    else if (!_cups_strcasecmp(line, "SSLOptions"))
-    {
-     /*
-      * SSLOptions options
-      */
-
-      if (!value || !_cups_strcasecmp(value, "none"))
-        SSLOptions = CUPSD_SSL_NONE;
-      else if (!_cups_strcasecmp(value, "noemptyfragments"))
-        SSLOptions = CUPSD_SSL_NOEMPTY;
-      else
-        cupsdLogMessage(CUPSD_LOG_ERROR,
-                       "Unknown value \"%s\" for SSLOptions directive on "
-                       "line %d.", value, linenum);
-    }
-#endif /* HAVE_SSL */
     else if (!_cups_strcasecmp(line, "AccessLog") ||
              !_cups_strcasecmp(line, "CacheDir") ||
              !_cups_strcasecmp(line, "ConfigFilePerm") ||
index e9e0fd80445b286e08f671fe57aa9f317a96766b..650acca145ea4d991bb5d5ecca2e22d02e097e23 100644 (file)
@@ -73,14 +73,6 @@ typedef enum
 #define PRINTCAP_PLIST         2       /* OS X plist format */
 
 
-/*
- * SSL options (bits)...
- */
-
-#define CUPSD_SSL_NONE         0       /* No special options */
-#define CUPSD_SSL_NOEMPTY      1       /* Do not insert empty fragments */
-
-
 /*
  * ServerAlias data...
  */
@@ -236,14 +228,14 @@ VAR const char            **MimeTypes             VALUE(NULL);
                                        /* Array of MIME types */
 
 #ifdef HAVE_SSL
-VAR char               *ServerCertificate      VALUE(NULL);
-                                       /* Server certificate file */
 #  ifdef HAVE_GNUTLS
-VAR char               *ServerKey              VALUE(NULL);
+VAR char               *ServerCertificate      VALUE(NULL),
+                                       /* Server certificate file */
+                       *ServerKey              VALUE(NULL);
                                        /* Server key file */
 #  endif /* HAVE_GNUTLS */
-VAR int                        SSLOptions              VALUE(CUPSD_SSL_NONE);
-                                       /* SSL/TLS options */
+VAR char               *ServerKeychain         VALUE(NULL);
+                                       /* Keychain holding cert + key */
 #endif /* HAVE_SSL */
 
 #ifdef HAVE_LAUNCHD
diff --git a/scheduler/tls-openssl.c b/scheduler/tls-openssl.c
deleted file mode 100644 (file)
index 94c9e71..0000000
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
- * "$Id$"
- *
- *   TLS support code for the CUPS scheduler using OpenSSL.
- *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- *   cupsdEndTLS()     - Shutdown a secure session with the client.
- *   cupsdStartTLS()   - Start a secure session with the client.
- *   make_certificate() - Make a self-signed SSL/TLS certificate.
- */
-
-
-/*
- * Local functions...
- */
-
-static int             make_certificate(cupsd_client_t *con);
-
-
-/*
- * 'cupsdEndTLS()' - Shutdown a secure session with the client.
- */
-
-int                                    /* O - 1 on success, 0 on error */
-cupsdEndTLS(cupsd_client_t *con)       /* I - Client connection */
-{
-  SSL_CTX      *context;               /* Context for encryption */
-  unsigned long        error;                  /* Error code */
-  int          status;                 /* Return status */
-
-
-  context = SSL_get_SSL_CTX(con->http.tls);
-
-  switch (SSL_shutdown(con->http.tls))
-  {
-    case 1 :
-       cupsdLogMessage(CUPSD_LOG_DEBUG,
-                       "SSL shutdown successful!");
-       status = 1;
-       break;
-
-    case -1 :
-       cupsdLogMessage(CUPSD_LOG_ERROR,
-                       "Fatal error during SSL shutdown!");
-
-    default :
-       while ((error = ERR_get_error()) != 0)
-         cupsdLogMessage(CUPSD_LOG_ERROR, "SSL shutdown failed: %s",
-                         ERR_error_string(error, NULL));
-       status = 0;
-       break;
-  }
-
-  SSL_CTX_free(context);
-  SSL_free(con->http.tls);
-  con->http.tls = NULL;
-
-  return (status);
-}
-
-
-/*
- * 'cupsdStartTLS()' - Start a secure session with the client.
- */
-
-int                                    /* O - 1 on success, 0 on error */
-cupsdStartTLS(cupsd_client_t *con)     /* I - Client connection */
-{
-  SSL_CTX      *context;               /* Context for encryption */
-  BIO          *bio;                   /* BIO data */
-  unsigned long        error;                  /* Error code */
-
-
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] Encrypting connection.",
-                  con->http.fd);
-
- /*
-  * Verify that we have a certificate...
-  */
-
-  if (access(ServerKey, 0) || access(ServerCertificate, 0))
-  {
-   /*
-    * Nope, make a self-signed certificate...
-    */
-
-    if (!make_certificate(con))
-      return (0);
-  }
-
- /*
-  * Create the SSL context and accept the connection...
-  */
-
-  context = SSL_CTX_new(SSLv23_server_method());
-
-  SSL_CTX_set_options(context, SSL_OP_NO_SSLv2); /* Only use SSLv3 or TLS */
-  if (SSLOptions & CUPSD_SSL_NOEMPTY)
-    SSL_CTX_set_options(context, SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS);
-  SSL_CTX_use_PrivateKey_file(context, ServerKey, SSL_FILETYPE_PEM);
-  SSL_CTX_use_certificate_chain_file(context, ServerCertificate);
-
-  bio = BIO_new(_httpBIOMethods());
-  BIO_ctrl(bio, BIO_C_SET_FILE_PTR, 0, (char *)HTTP(con));
-
-  con->http.tls = SSL_new(context);
-  SSL_set_bio(con->http.tls, bio, bio);
-
-  if (SSL_accept(con->http.tls) != 1)
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to encrypt connection from %s.",
-                    con->http.hostname);
-
-    while ((error = ERR_get_error()) != 0)
-      cupsdLogMessage(CUPSD_LOG_ERROR, "%s", ERR_error_string(error, NULL));
-
-    SSL_CTX_free(context);
-    SSL_free(con->http.tls);
-    con->http.tls = NULL;
-    return (0);
-  }
-
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "Connection from %s now encrypted.",
-                  con->http.hostname);
-
-  return (1);
-}
-
-
-/*
- * 'make_certificate()' - Make a self-signed SSL/TLS certificate.
- */
-
-static int                             /* O - 1 on success, 0 on failure */
-make_certificate(cupsd_client_t *con)  /* I - Client connection */
-{
-#ifdef HAVE_WAITPID
-  int          pid,                    /* Process ID of command */
-               status;                 /* Status of command */
-  char         command[1024],          /* Command */
-               *argv[12],              /* Command-line arguments */
-               *envp[MAX_ENV + 1],     /* Environment variables */
-               infofile[1024],         /* Type-in information for cert */
-               seedfile[1024];         /* Random number seed file */
-  int          envc,                   /* Number of environment variables */
-               bytes;                  /* Bytes written */
-  cups_file_t  *fp;                    /* Seed/info file */
-  int          infofd;                 /* Info file descriptor */
-
-
- /*
-  * Run the "openssl" command to seed the random number generator and
-  * generate a self-signed certificate that is good for 10 years:
-  *
-  *     openssl rand -rand seedfile 1
-  *
-  *     openssl req -new -x509 -keyout ServerKey \
-  *             -out ServerCertificate -days 3650 -nodes
-  *
-  * The seeding step is crucial in ensuring that the openssl command
-  * does not block on systems without sufficient entropy...
-  */
-
-  if (!cupsFileFind("openssl", getenv("PATH"), 1, command, sizeof(command)))
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                    "No SSL certificate and openssl command not found!");
-    return (0);
-  }
-
-  if (access("/dev/urandom", 0))
-  {
-   /*
-    * If the system doesn't provide /dev/urandom, then any random source
-    * will probably be blocking-style, so generate some random data to
-    * use as a seed for the certificate.  Note that we have already
-    * seeded the random number generator in cupsdInitCerts()...
-    */
-
-    cupsdLogMessage(CUPSD_LOG_INFO,
-                    "Seeding the random number generator...");
-
-   /*
-    * Write the seed file...
-    */
-
-    if ((fp = cupsTempFile2(seedfile, sizeof(seedfile))) == NULL)
-    {
-      cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to create seed file %s - %s",
-                      seedfile, strerror(errno));
-      return (0);
-    }
-
-    for (bytes = 0; bytes < 262144; bytes ++)
-      cupsFilePutChar(fp, CUPS_RAND());
-
-    cupsFileClose(fp);
-
-   /*
-    * Run the openssl command to seed its random number generator...
-    */
-
-    argv[0] = "openssl";
-    argv[1] = "rand";
-    argv[2] = "-rand";
-    argv[3] = seedfile;
-    argv[4] = "1";
-    argv[5] = NULL;
-
-    envc = cupsdLoadEnv(envp, MAX_ENV);
-    envp[envc] = NULL;
-
-    if (!cupsdStartProcess(command, argv, envp, -1, -1, -1, -1, -1, 1, NULL,
-                           NULL, &pid))
-    {
-      unlink(seedfile);
-      return (0);
-    }
-
-    while (waitpid(pid, &status, 0) < 0)
-      if (errno != EINTR)
-      {
-       status = 1;
-       break;
-      }
-
-    cupsdFinishProcess(pid, command, sizeof(command), NULL);
-
-   /*
-    * Remove the seed file, as it is no longer needed...
-    */
-
-    unlink(seedfile);
-
-    if (status)
-    {
-      if (WIFEXITED(status))
-       cupsdLogMessage(CUPSD_LOG_ERROR,
-                       "Unable to seed random number generator - "
-                       "the openssl command stopped with status %d!",
-                       WEXITSTATUS(status));
-      else
-       cupsdLogMessage(CUPSD_LOG_ERROR,
-                       "Unable to seed random number generator - "
-                       "the openssl command crashed on signal %d!",
-                       WTERMSIG(status));
-
-      return (0);
-    }
-  }
-
- /*
-  * Create a file with the certificate information fields...
-  *
-  * Note: This assumes that the default questions are asked by the openssl
-  * command...
-  */
-
-  if ((fp = cupsTempFile2(infofile, sizeof(infofile))) == NULL)
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                    "Unable to create certificate information file %s - %s",
-                    infofile, strerror(errno));
-    return (0);
-  }
-
-  cupsFilePrintf(fp, ".\n.\n.\n%s\n.\n%s\n%s\n",
-                 ServerName, ServerName, ServerAdmin);
-  cupsFileClose(fp);
-
-  cupsdLogMessage(CUPSD_LOG_INFO,
-                  "Generating SSL server key and certificate...");
-
-  argv[0]  = "openssl";
-  argv[1]  = "req";
-  argv[2]  = "-new";
-  argv[3]  = "-x509";
-  argv[4]  = "-keyout";
-  argv[5]  = ServerKey;
-  argv[6]  = "-out";
-  argv[7]  = ServerCertificate;
-  argv[8]  = "-days";
-  argv[9]  = "3650";
-  argv[10] = "-nodes";
-  argv[11] = NULL;
-
-  cupsdLoadEnv(envp, MAX_ENV);
-
-  infofd = open(infofile, O_RDONLY);
-
-  if (!cupsdStartProcess(command, argv, envp, infofd, -1, -1, -1, -1, 1, NULL,
-                         NULL, &pid))
-  {
-    close(infofd);
-    unlink(infofile);
-    return (0);
-  }
-
-  close(infofd);
-  unlink(infofile);
-
-  while (waitpid(pid, &status, 0) < 0)
-    if (errno != EINTR)
-    {
-      status = 1;
-      break;
-    }
-
-  cupsdFinishProcess(pid, command, sizeof(command), NULL);
-
-  if (status)
-  {
-    if (WIFEXITED(status))
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                      "Unable to create SSL server key and certificate - "
-                     "the openssl command stopped with status %d!",
-                     WEXITSTATUS(status));
-    else
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                      "Unable to create SSL server key and certificate - "
-                     "the openssl command crashed on signal %d!",
-                     WTERMSIG(status));
-  }
-  else
-  {
-    cupsdLogMessage(CUPSD_LOG_INFO, "Created SSL server key file \"%s\"...",
-                   ServerKey);
-    cupsdLogMessage(CUPSD_LOG_INFO,
-                    "Created SSL server certificate file \"%s\"...",
-                   ServerCertificate);
-  }
-
-  return (!status);
-
-#else
-  return (0);
-#endif /* HAVE_WAITPID */
-}
-
-
-/*
- * End of "$Id$".
- */
index 6779b875c000faf008daa2297ad6f4f29fada9f2..af8d594675e69bc2cf524164f5cb9a1fe50c5498 100755 (executable)
@@ -412,7 +412,7 @@ EOF
                        ;;
        esac
 }
+
 ln -s $root/test/test.convs /tmp/cups-$user/share/mime
 
 if test `uname` = Darwin; then
@@ -473,6 +473,10 @@ $encryption
 </Policy>
 EOF
 
+if test $testtype = 0; then
+       echo WebInterface yes >>/tmp/cups-$user/cupsd.conf
+fi
+
 cat >/tmp/cups-$user/cups-files.conf <<EOF
 FileDevice yes
 Printcap
@@ -492,7 +496,7 @@ PageLog /tmp/cups-$user/log/page_log
 EOF
 
 if test $ssltype != 0 -a `uname` = Darwin; then
-       echo "ServerCertificate $HOME/Library/Keychains/login.keychain" >> /tmp/cups-$user/cups-files.conf
+       echo "ServerKeychain $HOME/Library/Keychains/login.keychain" >> /tmp/cups-$user/cups-files.conf
 fi
 
 #
index 1a4afdda743c4ea7d0ab6627be2e01c45c06e968..206b9966de2a8ade75cbf0443230815dfc6f8371 100644 (file)
                72220EE0133305BB00FCA411 /* http-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "http-private.h"; path = "../cups/http-private.h"; sourceTree = "<group>"; };
                72220EE1133305BB00FCA411 /* http-support.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "http-support.c"; path = "../cups/http-support.c"; sourceTree = "<group>"; };
                72220EE2133305BB00FCA411 /* http.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = http.c; path = ../cups/http.c; sourceTree = "<group>"; };
-               72220EE3133305BB00FCA411 /* http.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = http.h; path = ../cups/http.h; sourceTree = "<group>"; };
+               72220EE3133305BB00FCA411 /* http.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = http.h; path = ../cups/http.h; sourceTree = "<group>"; wrapsLines = 1; };
                72220EE4133305BB00FCA411 /* ipp-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ipp-private.h"; path = "../cups/ipp-private.h"; sourceTree = "<group>"; };
                72220EE5133305BB00FCA411 /* ipp-support.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ipp-support.c"; path = "../cups/ipp-support.c"; sourceTree = "<group>"; };
                72220EE6133305BB00FCA411 /* ipp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ipp.c; path = ../cups/ipp.c; sourceTree = "<group>"; };
                7271883C1374AB14001A2036 /* mime-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "mime-private.h"; path = "../scheduler/mime-private.h"; sourceTree = "<group>"; };
                728FB7E0153600FA005426E1 /* tls-darwin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "tls-darwin.c"; path = "../scheduler/tls-darwin.c"; sourceTree = "<group>"; };
                728FB7E1153600FA005426E1 /* tls-gnutls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "tls-gnutls.c"; path = "../scheduler/tls-gnutls.c"; sourceTree = "<group>"; };
-               728FB7E2153600FA005426E1 /* tls-openssl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "tls-openssl.c"; path = "../scheduler/tls-openssl.c"; sourceTree = "<group>"; };
                728FB7EC1536161C005426E1 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = "<absolute>"; };
                728FB7EF1536167A005426E1 /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = /usr/lib/libiconv.dylib; sourceTree = "<absolute>"; };
                728FB7F01536167A005426E1 /* libresolv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libresolv.dylib; path = /usr/lib/libresolv.dylib; sourceTree = "<absolute>"; };
                        );
                        name = tests;
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                274FF5D513332C2C00317ECB /* daemon */ = {
                        isa = PBXGroup;
                        );
                        name = daemon;
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                274FF5F41333310400317ECB /* libcupsppdc */ = {
                        isa = PBXGroup;
                        );
                        name = libcupsppdc;
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                274FF67313333B0A00317ECB /* commands */ = {
                        isa = PBXGroup;
                        );
                        name = commands;
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                276683CB1337B1CC000D33D0 /* ppdc tools */ = {
                        isa = PBXGroup;
                        );
                        name = "ppdc tools";
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                72220EAF1333047D00FCA411 /* Products */ = {
                        isa = PBXGroup;
                        );
                        name = libcups;
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                72220F45133305D000FCA411 /* Public Headers */ = {
                        isa = PBXGroup;
                        );
                        name = "Public Headers";
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                72220F461333060C00FCA411 /* Private Headers */ = {
                        isa = PBXGroup;
                        );
                        name = "Private Headers";
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                72220F5D13330A5A00FCA411 /* cupsd */ = {
                        isa = PBXGroup;
                                72220F8F13330B0C00FCA411 /* sysman.h */,
                                728FB7E0153600FA005426E1 /* tls-darwin.c */,
                                728FB7E1153600FA005426E1 /* tls-gnutls.c */,
-                               728FB7E2153600FA005426E1 /* tls-openssl.c */,
                        );
                        name = cupsd;
                        path = .;
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                72220FB013330B3400FCA411 /* libcupsmime */ = {
                        isa = PBXGroup;
                        );
                        name = libcupsmime;
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                72220FB113330B4A00FCA411 /* Frameworks */ = {
                        isa = PBXGroup;
                        );
                        name = backends;
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                7258EADC134594A8009286F1 /* filters */ = {
                        isa = PBXGroup;
                        );
                        name = filters;
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                72BF96351333042100B1EAD7 = {
                        isa = PBXGroup;
                        );
                        name = libcupsimage;
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
 /* End PBXGroup section */