using System;

namespace Shadowsocks.Encryption
{
    public interface IEncryptor : IDisposable
    {
        /* length == -1 means not used */
        int AddrBufLength { set; get; }
        void Encrypt(byte[] buf, int length, byte[] outbuf, out int outlength);
        void Decrypt(byte[] buf, int length, byte[] outbuf, out int outlength);
        void EncryptUDP(byte[] buf, int length, byte[] outbuf, out int outlength);
        void DecryptUDP(byte[] buf, int length, byte[] outbuf, out int outlength);
    }
}
