  *  * \note 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 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 