Add support for rejecting IKE SA messages. This means that we can reply
authorpatrick <patrick@openbsd.org>
Thu, 30 Nov 2017 12:18:44 +0000 (12:18 +0000)
committerpatrick <patrick@openbsd.org>
Thu, 30 Nov 2017 12:18:44 +0000 (12:18 +0000)
commit9e48f23e0f324ed9df354dd34387e1231e6a1f24
treef3096700f59304ffa2b738c8efc03db05f59165d
parenteedad28e9275b1a1371be362f2e010287ee21920
Add support for rejecting IKE SA messages.  This means that we can reply
to IKE SA INIT messages with no proposal chosen, as we already do for
Child SAs.  For that the error "adding" is done in a new function shared
by both send error handlers.  We need two "send error" functions because
the init error is unencrypted, while all later ones are not.  Now we can
add more cases, like Child SA not found or that the DH group is not what
we expect.

Save the IKE SA INIT responses, even if it's an error message, so we can
retransmit it if the response is lost on the way back to the initiator
and he tries again.  This also helps mitigate DoS attacks as specified
in the RFC.  Only if it is indeed a new attempt, like after an INVALID
KE PAYLOAD response, we can drop the old SA so that iked(8) can attempt
to create a new SA.

ok sthen@
sbin/iked/iked.h
sbin/iked/ikev2.c
sbin/iked/ikev2_pld.c