mirror of
https://github.com/bolucat/Archive.git
synced 2025-10-08 09:31:40 +08:00
Update On Tue Dec 31 19:31:58 CET 2024
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
namespace Shadowsocks.Encryption
|
||||
{
|
||||
public class EncryptorInfo
|
||||
{
|
||||
public int KeySize;
|
||||
public int IvSize;
|
||||
public int SaltSize;
|
||||
public int TagSize;
|
||||
public int NonceSize;
|
||||
public int Type;
|
||||
public string InnerLibName;
|
||||
|
||||
// For those who make use of internal crypto method name
|
||||
// e.g. mbed TLS
|
||||
|
||||
#region Stream ciphers
|
||||
|
||||
public EncryptorInfo(string innerLibName, int keySize, int ivSize, int type)
|
||||
{
|
||||
this.KeySize = keySize;
|
||||
this.IvSize = ivSize;
|
||||
this.Type = type;
|
||||
this.InnerLibName = innerLibName;
|
||||
}
|
||||
|
||||
public EncryptorInfo(int keySize, int ivSize, int type)
|
||||
{
|
||||
this.KeySize = keySize;
|
||||
this.IvSize = ivSize;
|
||||
this.Type = type;
|
||||
this.InnerLibName = string.Empty;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region AEAD ciphers
|
||||
|
||||
public EncryptorInfo(string innerLibName, int keySize, int saltSize, int nonceSize, int tagSize, int type)
|
||||
{
|
||||
this.KeySize = keySize;
|
||||
this.SaltSize = saltSize;
|
||||
this.NonceSize = nonceSize;
|
||||
this.TagSize = tagSize;
|
||||
this.Type = type;
|
||||
this.InnerLibName = innerLibName;
|
||||
}
|
||||
|
||||
public EncryptorInfo(int keySize, int saltSize, int nonceSize, int tagSize, int type)
|
||||
{
|
||||
this.KeySize = keySize;
|
||||
this.SaltSize = saltSize;
|
||||
this.NonceSize = nonceSize;
|
||||
this.TagSize = tagSize;
|
||||
this.Type = type;
|
||||
this.InnerLibName = string.Empty;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public abstract class EncryptorBase
|
||||
: IEncryptor
|
||||
{
|
||||
public const int MAX_INPUT_SIZE = 32768;
|
||||
|
||||
public const int MAX_DOMAIN_LEN = 255;
|
||||
public const int ADDR_PORT_LEN = 2;
|
||||
public const int ADDR_ATYP_LEN = 1;
|
||||
|
||||
public const int ATYP_IPv4 = 0x01;
|
||||
public const int ATYP_DOMAIN = 0x03;
|
||||
public const int ATYP_IPv6 = 0x04;
|
||||
|
||||
public const int MD5_LEN = 16;
|
||||
|
||||
protected EncryptorBase(string method, string password)
|
||||
{
|
||||
Method = method;
|
||||
Password = password;
|
||||
}
|
||||
|
||||
protected string Method;
|
||||
protected string Password;
|
||||
|
||||
public abstract void Encrypt(byte[] buf, int length, byte[] outbuf, out int outlength);
|
||||
|
||||
public abstract void Decrypt(byte[] buf, int length, byte[] outbuf, out int outlength);
|
||||
|
||||
public abstract void EncryptUDP(byte[] buf, int length, byte[] outbuf, out int outlength);
|
||||
|
||||
public abstract void DecryptUDP(byte[] buf, int length, byte[] outbuf, out int outlength);
|
||||
|
||||
public abstract void Dispose();
|
||||
|
||||
public int AddrBufLength { get; set; } = - 1;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user