 On decryption, the output buffer cannot be the same as input buffer.  *       If buffers overlap, the output buffer must trail at least 0 bytes  *       behind the input buffer.  *  * \param ctx       GCM context  * \param mode      MBEDTLS_GCM_ENCRYPT or MBEDTLS_GCM_DECRYPT  * \param length    length of the input data  * \param iv        initialization vector  * \param iv_len    length of IV  * \param add       additional data  * \param add_len   length of additional data  * \param input     buffer holding the input data  * \param output    buffer for holding the output data  * \param tag_len   length of the tag to generate  * 