[PATCH v2 7/7] babel: Add MAC authentication support

2020-09-23 Thread Toke Høiland-Jørgensen
From: Toke Høiland-Jørgensen This implements support for MAC authentication in the Babel protocol, as specified by draft-babel-hmac-10. The implementation seeks to follow the draft as close as possible, with the only deliberate deviation being the addition of support for all the HMAC algorithms a

[PATCH v2 2/7] nest: Add Blake2s and Blake2b hash functions

2020-09-23 Thread Toke Høiland-Jørgensen
From: Toke Høiland-Jørgensen The Babel MAC authentication draft recommends implementing Blake2s as one of the supported algorithms. In order to achieve do this, add the blake2b and blake2s hash functions for MAC authentication. The hashing function implementations are the reference implementation

[PATCH v2 5/7] config: Allow MAC algorithms to specify a function to validate their keys

2020-09-23 Thread Toke Høiland-Jørgensen
From: Toke Høiland-Jørgensen This adds a new field to the MAC algorithm description which is a pointer that will allow an algorithm to validate a key before it is used. Add this validate to the Blake algorithms, validating that the key length is exactly equal to their respective block sizes. Sig

[PATCH v2 6/7] babel: Refactor TLV parsing code for easier reuse

2020-09-23 Thread Toke Høiland-Jørgensen
From: Toke Høiland-Jørgensen In preparation for adding authentication checks, refactor the TLV walking code so it can be reused for a separate pass of the packet for authentication checks. Signed-off-by: Toke Høiland-Jørgensen --- proto/babel/packets.c | 166 +++---

[PATCH v2 0/7] Add MAC authentication support to the Babel protocol

2020-09-23 Thread Toke Høiland-Jørgensen
This series adds MAC authentication support to the Babel protocol as specified in by the IETF Babel working group in draft-babel-hmac-10: https://tools.ietf.org/html/draft-ietf-babel-hmac-10 This is the follow-up to v1, posted in February[0]. See changelog below. I have performed basic interoper

[PATCH v2 4/7] nest: Allow specifying security keys as hex bytes as well as strings

2020-09-23 Thread Toke Høiland-Jørgensen
From: Toke Høiland-Jørgensen This adds support for specifying a password in raw hexadecimal bytes form, via the 'key' keyword. The result is the same whether a password is specified as a quoted string or a hex-encoded byte string, this just makes it more convenient to input high-entropy byte stri

[PATCH v2 1/7] sysdep: Add wrapper to get random bytes

2020-09-23 Thread Toke Høiland-Jørgensen
From: Toke Høiland-Jørgensen The Babel authentication code added by a subsequent commit needs a way to get random bytes for generating nonces. This patch adds a wrapper function in sysdep to get random bytes, and the required checks in configure.ac to select how to do it. The configure script tr