Re: 5.5beta wierds

2014-01-22 Thread Otto Moerbeek
On Tue, Jan 21, 2014 at 11:58:44AM -0700, Todd C. Miller wrote:

 On Tue, 21 Jan 2014 10:44:00 +0100, Otto Moerbeek wrote:
 
  And here's the man page diff, our ctime and asctime actually do not
  ever return NULL, while posix allows that.
 
 Isn't it worth documenting that ctime and asctime are allowed to
 return NULL, even though they do not on OpenBSD?
 
  - todd

yeah, I first had that and then deleted it. 

ok?

-Otto

Index: ctime.3
===
RCS file: /cvs/src/lib/libc/time/ctime.3,v
retrieving revision 1.42
diff -u -p -r1.42 ctime.3
--- ctime.3 21 Jan 2014 11:51:02 -  1.42
+++ ctime.3 22 Jan 2014 09:26:33 -
@@ -259,6 +259,10 @@ from UTC, with positive values indicatin
 of the Prime Meridian.
 .Sh RETURN VALUES
 The functions
+.Fn ctime ,
+.Fn ctime_r ,
+.Fn asctime ,
+.Fn asctime_r ,
 .Fn localtime ,
 .Fn localtime_r ,
 .Fn gmtime



Re: signed packages

2014-01-22 Thread Loganaden Velvindron
On Fri, Jan 17, 2014 at 3:26 PM, Marc Espie es...@nerim.net wrote:
 It's probably time to talk about it.

 Yes, we are now distributing signed packages.  A lot of people have probably
 noticed because there was a key mismatch on at least one batch of signed
 packages.

 Obviously, we haven't finished testing yet.

 Don't read too much into that.  Signed packages just mean you can use
 an insecure medium, such as ftp, to download packages: if the key matches,
 it means the package hasn't been tampered with since it was signed.

 The cryptographic framework used to sign packages is called signify(1),
 mostly written by Ted Unangst, with a lot of feedback from (mostly) Theo
 and I.

 The signing framework in pkg_add/pkg_create is much older than that, if
 was written for x509 a few years ago, but signify(1) will probably be more
 robust and ways simpler.  In particular, there's no chain-of-trust, so
 you keep complete control on the sources YOU trust.

Can you please elborate more on the trusting part ?

Both DNSSEC and RPKI have a root anchor that we're all supposed to trust,
and your model is different.


 Signatures should be transparent in use: the package is opened, the
 packing-list signature is checked, and then files are checksummed while
 extracted against the packing-list embedded checksums (there are provisions
 to ensure any dangerous meta-data is also encoded in the packing-list as
 @mode/@user/@group annotations.

 So, barring problems, you shouldn't even notice signatures.




-- 
This message is strictly personal and the opinions expressed do not
represent those of my employers, either past or present.



kill RN_DEBUG code

2014-01-22 Thread Claudio Jeker
The RN_DEBUG code is broken since rev 1.1
I see no reason to keep it any longer and removing the code makes the
result easier to read.

OK?
-- 
:wq Claudio

Index: net/radix.c
===
RCS file: /cvs/src/sys/net/radix.c,v
retrieving revision 1.38
diff -u -p -r1.38 radix.c
--- net/radix.c 21 Jan 2014 23:42:44 -  1.38
+++ net/radix.c 22 Jan 2014 09:58:42 -
@@ -303,13 +303,6 @@ on1:
return NULL;
 }
 
-#ifdef RN_DEBUG
-intrn_nodenum;
-struct radix_node *rn_clist;
-intrn_saveinfo;
-intrn_debug =  1;
-#endif
-
 struct radix_node *
 rn_newpair(void *v, int b, struct radix_node nodes[2])
 {
@@ -322,13 +315,6 @@ rn_newpair(void *v, int b, struct radix_
tt-rn_key = v;
tt-rn_p = t;
tt-rn_flags = t-rn_flags = RNF_ACTIVE;
-#ifdef RN_DEBUG
-   tt-rn_info = rn_nodenum++;
-   t-rn_info = rn_nodenum++;
-   tt-rn_twin = t;
-   tt-rn_ybro = rn_clist;
-   rn_clist = tt;
-#endif
return t;
 }
 
@@ -376,10 +362,6 @@ on1:
else
x = x-rn_l;
} while (b  (unsigned int) x-rn_b); /* x-rn_b  b  x-rn_b = 0 */
-#ifdef RN_DEBUG
-   if (rn_debug)
-   log(LOG_DEBUG, rn_insert: Going In:\n), traverse(p);
-#endif
t = rn_newpair(v_arg, b, nodes);
tt = t-rn_l;
if ((cp[p-rn_off]  p-rn_bmask) == 0)
@@ -394,10 +376,6 @@ on1:
t-rn_r = tt;
t-rn_l = x;
}
-#ifdef RN_DEBUG
-   if (rn_debug)
-   log(LOG_DEBUG, rn_insert: Coming Out:\n), traverse(p);
-#endif
 }
return (tt);
 }
@@ -640,14 +618,6 @@ rn_addroute(void *v_arg, void *n_arg, st
if (tt-rn_dupedkey)
tt-rn_dupedkey-rn_p = tt;
}
-#ifdef RN_DEBUG
-   t=tt+1;
-   tt-rn_info = rn_nodenum++;
-   t-rn_info = rn_nodenum++;
-   tt-rn_twin = t;
-   tt-rn_ybro = rn_clist;
-   rn_clist = tt;
-#endif
tt-rn_key = (caddr_t) v;
tt-rn_b = -1;
tt-rn_flags = RNF_ACTIVE;
@@ -851,12 +821,6 @@ on1:
 */
if (tt-rn_flags  RNF_ROOT)
return (0);
-#ifdef RN_DEBUG
-   /* Get us out of the creation list */
-   for (t = rn_clist; t  t-rn_ybro != tt; t = t-rn_ybro)
-   ;
-   if (t) t-rn_ybro = tt-rn_ybro;
-#endif
t = tt-rn_p;
dupedkey = saved_tt-rn_dupedkey;
if (dupedkey) {
@@ -879,15 +843,8 @@ on1:
}
t = tt + 1;
if  (t-rn_flags  RNF_ACTIVE) {
-#ifndef RN_DEBUG
-   *++x = *t;
-   p = t-rn_p;
-#else
-   b = t-rn_info;
*++x = *t;
-   t-rn_info = b;
p = t-rn_p;
-#endif
if (p-rn_l == t)
p-rn_l = x;
else
@@ -944,13 +901,7 @@ on1:
 */
x = tt + 1;
if (t != x) {
-#ifndef RN_DEBUG
-   *t = *x;
-#else
-   b = t-rn_info;
*t = *x;
-   t-rn_info = b;
-#endif
t-rn_l-rn_p = t;
t-rn_r-rn_p = t;
p = x-rn_p;
Index: net/radix.h
===
RCS file: /cvs/src/sys/net/radix.h,v
retrieving revision 1.23
diff -u -p -r1.23 radix.h
--- net/radix.h 19 Jan 2014 09:52:25 -  1.23
+++ net/radix.h 22 Jan 2014 09:59:32 -
@@ -60,11 +60,6 @@ struct radix_node {
struct  radix_node *rn_R;/* progeny */
} rn_node;
} rn_u;
-#ifdef RN_DEBUG
-   int rn_info;
-   struct radix_node *rn_twin;
-   struct radix_node *rn_ybro;
-#endif
 };
 
 #define rn_dupedkey rn_u.rn_leaf.rn_Dupedkey
Index: net/radix_mpath.c
===
RCS file: /cvs/src/sys/net/radix_mpath.c,v
retrieving revision 1.21
diff -u -p -r1.21 radix_mpath.c
--- net/radix_mpath.c   20 Oct 2013 16:17:36 -  1.21
+++ net/radix_mpath.c   22 Jan 2014 09:58:54 -
@@ -60,9 +60,6 @@ u_int32_t rn_mpath_hash(struct route *, 
  * give some jitter to hash, to avoid synchronization between routers
  */
 static u_int32_t hashjitter;
-#ifdef RN_DEBUG
-extern struct radix_node   *rn_clist;
-#endif
 
 int
 rn_mpath_capable(struct radix_node_head *rnh)
@@ -208,16 +205,6 @@ rn_mpath_reprio(struct radix_node *rn, i
if (rn-rn_dupedkey)
rn-rn_dupedkey-rn_p = rn;
}
-
-#ifdef RN_DEBUG
-   /* readd at head of creation list */
-   for (t = rn_clist; t  t-rn_ybro != rn; t = t-rn_ybro)
-   ;
-   if (t)
-   t-rn_ybro = rn-rn_ybro;
-   rn-rn_ybro = rn_clist;
-   rn_clist = rn;
-#endif
 
if (rn-rn_mklist  rn-rn_flags 

RTF_HOST and netmask

2014-01-22 Thread Martin Pieuchot
Diff below kills the unused RTAX_NETMASK arguments and the global
variable associated of two requests where a route to host is added
or deleted.

ok?

Index: netinet6/in6.c
===
RCS file: /home/ncvs/src/sys/netinet6/in6.c,v
retrieving revision 1.130
diff -u -p -c -4 -r1.130 in6.c
*** netinet6/in6.c  21 Jan 2014 10:18:26 -  1.130
--- netinet6/in6.c  22 Jan 2014 10:21:00 -
*** const struct sockaddr_in6 sa6_any = {
*** 135,151 
  void
  in6_ifloop_request(int cmd, struct ifaddr *ifa)
  {
struct rt_addrinfo info;
-   struct sockaddr_in6 all1_sa;
struct rtentry *nrt = NULL;
int e;
  
-   bzero(all1_sa, sizeof(all1_sa));
-   all1_sa.sin6_family = AF_INET6;
-   all1_sa.sin6_len = sizeof(struct sockaddr_in6);
-   all1_sa.sin6_addr = in6mask128;
- 
/*
 * We specify the address itself as the gateway, and set the
 * RTF_LLINFO flag, so that the corresponding host route would have
 * the flag, and thus applications that assume traditional behavior
--- 135,145 
*** in6_ifloop_request(int cmd, struct ifadd
*** 158,166 
info.rti_flags = RTF_UP | RTF_HOST | RTF_LLINFO;
info.rti_info[RTAX_DST] = ifa-ifa_addr;
if (cmd != RTM_DELETE)
info.rti_info[RTAX_GATEWAY] = ifa-ifa_addr;
-   info.rti_info[RTAX_NETMASK] = sin6tosa(all1_sa);
e = rtrequest1(cmd, info, RTP_CONNECTED, nrt,
ifa-ifa_ifp-if_rdomain);
if (e != 0) {
char addr[INET6_ADDRSTRLEN];
--- 152,159 
Index: netinet6/nd6.c
===
RCS file: /home/ncvs/src/sys/netinet6/nd6.c,v
retrieving revision 1.109
diff -u -p -c -4 -r1.109 nd6.c
*** netinet6/nd6.c  13 Jan 2014 23:03:52 -  1.109
--- netinet6/nd6.c  22 Jan 2014 10:21:00 -
*** struct llinfo_nd6 llinfo_nd6 = {llinfo_
*** 91,99 
  struct nd_drhead nd_defrouter;
  struct nd_prhead nd_prefix = { 0 };
  
  int nd6_recalc_reachtm_interval = ND6_RECALC_REACHTM_INTERVAL;
- static struct sockaddr_in6 all1_sa;
  
  void nd6_setmtu0(struct ifnet *, struct nd_ifinfo *);
  void nd6_slowtimo(void *);
  struct llinfo_nd6 *nd6_free(struct rtentry *, int);
--- 91,98 
*** int fill_prlist(void *, size_t *, size_t
*** 119,138 
  void
  nd6_init(void)
  {
static int nd6_init_done = 0;
-   int i;
  
if (nd6_init_done) {
log(LOG_NOTICE, nd6_init called more than once(ignored)\n);
return;
}
  
-   all1_sa.sin6_family = AF_INET6;
-   all1_sa.sin6_len = sizeof(struct sockaddr_in6);
-   for (i = 0; i  sizeof(all1_sa.sin6_addr); i++)
-   all1_sa.sin6_addr.s6_addr[i] = 0xff;
- 
/* initialization of the default router list */
TAILQ_INIT(nd_defrouter);
  
nd6_init_done = 1;
--- 118,131 
*** nd6_lookup(struct in6_addr *addr6, int c
*** 688,696 
info.rti_flags = (ifa-ifa_flags | RTF_HOST |
RTF_LLINFO)  ~RTF_CLONING;
info.rti_info[RTAX_DST] = sin6tosa(sin6);
info.rti_info[RTAX_GATEWAY] = ifa-ifa_addr;
-   info.rti_info[RTAX_NETMASK] = sin6tosa(all1_sa);
if ((e = rtrequest1(RTM_ADD, info, RTP_CONNECTED,
rt, rtableid)) != 0) {
  #if 0
char ip[INET6_ADDRSTRLEN];
--- 681,688 



Re: RTF_HOST and netmask

2014-01-22 Thread Claudio Jeker
On Wed, Jan 22, 2014 at 11:29:59AM +0100, Martin Pieuchot wrote:
 Diff below kills the unused RTAX_NETMASK arguments and the global
 variable associated of two requests where a route to host is added
 or deleted.
 
 ok?

OK, setting RTF_HOST and passing a netmask is crazy talk so kill it.
 
 Index: netinet6/in6.c
 ===
 RCS file: /home/ncvs/src/sys/netinet6/in6.c,v
 retrieving revision 1.130
 diff -u -p -c -4 -r1.130 in6.c
 *** netinet6/in6.c21 Jan 2014 10:18:26 -  1.130
 --- netinet6/in6.c22 Jan 2014 10:21:00 -
 *** const struct sockaddr_in6 sa6_any = {
 *** 135,151 
   void
   in6_ifloop_request(int cmd, struct ifaddr *ifa)
   {
   struct rt_addrinfo info;
 - struct sockaddr_in6 all1_sa;
   struct rtentry *nrt = NULL;
   int e;
   
 - bzero(all1_sa, sizeof(all1_sa));
 - all1_sa.sin6_family = AF_INET6;
 - all1_sa.sin6_len = sizeof(struct sockaddr_in6);
 - all1_sa.sin6_addr = in6mask128;
 - 
   /*
* We specify the address itself as the gateway, and set the
* RTF_LLINFO flag, so that the corresponding host route would have
* the flag, and thus applications that assume traditional behavior
 --- 135,145 
 *** in6_ifloop_request(int cmd, struct ifadd
 *** 158,166 
   info.rti_flags = RTF_UP | RTF_HOST | RTF_LLINFO;
   info.rti_info[RTAX_DST] = ifa-ifa_addr;
   if (cmd != RTM_DELETE)
   info.rti_info[RTAX_GATEWAY] = ifa-ifa_addr;
 - info.rti_info[RTAX_NETMASK] = sin6tosa(all1_sa);
   e = rtrequest1(cmd, info, RTP_CONNECTED, nrt,
   ifa-ifa_ifp-if_rdomain);
   if (e != 0) {
   char addr[INET6_ADDRSTRLEN];
 --- 152,159 
 Index: netinet6/nd6.c
 ===
 RCS file: /home/ncvs/src/sys/netinet6/nd6.c,v
 retrieving revision 1.109
 diff -u -p -c -4 -r1.109 nd6.c
 *** netinet6/nd6.c13 Jan 2014 23:03:52 -  1.109
 --- netinet6/nd6.c22 Jan 2014 10:21:00 -
 *** struct llinfo_nd6 llinfo_nd6 = {llinfo_
 *** 91,99 
   struct nd_drhead nd_defrouter;
   struct nd_prhead nd_prefix = { 0 };
   
   int nd6_recalc_reachtm_interval = ND6_RECALC_REACHTM_INTERVAL;
 - static struct sockaddr_in6 all1_sa;
   
   void nd6_setmtu0(struct ifnet *, struct nd_ifinfo *);
   void nd6_slowtimo(void *);
   struct llinfo_nd6 *nd6_free(struct rtentry *, int);
 --- 91,98 
 *** int fill_prlist(void *, size_t *, size_t
 *** 119,138 
   void
   nd6_init(void)
   {
   static int nd6_init_done = 0;
 - int i;
   
   if (nd6_init_done) {
   log(LOG_NOTICE, nd6_init called more than once(ignored)\n);
   return;
   }
   
 - all1_sa.sin6_family = AF_INET6;
 - all1_sa.sin6_len = sizeof(struct sockaddr_in6);
 - for (i = 0; i  sizeof(all1_sa.sin6_addr); i++)
 - all1_sa.sin6_addr.s6_addr[i] = 0xff;
 - 
   /* initialization of the default router list */
   TAILQ_INIT(nd_defrouter);
   
   nd6_init_done = 1;
 --- 118,131 
 *** nd6_lookup(struct in6_addr *addr6, int c
 *** 688,696 
   info.rti_flags = (ifa-ifa_flags | RTF_HOST |
   RTF_LLINFO)  ~RTF_CLONING;
   info.rti_info[RTAX_DST] = sin6tosa(sin6);
   info.rti_info[RTAX_GATEWAY] = ifa-ifa_addr;
 - info.rti_info[RTAX_NETMASK] = sin6tosa(all1_sa);
   if ((e = rtrequest1(RTM_ADD, info, RTP_CONNECTED,
   rt, rtableid)) != 0) {
   #if 0
   char ip[INET6_ADDRSTRLEN];
 --- 681,688 
 

-- 
:wq Claudio



if_detach() addresses cleanup

2014-01-22 Thread Martin Pieuchot
Network addresses added to the interface local list thought ifa_add()
are the link-local address and the IPv4/6 ones.

Since if_detach() now calls in_ifdetach(), there should be no address
left on the list apart from the link-layer one at this stage.  So the
diff below removes it directly, there's no need for a loop anymore.

I left a check for safety afterward...

ok?

Index: net/if.c
===
RCS file: /home/ncvs/src/sys/net/if.c,v
retrieving revision 1.279
diff -u -p -r1.279 if.c
--- net/if.c28 Nov 2013 10:16:44 -  1.279
+++ net/if.c7 Jan 2014 11:57:09 -
@@ -359,12 +359,10 @@ if_free_sadl(struct ifnet *ifp)
 
s = splnet();
rtinit(ifa, RTM_DELETE, 0);
-#if 0
ifa_del(ifp, ifa);
+   ifafree(ifp-if_lladdr);
ifp-if_lladdr = NULL;
-#endif
ifp-if_sadl = NULL;
-
splx(s);
 }
 
@@ -587,27 +585,22 @@ do { \
if (ISSET(ifp-if_xflags, IFXF_TXREADY))
TAILQ_REMOVE(iftxlist, ifp, if_txlist);
 
-   /*
-* Deallocate private resources.
-*/
-   while ((ifa = TAILQ_FIRST(ifp-if_addrlist)) != NULL) {
-   ifa_del(ifp, ifa);
-   /* XXX if_free_sadl needs this */
-   if (ifa == ifp-if_lladdr)
-   continue;
-
-   ifa-ifa_ifp = NULL;
-   ifafree(ifa);
-   }
-
while ((ifg = TAILQ_FIRST(ifp-if_groups)) != NULL)
if_delgroup(ifp, ifg-ifgl_group-ifg_group);
 
if_free_sadl(ifp);
 
-   ifp-if_lladdr-ifa_ifp = NULL;
-   ifafree(ifp-if_lladdr);
-   ifp-if_lladdr = NULL;
+   /* We should not have any address left at this point. */
+   if (!TAILQ_EMPTY(ifp-if_addrlist)) {
+#ifdef DIAGNOSTIC
+   printf(%s: address list non empty\n, ifp-if_xname);
+#endif
+   while ((ifa = TAILQ_FIRST(ifp-if_addrlist)) != NULL) {
+   ifa_del(ifp, ifa);
+   ifa-ifa_ifp = NULL;
+   ifafree(ifa);
+   }
+   }
 
free(ifp-if_addrhooks, M_TEMP);
free(ifp-if_linkstatehooks, M_TEMP);



Re: signed packages

2014-01-22 Thread Marc Espie
On Wed, Jan 22, 2014 at 01:46:33PM +0400, Loganaden Velvindron wrote:
  The signing framework in pkg_add/pkg_create is much older than that, if
  was written for x509 a few years ago, but signify(1) will probably be more
  robust and ways simpler.  In particular, there's no chain-of-trust, so
  you keep complete control on the sources YOU trust.
 
 Can you please elborate more on the trusting part ?
 
 Both DNSSEC and RPKI have a root anchor that we're all supposed to trust,
 and your model is different.

There's no chain of trust.

pkg_add trusts pub keys under /etc/signify that end in *pkg.pub
(respectively *fw.pub for firmwares).

Put shit there - get shit out.

the only way to get keys in there is:
- base install,
- explicitly putting keys there as root.

There's nothing more automated. Keys are not certified nor anything.



Re: signed packages

2014-01-22 Thread Stuart Henderson
On 2014/01/22 13:46, Loganaden Velvindron wrote:
 On Fri, Jan 17, 2014 at 3:26 PM, Marc Espie es...@nerim.net wrote:
  It's probably time to talk about it.
 
  Yes, we are now distributing signed packages.  A lot of people have probably
  noticed because there was a key mismatch on at least one batch of signed
  packages.
 
  Obviously, we haven't finished testing yet.
 
  Don't read too much into that.  Signed packages just mean you can use
  an insecure medium, such as ftp, to download packages: if the key matches,
  it means the package hasn't been tampered with since it was signed.
 
  The cryptographic framework used to sign packages is called signify(1),
  mostly written by Ted Unangst, with a lot of feedback from (mostly) Theo
  and I.
 
  The signing framework in pkg_add/pkg_create is much older than that, if
  was written for x509 a few years ago, but signify(1) will probably be more
  robust and ways simpler.  In particular, there's no chain-of-trust, so
  you keep complete control on the sources YOU trust.
 
 Can you please elborate more on the trusting part ?
 
 Both DNSSEC and RPKI have a root anchor that we're all supposed to trust,
 and your model is different.

The model is: only the specific keys placed in /etc/signify are trusted.

The plan is to include the public keys used for signing release n+1 in
release n. So once you trust a particular key, by verifying signatures
on sets which you download+install, you can have a chain of continuity
for future keys.

You still need to get your initial key from somewhere that you
trust. If you are worried about sources of this, you can at least
check and compare the 55*.pub files from a few sources e.g. those in
downloaded sets against those in anoncvs/cvsweb (cvs -d $CVSROOT get
-p src/etc/signify/55base.pub to display on stdout). Of course when
the next release is done they'll be on CD.

(IIRC somebody suggested printing keys on the tshirts, not sure if print
resolution on fabric is really up to that without making the text so
big as to be horribly ugly, posters may work though.)

Given sufficient space to download tgz before unpacking, the install
ramdisk kernel now checks signatures (yes: crypto fits on the ramdisk
- signify/ed25519 is small, and yes: please test and report on any
problems!).

If you're fetching a new installer (ramdisk kernel, install55.iso,
floppy*.fs, etc) you can verify the signature of that file before using
it. Also it should go without saying, if you use the untar sets on a
running system method, checking those sets is your responsibility,
see signify(1)'s EXAMPLES section for information about how to do this.



Re: signed packages

2014-01-22 Thread Jiri B
On Wed, Jan 22, 2014 at 11:28:50AM +, Stuart Henderson wrote:
 The model is: only the specific keys placed in /etc/signify are trusted.
 
 The plan is to include the public keys used for signing release n+1 in
 release n. So once you trust a particular key, by verifying signatures
 on sets which you download+install, you can have a chain of continuity
 for future keys.
 
 You still need to get your initial key from somewhere that you
 trust. If you are worried about sources of this, you can at least
 check and compare the 55*.pub files from a few sources e.g. those in
 downloaded sets against those in anoncvs/cvsweb (cvs -d $CVSROOT get
 -p src/etc/signify/55base.pub to display on stdout). Of course when
 the next release is done they'll be on CD.
 
 (IIRC somebody suggested printing keys on the tshirts, not sure if print
 resolution on fabric is really up to that without making the text so
 big as to be horribly ugly, posters may work though.)
 
 Given sufficient space to download tgz before unpacking, the install
 ramdisk kernel now checks signatures (yes: crypto fits on the ramdisk
 - signify/ed25519 is small, and yes: please test and report on any
 problems!).
 
 If you're fetching a new installer (ramdisk kernel, install55.iso,
 floppy*.fs, etc) you can verify the signature of that file before using
 it. Also it should go without saying, if you use the untar sets on a
 running system method, checking those sets is your responsibility,
 see signify(1)'s EXAMPLES section for information about how to do this.

What about as TXT record for dns (in combination with DNSSEC) as alternative
for getting the key? :)

jirib



Re: signed packages

2014-01-22 Thread Bob Beck
Yeah.   Ok mister chicken before egg.. We should validate this thing
shipped in a release using dnssec with a root of trust depending on root
certs shipped with the release...Love that idea..   But maybe I'll just
buy a CD.
On 22 Jan 2014 05:13, Jiri B ji...@devio.us wrote:

 On Wed, Jan 22, 2014 at 11:28:50AM +, Stuart Henderson wrote:
  The model is: only the specific keys placed in /etc/signify are trusted.
 
  The plan is to include the public keys used for signing release n+1 in
  release n. So once you trust a particular key, by verifying signatures
  on sets which you download+install, you can have a chain of continuity
  for future keys.
 
  You still need to get your initial key from somewhere that you
  trust. If you are worried about sources of this, you can at least
  check and compare the 55*.pub files from a few sources e.g. those in
  downloaded sets against those in anoncvs/cvsweb (cvs -d $CVSROOT get
  -p src/etc/signify/55base.pub to display on stdout). Of course when
  the next release is done they'll be on CD.
 
  (IIRC somebody suggested printing keys on the tshirts, not sure if print
  resolution on fabric is really up to that without making the text so
  big as to be horribly ugly, posters may work though.)
 
  Given sufficient space to download tgz before unpacking, the install
  ramdisk kernel now checks signatures (yes: crypto fits on the ramdisk
  - signify/ed25519 is small, and yes: please test and report on any
  problems!).
 
  If you're fetching a new installer (ramdisk kernel, install55.iso,
  floppy*.fs, etc) you can verify the signature of that file before using
  it. Also it should go without saying, if you use the untar sets on a
  running system method, checking those sets is your responsibility,
  see signify(1)'s EXAMPLES section for information about how to do this.

 What about as TXT record for dns (in combination with DNSSEC) as
 alternative
 for getting the key? :)

 jirib




Re: signed packages

2014-01-22 Thread Bob Beck
Our lists are so full of helpful smart people who think chains of
trust are magical pixie dust coming from root-provider-fairylands
where the root cert faires live in castles of uncompromising fortitude
that are never full of government plants and are whose certificates
are magically transported into operating systems and placed in that
special place in our hearts where no file could ever be modified...
They also suggest we should move the machines that generate the
releases into of those same castles where power is cheaper to save
money...

I think I'll make sure to advertise the next OpenBSD Foundation
funding campaign by suggesting that you're not actually not real
people, but a helpful-suggestions-posting-bot sponsored by the NSA..
 Or maybe it's that they've infiltrated our educational systems...
Please get our your tinfoil hats kids.




On Wed, Jan 22, 2014 at 5:39 AM, Bob Beck b...@obtuse.com wrote:
 Yeah.   Ok mister chicken before egg.. We should validate this thing shipped
 in a release using dnssec with a root of trust depending on root certs
 shipped with the release...Love that idea..   But maybe I'll just buy a
 CD.

 On 22 Jan 2014 05:13, Jiri B ji...@devio.us wrote:

 On Wed, Jan 22, 2014 at 11:28:50AM +, Stuart Henderson wrote:
  The model is: only the specific keys placed in /etc/signify are trusted.
 
  The plan is to include the public keys used for signing release n+1 in
  release n. So once you trust a particular key, by verifying signatures
  on sets which you download+install, you can have a chain of continuity
  for future keys.
 
  You still need to get your initial key from somewhere that you
  trust. If you are worried about sources of this, you can at least
  check and compare the 55*.pub files from a few sources e.g. those in
  downloaded sets against those in anoncvs/cvsweb (cvs -d $CVSROOT get
  -p src/etc/signify/55base.pub to display on stdout). Of course when
  the next release is done they'll be on CD.
 
  (IIRC somebody suggested printing keys on the tshirts, not sure if print
  resolution on fabric is really up to that without making the text so
  big as to be horribly ugly, posters may work though.)
 
  Given sufficient space to download tgz before unpacking, the install
  ramdisk kernel now checks signatures (yes: crypto fits on the ramdisk
  - signify/ed25519 is small, and yes: please test and report on any
  problems!).
 
  If you're fetching a new installer (ramdisk kernel, install55.iso,
  floppy*.fs, etc) you can verify the signature of that file before using
  it. Also it should go without saying, if you use the untar sets on a
  running system method, checking those sets is your responsibility,
  see signify(1)'s EXAMPLES section for information about how to do this.

 What about as TXT record for dns (in combination with DNSSEC) as
 alternative
 for getting the key? :)

 jirib





Re: signed packages

2014-01-22 Thread Bob Beck
 I think I'll make sure to advertise the next OpenBSD Foundation
 funding campaign by suggesting that you're not actually not real
 people, but a helpful-suggestions-posting-bot sponsored by the NSA..
  Or maybe it's that they've infiltrated our educational systems...
 Please get our your tinfoil hats kids.

OMG there's no replies.. The NSA programmed the 'bot to not respond to
this topic!



Re: signed base installs

2014-01-22 Thread Ted Unangst
On Wed, Jan 22, 2014 at 15:33, Christian Weisgerber wrote:
 Theo de Raadt dera...@cvs.openbsd.org wrote:
 
 There are a few raw edges still, but we would appreciate if this is
 tried by a few people.. please give us feedback.
 
 Well, it works for me for installs and updates on amd64 and i386.
 
 The limitation that the sets are only downloaded and verified if
 /home is a separate mount point is somewhat annoying.  I don't like
 to fragment the available disk space on small machines that run off
 a CF or similar and where I may not even bother to create a user.

If you download the sets ahead of time and install from disk, it
should verify them without the requirement for /home.

Hopefully we can improve the installer's ability to locate free space.
Right now, it downloads everything to avoid the situation where half
the sets install, but then one fails, and you're left with a half
upgraded system.



Re: 5.5beta wierds

2014-01-22 Thread Todd C. Miller
On Wed, 22 Jan 2014 10:26:47 +0100, Otto Moerbeek wrote:

 yeah, I first had that and then deleted it. 

OK.

 - todd



Re: signed packages

2014-01-22 Thread Giancarlo Razzolini
Em 22-01-2014 11:00, Bob Beck escreveu:
 Our lists are so full of helpful smart people who think chains of
 trust are magical pixie dust coming from root-provider-fairylands
 where the root cert faires live in castles of uncompromising fortitude
 that are never full of government plants and are whose certificates
 are magically transported into operating systems and placed in that
 special place in our hearts where no file could ever be modified...
 They also suggest we should move the machines that generate the
 releases into of those same castles where power is cheaper to save
 money...

 I think I'll make sure to advertise the next OpenBSD Foundation
 funding campaign by suggesting that you're not actually not real
 people, but a helpful-suggestions-posting-bot sponsored by the NSA..
  Or maybe it's that they've infiltrated our educational systems...
 Please get our your tinfoil hats kids.

Bob,

There were lots of e-mails through the years on misc, some of
myself, that asked for more, how can I say, trustiness on the getting
the source and/or, just using the binaries provided by OpenBSD. I
believe that signify helps a lot on this. I took a look at the code and
it's simple and beautiful.

I myself download the installXX.iso and source code from different
mirrors/anoncvs, and using different internet links, just to be sure
that things are in order. I'll be even more paranoid with the next
release to make sure I have the right keys, both for 5.5 and the ones
that follow. Tinfoil hats apart, I believe that with the interdiction
programs that NSA has, and maybe also other governments, CD's can not be
entitled with the same trust as before. I believe that DNSSEC is just
one of the many things that could be done to make this trust more easy
to obtain and verify. I've been living without it anyway.

Cheers,

-- 
Giancarlo Razzolini
GPG: 4096R/77B981BC



Re: signed packages

2014-01-22 Thread Ted Unangst
On Wed, Jan 22, 2014 at 11:28, Stuart Henderson wrote:
 (IIRC somebody suggested printing keys on the tshirts, not sure if print
 resolution on fabric is really up to that without making the text so
 big as to be horribly ugly, posters may work though.)

It's only 56 letters. 3 rows of 19 should fit pretty easily across the
bottom of a shirt in a font size (36) that's legible without dominating
the whole shirt.



Re: signed packages

2014-01-22 Thread Kenneth Westerback
We did print the whole blowfish implementation on the back of a t-shirt,
and I can still read mine. So a key should not be a problem. :-)

. Ken


On 23 January 2014 09:13, Ted Unangst t...@tedunangst.com wrote:

 On Wed, Jan 22, 2014 at 11:28, Stuart Henderson wrote:
  (IIRC somebody suggested printing keys on the tshirts, not sure if print
  resolution on fabric is really up to that without making the text so
  big as to be horribly ugly, posters may work though.)

 It's only 56 letters. 3 rows of 19 should fit pretty easily across the
 bottom of a shirt in a font size (36) that's legible without dominating
 the whole shirt.




Re: signed packages

2014-01-22 Thread Ian McWilliam

On 23/01/2014 12:52 AM, Bob Beck wrote:

I think I'll make sure to advertise the next OpenBSD Foundation
funding campaign by suggesting that you're not actually not real
people, but a helpful-suggestions-posting-bot sponsored by the NSA..
  Or maybe it's that they've infiltrated our educational systems...
Please get our your tinfoil hats kids.

OMG there's no replies.. The NSA programmed the 'bot to not respond to
this topic!


That's probably because the NSA are now so high on magic pixie dust from 
your previous post you sent them. When they come down the 'bot will respond.


Ian McWilliam



Re: Buggy i386 install55.iso

2014-01-22 Thread Rod Whitworth
Latest snap (2014-01-22) has same bug although I don't recall the
original one rebooting after the crash as this one does. OTOH cranial
memory rusty...

On Wed, 22 Jan 2014 12:09:44 +1100, Rod Whitworth wrote:

Date 2014-01-20 
Downloaded copies from two mirrors same result.
Second one from Edmonton.

Doing install (not doing upgrade etc) process gets to the point of
loading sets and crashes with a 5 line message that disappears before I
can memorise it and a faster small message that gets away from me.

Tested on two disparate machines - same result.

Repeatability 100%.

I'll try an amd64 and report result.

/R/

*** NOTE *** Please DO NOT CC me. I am subscribed to the list.
Mail to the sender address that does not originate at the list server is 
tarpitted. The reply-to: address is provided for those who feel compelled to 
reply off list. Thankyou.

Rod/
---
This life is not the real thing.
It is not even in Beta.
If it was, then OpenBSD would already have a man page for it.



*** NOTE *** Please DO NOT CC me. I am subscribed to the list.
Mail to the sender address that does not originate at the list server is 
tarpitted. The reply-to: address is provided for those who feel compelled to 
reply off list. Thankyou.

Rod/
---
This life is not the real thing.
It is not even in Beta.
If it was, then OpenBSD would already have a man page for it.




pf_check_proto_cksum(): simplify ICMP checksum verification

2014-01-22 Thread Lawrence Teo
This diff simplifies the verification of ICMP checksums in
pf_check_proto_cksum() by letting it use the same in4_cksum() call that
is used for TCP and UDP checksums.

As a bonus, since in4_cksum() doesn't need that m_data/m_len dance the
code becomes much shorter as well.

OK?


Index: pf.c
===
RCS file: /cvs/src/sys/net/pf.c,v
retrieving revision 1.865
diff -u -p -U10 -r1.865 pf.c
--- pf.c22 Jan 2014 04:33:34 -  1.865
+++ pf.c22 Jan 2014 22:33:23 -
@@ -5875,37 +5875,25 @@ pf_check_proto_cksum(struct pf_pdesc *pd
return (0);
}
if (pd-m-m_pkthdr.csum_flags  flag_bad || off  sizeof(struct ip) ||
pd-m-m_pkthdr.len  off + len) {
pd-csum_status = PF_CSUM_BAD;
return (1);
}
switch (af) {
 #ifdef INET
case AF_INET:
-   if (p == IPPROTO_ICMP) {
-   if (pd-m-m_len  off) {
-   pd-csum_status = PF_CSUM_BAD;
-   return (1);
-   }
-   pd-m-m_data += off;
-   pd-m-m_len -= off;
-   sum = in_cksum(pd-m, len);
-   pd-m-m_data -= off;
-   pd-m-m_len += off;
-   } else {
-   if (pd-m-m_len  sizeof(struct ip)) {
-   pd-csum_status = PF_CSUM_BAD;
-   return (1);
-   }
-   sum = in4_cksum(pd-m, p, off, len);
+   if (pd-m-m_len  sizeof(struct ip)) {
+   pd-csum_status = PF_CSUM_BAD;
+   return (1);
}
+   sum = in4_cksum(pd-m, (p == IPPROTO_ICMP ? 0 : p), off, len);
break;
 #endif /* INET */
 #ifdef INET6
case AF_INET6:
if (pd-m-m_len  sizeof(struct ip6_hdr)) {
pd-csum_status = PF_CSUM_BAD;
return (1);
}
sum = in6_cksum(pd-m, p, off, len);
break;