• Jason A. Donenfeld's avatar
    wireguard: noise: error out precomputed DH during handshake rather than config · 11a7686a
    Jason A. Donenfeld authored
    We precompute the static-static ECDH during configuration time, in order
    to save an expensive computation later when receiving network packets.
    However, not all ECDH computations yield a contributory result. Prior,
    we were just not letting those peers be added to the interface. However,
    this creates a strange inconsistency, since it was still possible to add
    other weird points, like a valid public key plus a low-order point, and,
    like points that result in zeros, a handshake would not complete. In
    order to make the behavior more uniform and less surprising, simply
    allow all peers to be added. Then, we'll error out later when doing the
    crypto if there's an issue. This also adds more separation between the
    crypto layer and the configuration layer.
    
    Discussed-with: Mathias Hall-Andersen <mathias@hall-andersen.dk>
    Signed-off-by: default avatarJason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    11a7686a
noise.c 26.2 KB