/////////////////////////////////////////////////////////////////////// public static Assembly FindInAppDomain( AppDomain appDomain, string name, Version version, byte[] publicKeyToken, ref Result error ) { if (appDomain == null) { appDomain = AppDomainOps.GetCurrent(); } if (appDomain != null) { Assembly[] assemblies = appDomain.GetAssemblies(); foreach (Assembly assembly in assemblies) { if (assembly == null) { continue; } AssemblyName assemblyName = assembly.GetName(); if (assemblyName == null) { continue; } if ((name != null) && !String.Equals( assemblyName.Name, name, StringOps.SystemStringComparisonType)) { continue; } if ((version != null) && (PackageOps.VersionCompare( assemblyName.Version, version) != 0)) { continue; } if ((publicKeyToken != null) && !ArrayOps.Equals( assemblyName.GetPublicKeyToken(), publicKeyToken)) { continue; } return(assembly); } } error = "assembly not found in application domain"; return(null); }
/////////////////////////////////////////////////////////////////////// public static string GetPublicKeyToken( AssemblyName assemblyName ) { if (assemblyName != null) { try { return(ArrayOps.ToHexadecimalString( assemblyName.GetPublicKeyToken())); } catch { // do nothing. } } return(null); }
/////////////////////////////////////////////////////////////////////// #region Private Trusted Certificate Support Methods private static bool IsTrustedCertificate( X509Certificate certificate ) { bool result = false; string name = null; // // NOTE: Make sure the certificate public key matches what // we expect it to be for our own software updates. // if (certificate != null) { // // NOTE: Grab the public key of the certificate. // byte[] certificatePublicKey = certificate.GetPublicKey(); if ((certificatePublicKey != null) && (certificatePublicKey.Length > 0)) { lock (syncRoot) /* TRANSACTIONAL */ { // // NOTE: Compare the public key of the certificate to // one(s) that we trust for our software updates. // if (!result && (PublicKey1 != null) && (PublicKey1.Length > 0) && ArrayOps.Equals(certificatePublicKey, PublicKey1)) { name = "PublicKey1"; result = true; } if (!result && (PublicKey2 != null) && (PublicKey2.Length > 0) && ArrayOps.Equals(certificatePublicKey, PublicKey2)) { name = "PublicKey2"; result = true; } if (!result && (PublicKey3 != null) && (PublicKey3.Length > 0) && ArrayOps.Equals(certificatePublicKey, PublicKey3)) { name = "PublicKey3"; result = true; } if (!result && (PublicKey4 != null) && (PublicKey4.Length > 0) && ArrayOps.Equals(certificatePublicKey, PublicKey4)) { name = "PublicKey4"; result = true; } // // NOTE: Compare the public key of the certificate to // the auxiliary one that we trust for use by // third-party applications and plugins. // if (!result && (PublicKey5 != null) && (PublicKey5.Length > 0) && ArrayOps.Equals(certificatePublicKey, PublicKey5)) { name = "PublicKey5"; result = true; } } } } // // NOTE: Report this trust result to any trace listeners. // TraceOps.DebugTrace(String.Format( "IsTrustedCertificate: certificate = {0}, name = {1}, " + "result = {2}", FormatOps.Certificate(certificate, false, true), FormatOps.WrapOrNull(name), result), typeof(UpdateOps).Name, TracePriority.SecurityDebug); return(result); }
private static StringList GetAsyncCompletedArguments( Uri uri, string method, byte[] rawData, NameValueCollection collection, string fileName, AsyncCompletedEventArgs eventArgs ) { StringList result = new StringList(); if (uri != null) { result.Add("uri"); result.Add(uri.ToString()); } if (method != null) { result.Add("method"); result.Add(method); } if (rawData != null) { result.Add("rawData"); result.Add(ArrayOps.ToHexadecimalString(rawData)); } if (collection != null) { result.Add("collection"); result.Add(ListOps.FromNameValueCollection( collection, new StringList()).ToString()); } if (fileName != null) { result.Add("fileName"); result.Add(fileName); } if (eventArgs != null) { bool canceled = eventArgs.Cancelled; result.Add("canceled"); result.Add(canceled.ToString()); Exception exception = eventArgs.Error; if (exception != null) { result.Add("exception"); result.Add(exception.GetType().ToString()); result.Add("error"); result.Add(exception.ToString()); } } return(result); }