Add const safety. Use size_t for lengths. Drop usage of `unsigned char`. Change-Id: I850ff0569c830debbe2a032f255e0c8e827350f4