|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- using System;
- using System.Collections.Generic;
-
- namespace Shadowsocks.Encryption.Stream
- {
- class PlainEncryptor
- : EncryptorBase, IDisposable
- {
- const int CIPHER_NONE = 1;
-
- private static Dictionary<string, EncryptorInfo> _ciphers = new Dictionary<string, EncryptorInfo> {
- { "plain", new EncryptorInfo("PLAIN", 0, 0, CIPHER_NONE) },
- { "none", new EncryptorInfo("PLAIN", 0, 0, CIPHER_NONE) }
- };
-
- public PlainEncryptor(string method, string password) : base(method, password)
- {
- }
-
- public static List<string> SupportedCiphers()
- {
- return new List<string>(_ciphers.Keys);
- }
-
- protected Dictionary<string, EncryptorInfo> getCiphers()
- {
- return _ciphers;
- }
-
- #region TCP
-
- public override void Encrypt(byte[] buf, int length, byte[] outbuf, out int outlength)
- {
- Buffer.BlockCopy(buf, 0, outbuf, 0, length);
- outlength = length;
- }
-
- public override void Decrypt(byte[] buf, int length, byte[] outbuf, out int outlength)
- {
- Buffer.BlockCopy(buf, 0, outbuf, 0, length);
- outlength = length;
- }
-
- #endregion
-
- #region UDP
-
- public override void EncryptUDP(byte[] buf, int length, byte[] outbuf, out int outlength)
- {
- Buffer.BlockCopy(buf, 0, outbuf, 0, length);
- outlength = length;
- }
-
- public override void DecryptUDP(byte[] buf, int length, byte[] outbuf, out int outlength)
- {
- Buffer.BlockCopy(buf, 0, outbuf, 0, length);
- outlength = length;
- }
-
- #endregion
-
-
- #region IDisposable
-
- private bool _disposed;
-
- // instance based lock
- private readonly object _lock = new object();
-
- public override void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- ~PlainEncryptor()
- {
- Dispose(false);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- lock (_lock)
- {
- if (_disposed) return;
- _disposed = true;
- }
-
- if (disposing)
- {
- // free managed objects
- }
- }
-
- #endregion
-
- }
- }
|