internal static SafeLocalAllocHandle CopyOidsToUnmanagedMemory(OidCollection oids) { SafeLocalAllocHandle invalidHandle = SafeLocalAllocHandle.InvalidHandle; if ((oids != null) && (oids.Count != 0)) { List <string> list = new List <string>(); OidEnumerator enumerator = oids.GetEnumerator(); while (enumerator.MoveNext()) { Oid current = enumerator.Current; list.Add(current.Value); } IntPtr zero = IntPtr.Zero; int num = list.Count * Marshal.SizeOf(typeof(IntPtr)); int num2 = 0; foreach (string str in list) { num2 += str.Length + 1; } invalidHandle = CAPI.LocalAlloc(0x40, new IntPtr((long)(((uint)num) + ((uint)num2)))); zero = new IntPtr(((long)invalidHandle.DangerousGetHandle()) + num); for (int i = 0; i < list.Count; i++) { Marshal.WriteIntPtr(new IntPtr(((long)invalidHandle.DangerousGetHandle()) + (i * Marshal.SizeOf(typeof(IntPtr)))), zero); byte[] bytes = Encoding.ASCII.GetBytes(list[i]); Marshal.Copy(bytes, 0, zero, bytes.Length); zero = new IntPtr((((long)zero) + list[i].Length) + 1L); } } return(invalidHandle); }
internal static System.Security.Cryptography.SafeLocalAllocHandle CopyOidsToUnmanagedMemory(OidCollection oids) { System.Security.Cryptography.SafeLocalAllocHandle invalidHandle = System.Security.Cryptography.SafeLocalAllocHandle.InvalidHandle; if ((oids != null) && (oids.Count != 0)) { int num = oids.Count * Marshal.SizeOf(typeof(IntPtr)); int num2 = 0; OidEnumerator enumerator = oids.GetEnumerator(); while (enumerator.MoveNext()) { Oid current = enumerator.Current; num2 += current.Value.Length + 1; } invalidHandle = System.Security.Cryptography.CAPI.LocalAlloc(0x40, new IntPtr((long)((ulong)(num + num2)))); IntPtr val = new IntPtr(((long)invalidHandle.DangerousGetHandle()) + num); for (int i = 0; i < oids.Count; i++) { Marshal.WriteIntPtr(new IntPtr(((long)invalidHandle.DangerousGetHandle()) + (i * Marshal.SizeOf(typeof(IntPtr)))), val); byte[] bytes = Encoding.ASCII.GetBytes(oids[i].Value); Marshal.Copy(bytes, 0, val, bytes.Length); val = new IntPtr((((long)val) + oids[i].Value.Length) + 1L); } } return(invalidHandle); }
private OidEnumerator GetEnumerator() { OidCollection oc = new OidCollection(); oc.Add(new Oid("1.0")); oc.Add(new Oid("1.1")); oc.Add(new Oid("1.2")); return(oc.GetEnumerator()); }
public void Constructor() { OidCollection oc = new OidCollection(); // default properties Assert.AreEqual(0, oc.Count, "Count"); Assert.IsTrue(!oc.IsSynchronized, "IsSynchronized"); Assert.IsNotNull(oc.SyncRoot, "SyncRoot"); Assert.IsNotNull(oc.GetEnumerator(), "GetEnumerator"); }
public static void Main() { // Assign values to strings. string Value1 = "1.2.840.113549.1.1.1"; string Name1 = "3DES"; string Value2 = "1.3.6.1.4.1.311.20.2"; string InvalidName = "This name is not a valid name"; string InvalidValue = "1.1.1.1.1.1.1.1"; // Create new Oid objects using the specified values. // Note that the corresponding Value or Friendly Name property is automatically added to the object. Oid o1 = new Oid(Value1); Oid o2 = new Oid(Name1); // Create a new Oid object using the specified Value and Friendly Name properties. // Note that the two are not compared to determine if the Value is associated // with the Friendly Name. Oid o3 = new Oid(Value2, InvalidName); //Create a new Oid object using the specified Value. Note that if the value // is invalid or not known, no value is assigned to the Friendly Name property. Oid o4 = new Oid(InvalidValue); //Write out the property information of the Oid objects. Console.WriteLine("Oid1: Automatically assigned Friendly Name: {0}, {1}", o1.FriendlyName, o1.Value); Console.WriteLine("Oid2: Automatically assigned Value: {0}, {1}", o2.FriendlyName, o2.Value); Console.WriteLine("Oid3: Name and Value not compared: {0}, {1}", o3.FriendlyName, o3.Value); Console.WriteLine("Oid4: Invalid Value used: {0}, {1} {2}", o4.FriendlyName, o4.Value, Environment.NewLine); //Create an Oid collection and add several Oid objects. OidCollection oc = new OidCollection(); oc.Add(o1); oc.Add(o2); oc.Add(o3); Console.WriteLine("Number of Oids in the collection: {0}", oc.Count); Console.WriteLine("Is synchronized: {0} {1}", oc.IsSynchronized, Environment.NewLine); //Create an enumerator for moving through the collection. OidEnumerator oe = oc.GetEnumerator(); //You must execute a MoveNext() to get to the first item in the collection. oe.MoveNext(); // Write out Oids in the collection. Console.WriteLine("First Oid in collection: {0},{1}", oe.Current.FriendlyName, oe.Current.Value); oe.MoveNext(); Console.WriteLine("Second Oid in collection: {0},{1}", oe.Current.FriendlyName, oe.Current.Value); //Return index in the collection to the beginning. oe.Reset(); }
private static SafeHGlobalHandle CopyOidsToUnmanagedMemory(OidCollection oids) { SafeHGlobalHandle invalidHandle = SafeHGlobalHandle.InvalidHandle; if ((oids != null) && (oids.Count != 0)) { List <string> list = new List <string>(); OidEnumerator enumerator = oids.GetEnumerator(); while (enumerator.MoveNext()) { Oid current = enumerator.Current; list.Add(current.Value); } IntPtr zero = IntPtr.Zero; IntPtr ptr = IntPtr.Zero; int num = list.Count * Marshal.SizeOf(typeof(IntPtr)); int num2 = 0; foreach (string str in list) { num2 += str.Length + 1; } invalidHandle = SafeHGlobalHandle.AllocHGlobal((int)(num + num2)); zero = new IntPtr(((long)invalidHandle.DangerousGetHandle()) + num); for (int i = 0; i < list.Count; i++) { Marshal.WriteIntPtr(new IntPtr(((long)invalidHandle.DangerousGetHandle()) + (i * Marshal.SizeOf(typeof(IntPtr)))), zero); byte[] bytes = Encoding.ASCII.GetBytes(list[i]); if (bytes.Length != list[i].Length) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(System.IdentityModel.SR.GetString("ObjectIsReadOnly"))); } Marshal.Copy(bytes, 0, zero, bytes.Length); ptr = new IntPtr(((long)zero) + bytes.Length); Marshal.WriteByte(ptr, 0); zero = new IntPtr((((long)zero) + list[i].Length) + 1L); } } return(invalidHandle); }