This has the same issue as the check below, it'll allow 1-16 bytes, instead of only allowing 16. Should replace with something like this:

    if (salt.Length!= BLAKE2B_SALTBYTES)