Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ CreateFromName() [2/2]

static ? object System.Security.Cryptography.CryptoConfig.CreateFromName ( string name,
params object??[] args )
inlinestatic

Definition at line 228 of file CryptoConfig.cs.

229 {
230 if (name == null)
231 {
232 throw new ArgumentNullException("name");
233 }
234 appNameHT.TryGetValue(name, out var value);
235 if (value == null && DefaultNameHT.TryGetValue(name, out object value2))
236 {
238 if (value == null && value2 is string typeName)
239 {
240 value = Type.GetType(typeName, throwOnError: false, ignoreCase: false);
241 if (value != null && !value.IsVisible)
242 {
243 value = null;
244 }
245 if (value != null)
246 {
248 }
249 }
250 }
251 if (value == null && (args == null || args.Length == 1) && name == "ECDsa")
252 {
253 return ECDsa.Create();
254 }
255 if (value == null)
256 {
257 value = Type.GetType(name, throwOnError: false, ignoreCase: false);
258 if (value != null && !value.IsVisible)
259 {
260 value = null;
261 }
262 }
263 if (value == null)
264 {
265 return null;
266 }
267 MethodBase[] constructors = value.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.CreateInstance);
269 if (array == null)
270 {
271 return null;
272 }
273 if (args == null)
274 {
275 args = Array.Empty<object>();
276 }
278 foreach (MethodBase methodBase in array)
279 {
280 if (methodBase.GetParameters().Length == args.Length)
281 {
282 list.Add(methodBase);
283 }
284 }
285 if (list.Count == 0)
286 {
287 return null;
288 }
289 array = list.ToArray();
290 object state;
291 ConstructorInfo constructorInfo = Type.DefaultBinder.BindToMethod(BindingFlags.Instance | BindingFlags.Public | BindingFlags.CreateInstance, array, ref args, null, null, null, out state) as ConstructorInfo;
292 if (constructorInfo == null || typeof(Delegate).IsAssignableFrom(constructorInfo.DeclaringType))
293 {
294 return null;
295 }
296 object result = constructorInfo.Invoke(BindingFlags.Instance | BindingFlags.Public | BindingFlags.CreateInstance, Type.DefaultBinder, args, null);
297 if (state != null)
298 {
299 Type.DefaultBinder.ReorderArgumentArray(ref args, state);
300 }
301 return result;
302 }
static Dictionary< string, object > DefaultNameHT
static readonly ConcurrentDictionary< string, Type > appNameHT

References System.Security.Cryptography.CryptoConfig.appNameHT, System.array, System.Security.Cryptography.ECDsa.Create(), System.Type.DefaultBinder, System.Security.Cryptography.CryptoConfig.DefaultNameHT, System.Type.GetType(), System.list, System.state, System.Reflection.Type, and System.value.

Referenced by System.Security.Cryptography.DES.Create(), System.Security.Cryptography.DSA.Create(), System.Security.Cryptography.MD5.Create(), System.Security.Cryptography.RC2.Create(), System.Security.Cryptography.Rijndael.Create(), System.Security.Cryptography.RSA.Create(), System.Security.Cryptography.ECDiffieHellman.Create(), System.Security.Cryptography.ECDsa.Create(), System.Security.Cryptography.Aes.Create(), System.Security.Cryptography.SHA1.Create(), System.Security.Cryptography.SHA256.Create(), System.Security.Cryptography.SHA384.Create(), System.Security.Cryptography.SHA512.Create(), System.Security.Cryptography.RandomNumberGenerator.Create(), System.Security.Cryptography.TripleDES.Create(), System.Security.Cryptography.SignatureDescription.CreateDeformatter(), System.Security.Cryptography.SignatureDescription.CreateDigest(), System.Security.Cryptography.SignatureDescription.CreateFormatter(), System.Security.Cryptography.CryptoConfig.CreateFromName(), and System.Security.Cryptography.PKCS1MaskGenerationMethod.GenerateMask().