static CIPHER() {
_ciphers = new Dictionary<Tuple<CType, CMode>, Func<IntPtr>>();
_ciphers.Add(new Tuple<CType, CMode>(CType.DES3 , CMode.ECB), () => (IntPtr) _CIPHER.EVP_des_ede3());
_ciphers.Add(new Tuple<CType, CMode>(CType.DES3 , CMode.CBC), () => (IntPtr) _CIPHER.EVP_des_ede3_cbc());
_ciphers.Add(new Tuple<CType, CMode>(CType.AES128, CMode.ECB), () => (IntPtr) _CIPHER.EVP_aes_128_ecb());
_ciphers.Add(new Tuple<CType, CMode>(CType.AES128, CMode.CBC), () => (IntPtr) _CIPHER.EVP_aes_128_cbc());
_ciphers.Add(new Tuple<CType, CMode>(CType.AES128, CMode.GCM), () => (IntPtr) _CIPHER.EVP_aes_128_gcm());
_ciphers.Add(new Tuple<CType, CMode>(CType.AES256, CMode.ECB), () => (IntPtr) _CIPHER.EVP_aes_256_ecb());
_ciphers.Add(new Tuple<CType, CMode>(CType.AES256, CMode.CBC), () => (IntPtr) _CIPHER.EVP_aes_256_cbc());
_ciphers.Add(new Tuple<CType, CMode>(CType.AES256, CMode.GCM), () => (IntPtr) _CIPHER.EVP_aes_256_gcm());
}