this adds the current signify pub key for base to the httpd Server
version header.

as you say, the keys are small. this could help distribute it widely.

here's an example of what it looks like:

dlg@mild ~$ curl -I http://es45/ 
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 2259
Content-Type: text/html
Date: Thu, 18 Jun 2015 13:45:29 GMT
Last-Modified: Thu, 06 Feb 2014 04:12:39 GMT
Server: OpenBSD httpd 5.7 
RWSvUZXnw9gUb70PdeSNnpSmodCyIPJEGN1wWr+6Time1eP7KiWJ5eAM

just an idea...

Index: Makefile
===================================================================
RCS file: /cvs/src/usr.sbin/httpd/Makefile,v
retrieving revision 1.27
diff -u -p -r1.27 Makefile
--- Makefile    23 Feb 2015 10:39:10 -0000      1.27
+++ Makefile    18 Jun 2015 13:41:45 -0000
@@ -1,9 +1,13 @@
 #      $OpenBSD: Makefile,v 1.27 2015/02/23 10:39:10 reyk Exp $
 
+httpd_version.c: ../../etc/signify/openbsd-${OSrev}-base.pub
+       sh ${.CURDIR}/httpd_version.sh ${OSREV} $> $@
+
 PROG=          httpd
 SRCS=          parse.y
 SRCS+=         config.c control.c httpd.c log.c logger.c proc.c
 SRCS+=         server.c server_http.c server_file.c server_fcgi.c
+SRCS+=         httpd_version.c
 MAN=           httpd.8 httpd.conf.5
 
 LDADD=         -levent -ltls -lssl -lcrypto -lutil
@@ -14,6 +18,6 @@ CFLAGS+=      -Wstrict-prototypes -Wmissing-p
 CFLAGS+=       -Wmissing-declarations
 CFLAGS+=       -Wshadow -Wpointer-arith
 CFLAGS+=       -Wsign-compare
-CLEANFILES+=   y.tab.h
+CLEANFILES+=   y.tab.h httpd_version.c
 
 .include <bsd.prog.mk>
Index: httpd.c
===================================================================
RCS file: /cvs/src/usr.sbin/httpd/httpd.c,v
retrieving revision 1.35
diff -u -p -r1.35 httpd.c
--- httpd.c     23 Feb 2015 18:43:18 -0000      1.35
+++ httpd.c     18 Jun 2015 13:41:45 -0000
@@ -959,7 +959,7 @@ accept_reserve(int sockfd, struct sockad
 }
 
 struct kv *
-kv_add(struct kvtree *keys, char *key, char *value)
+kv_add(struct kvtree *keys, const char *key, const char *value)
 {
        struct kv       *kv, *oldkv;
 
Index: httpd.h
===================================================================
RCS file: /cvs/src/usr.sbin/httpd/httpd.h,v
retrieving revision 1.82
diff -u -p -r1.82 httpd.h
--- httpd.h     15 Mar 2015 22:08:45 -0000      1.82
+++ httpd.h     18 Jun 2015 13:41:45 -0000
@@ -35,10 +35,12 @@
 #include <imsg.h>
 #include <tls.h>
 
+extern const char httpd_version[];
+#define HTTPD_SERVERNAME       httpd_version
+
 #define CONF_FILE              "/etc/httpd.conf"
 #define HTTPD_SOCKET           "/var/run/httpd.sock"
 #define HTTPD_USER             "www"
-#define HTTPD_SERVERNAME       "OpenBSD httpd"
 #define HTTPD_DOCROOT          "/htdocs"
 #define HTTPD_INDEX            "index.html"
 #define HTTPD_FCGI_SOCKET      "/run/slowcgi.sock"
@@ -602,7 +604,7 @@ struct in6_addr *prefixlen2mask6(u_int8_
 u_int32_t       prefixlen2mask(u_int8_t);
 int             accept_reserve(int, struct sockaddr *, socklen_t *, int,
                    volatile int *);
-struct kv      *kv_add(struct kvtree *, char *, char *);
+struct kv      *kv_add(struct kvtree *, const char *, const char *);
 int             kv_set(struct kv *, char *, ...);
 int             kv_setkey(struct kv *, char *, ...);
 void            kv_delete(struct kvtree *, struct kv *);
Index: httpd_version.sh
===================================================================
RCS file: httpd_version.sh
diff -N httpd_version.sh
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ httpd_version.sh    18 Jun 2015 13:41:45 -0000
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+VERSION=`tail -n1 "$2"`
+echo const char httpd_version[] = \"OpenBSD httpd $1 $VERSION\"\; > "$3"

Reply via email to