migrate secrets handling to unmanaged C code for more reliable zeroizing
With our Wiper class, we currently make a good attempt, using reflection, to wipe sensitive data inside the JVM. But due to memory relocation during garbage collection in the JVM, we can't be sure copies of data haven't been made inadvertently.
To solve this we can create C helpers that manage sensitive data in real memory. NIO Direct Byte Buffers might be useful here.