Be stricter in type checking the C prototypes

By default, C compilers will let you pass integers of various widths in ways that can lose precision. This change makes cryptography strictly enforce that the prototypes match.