public static byte[] DecryptData(byte[] data, ToxEncryptionKey key, out ToxErrorDecryption error)
        {
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }

            if (key == null)
            {
                throw new ArgumentNullException("key");
            }

            byte[] output = new byte[data.Length - EncryptionExtraLength];
            var    pass   = key.ToPassKey();

            error = ToxErrorDecryption.Ok;

            if (!ToxEncryptionFunctions.PassKeyDecrypt(data, (uint)data.Length, ref pass, output, ref error) || error != ToxErrorDecryption.Ok)
            {
                return(null);
            }

            return(output);
        }
        public static byte[] EncryptData(byte[] data, ToxEncryptionKey key)
        {
            var error = ToxErrorEncryption.Ok;

            return(EncryptData(data, key, out error));
        }