The actual limit here is (2**32 - 1) * hash_length, but OpenSSL declares it as a signed int. We could add code and have each backend provide their limit, but since 2GB from the KDF is a terrible idea anyway maybe leaving it is fine?