This makes it easier to mix and match with other implementations for compatibility testing.
Using global defines for parameters (as seems to be typical in academic crypto code) does not play nice with multithreading at all.