diff --git a/crypto/src/util/Platform.cs b/crypto/src/util/Platform.cs
index f0b2406a5..b25d76dae 100644
--- a/crypto/src/util/Platform.cs
+++ b/crypto/src/util/Platform.cs
@@ -1,12 +1,6 @@
using System;
using System.Globalization;
-#if PORTABLE
-using System.Collections.Generic;
-#else
-using System.Collections;
-#endif
-
namespace Org.BouncyCastle.Utilities
{
internal abstract class Platform
@@ -32,107 +26,11 @@ namespace Org.BouncyCastle.Utilities
}
}
- internal static Exception CreateNotImplementedException(
- string message)
- {
- return new NotImplementedException(message);
- }
-
-#if PORTABLE
- internal static System.Collections.IList CreateArrayList()
- {
- return new List<object>();
- }
- internal static System.Collections.IList CreateArrayList(int capacity)
- {
- return new List<object>(capacity);
- }
- internal static System.Collections.IList CreateArrayList(System.Collections.ICollection collection)
- {
- System.Collections.IList result = new List<object>(collection.Count);
- foreach (object o in collection)
- {
- result.Add(o);
- }
- return result;
- }
- internal static System.Collections.IList CreateArrayList(System.Collections.IEnumerable collection)
- {
- System.Collections.IList result = new List<object>();
- foreach (object o in collection)
- {
- result.Add(o);
- }
- return result;
- }
- internal static System.Collections.IDictionary CreateHashtable()
- {
- return new Dictionary<object, object>();
- }
- internal static System.Collections.IDictionary CreateHashtable(int capacity)
- {
- return new Dictionary<object, object>(capacity);
- }
- internal static System.Collections.IDictionary CreateHashtable(System.Collections.IDictionary dictionary)
- {
- System.Collections.IDictionary result = new Dictionary<object, object>(dictionary.Count);
- foreach (System.Collections.DictionaryEntry entry in dictionary)
- {
- result.Add(entry.Key, entry.Value);
- }
- return result;
- }
-#else
- internal static System.Collections.IList CreateArrayList()
- {
- return new ArrayList();
- }
- internal static System.Collections.IList CreateArrayList(int capacity)
- {
- return new ArrayList(capacity);
- }
- internal static System.Collections.IList CreateArrayList(System.Collections.ICollection collection)
- {
- return new ArrayList(collection);
- }
- internal static System.Collections.IList CreateArrayList(System.Collections.IEnumerable collection)
- {
- ArrayList result = new ArrayList();
- foreach (object o in collection)
- {
- result.Add(o);
- }
- return result;
- }
- internal static System.Collections.IDictionary CreateHashtable()
- {
- return new Hashtable();
- }
- internal static System.Collections.IDictionary CreateHashtable(int capacity)
- {
- return new Hashtable(capacity);
- }
- internal static System.Collections.IDictionary CreateHashtable(System.Collections.IDictionary dictionary)
- {
- return new Hashtable(dictionary);
- }
-#endif
-
internal static int GetHashCode(object obj)
{
return null == obj ? 0 : obj.GetHashCode();
}
- internal static string ToLowerInvariant(string s)
- {
- return s.ToLowerInvariant();
- }
-
- internal static string ToUpperInvariant(string s)
- {
- return s.ToUpperInvariant();
- }
-
internal static readonly string NewLine = Environment.NewLine;
internal static void Dispose(IDisposable d)
diff --git a/crypto/src/util/collections/CollectionUtilities.cs b/crypto/src/util/collections/CollectionUtilities.cs
index 4a42cf19d..41b558130 100644
--- a/crypto/src/util/collections/CollectionUtilities.cs
+++ b/crypto/src/util/collections/CollectionUtilities.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections;
using System.Collections.Generic;
using System.Text;
@@ -7,19 +6,6 @@ namespace Org.BouncyCastle.Utilities.Collections
{
public abstract class CollectionUtilities
{
- public static void AddRange(IList to, IEnumerable range)
- {
- foreach (object o in range)
- {
- to.Add(o);
- }
- }
-
- public static void CollectMatches<T>(ICollection<T> matches, ISelector<T> selector, params IStore<T>[] stores)
- {
- CollectMatches(matches, selector, stores);
- }
-
public static void CollectMatches<T>(ICollection<T> matches, ISelector<T> selector,
IEnumerable<IStore<T>> stores)
{
@@ -45,6 +31,12 @@ namespace Org.BouncyCastle.Utilities.Collections
return new StoreImpl<T>(contents);
}
+ public static T GetValueOrKey<T>(IDictionary<T, T> d, T k)
+ where T : class
+ {
+ return d.TryGetValue(k, out var v) ? v : k;
+ }
+
public static V GetValueOrNull<K, V>(IDictionary<K, V> d, K k)
where V : class
{
@@ -56,14 +48,14 @@ namespace Org.BouncyCastle.Utilities.Collections
return new EnumerableProxy<T>(e);
}
- public static IDictionary ReadOnly(IDictionary d)
+ public static ICollection<T> ReadOnly<T>(ICollection<T> c)
{
- return new UnmodifiableDictionaryProxy(d);
+ return new ReadOnlyCollectionProxy<T>(c);
}
- public static IList ReadOnly(IList l)
+ public static IDictionary<K, V> ReadOnly<K, V>(IDictionary<K, V> d)
{
- return new UnmodifiableListProxy(l);
+ return new ReadOnlyDictionaryProxy<K, V>(d);
}
public static IList<T> ReadOnly<T>(IList<T> l)
@@ -71,9 +63,9 @@ namespace Org.BouncyCastle.Utilities.Collections
return new ReadOnlyListProxy<T>(l);
}
- public static ISet ReadOnly(ISet s)
+ public static ISet<T> ReadOnly<T>(ISet<T> s)
{
- return new UnmodifiableSetProxy(s);
+ return new ReadOnlySetProxy<T>(s);
}
public static bool Remove<K, V>(IDictionary<K, V> d, K k, out V v)
@@ -85,7 +77,7 @@ namespace Org.BouncyCastle.Utilities.Collections
return true;
}
- public static object RequireNext(IEnumerator e)
+ public static T RequireNext<T>(IEnumerator<T> e)
{
if (!e.MoveNext())
throw new InvalidOperationException();
diff --git a/crypto/src/util/collections/EmptyEnumerable.cs b/crypto/src/util/collections/EmptyEnumerable.cs
deleted file mode 100644
index a61a0789a..000000000
--- a/crypto/src/util/collections/EmptyEnumerable.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using System;
-using System.Collections;
-
-namespace Org.BouncyCastle.Utilities.Collections
-{
- public sealed class EmptyEnumerable
- : IEnumerable
- {
- public static readonly IEnumerable Instance = new EmptyEnumerable();
-
- private EmptyEnumerable()
- {
- }
-
- public IEnumerator GetEnumerator()
- {
- return EmptyEnumerator.Instance;
- }
- }
-
- public sealed class EmptyEnumerator
- : IEnumerator
- {
- public static readonly IEnumerator Instance = new EmptyEnumerator();
-
- private EmptyEnumerator()
- {
- }
-
- public bool MoveNext()
- {
- return false;
- }
-
- public void Reset()
- {
- }
-
- public object Current
- {
- get { throw new InvalidOperationException("No elements"); }
- }
- }
-}
diff --git a/crypto/src/util/collections/EnumerableProxy.cs b/crypto/src/util/collections/EnumerableProxy.cs
index 36f78d342..1d97b8f22 100644
--- a/crypto/src/util/collections/EnumerableProxy.cs
+++ b/crypto/src/util/collections/EnumerableProxy.cs
@@ -1,50 +1,29 @@
using System;
-using System.Collections;
using System.Collections.Generic;
namespace Org.BouncyCastle.Utilities.Collections
{
- public sealed class EnumerableProxy
- : IEnumerable
- {
- private readonly IEnumerable inner;
-
- public EnumerableProxy(
- IEnumerable inner)
- {
- if (inner == null)
- throw new ArgumentNullException("inner");
-
- this.inner = inner;
- }
-
- public IEnumerator GetEnumerator()
- {
- return inner.GetEnumerator();
- }
- }
-
internal sealed class EnumerableProxy<T>
: IEnumerable<T>
{
- private readonly IEnumerable<T> m_inner;
+ private readonly IEnumerable<T> m_target;
- internal EnumerableProxy(IEnumerable<T> inner)
+ internal EnumerableProxy(IEnumerable<T> target)
{
- if (inner == null)
- throw new ArgumentNullException("inner");
+ if (target == null)
+ throw new ArgumentNullException(nameof(target));
- m_inner = inner;
+ m_target = target;
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
- return m_inner.GetEnumerator();
+ return m_target.GetEnumerator();
}
public IEnumerator<T> GetEnumerator()
{
- return m_inner.GetEnumerator();
+ return m_target.GetEnumerator();
}
}
}
diff --git a/crypto/src/util/collections/HashSet.cs b/crypto/src/util/collections/HashSet.cs
deleted file mode 100644
index 1facb58e3..000000000
--- a/crypto/src/util/collections/HashSet.cs
+++ /dev/null
@@ -1,99 +0,0 @@
-using System;
-using System.Collections;
-
-namespace Org.BouncyCastle.Utilities.Collections
-{
- public class HashSet
- : ISet
- {
- private readonly IDictionary impl = Platform.CreateHashtable();
-
- public HashSet()
- {
- }
-
- public HashSet(IEnumerable s)
- {
- foreach (object o in s)
- {
- Add(o);
- }
- }
-
- public virtual void Add(object o)
- {
- impl[o] = null;
- }
-
- public virtual void AddAll(IEnumerable e)
- {
- foreach (object o in e)
- {
- Add(o);
- }
- }
-
- public virtual void Clear()
- {
- impl.Clear();
- }
-
- public virtual bool Contains(object o)
- {
- return impl.Contains(o);
- }
-
- public virtual void CopyTo(Array array, int index)
- {
- impl.Keys.CopyTo(array, index);
- }
-
- public virtual int Count
- {
- get { return impl.Count; }
- }
-
- public virtual IEnumerator GetEnumerator()
- {
- return impl.Keys.GetEnumerator();
- }
-
- public virtual bool IsEmpty
- {
- get { return impl.Count == 0; }
- }
-
- public virtual bool IsFixedSize
- {
- get { return impl.IsFixedSize; }
- }
-
- public virtual bool IsReadOnly
- {
- get { return impl.IsReadOnly; }
- }
-
- public virtual bool IsSynchronized
- {
- get { return impl.IsSynchronized; }
- }
-
- public virtual void Remove(object o)
- {
- impl.Remove(o);
- }
-
- public virtual void RemoveAll(IEnumerable e)
- {
- foreach (object o in e)
- {
- Remove(o);
- }
- }
-
- public virtual object SyncRoot
- {
- get { return impl.SyncRoot; }
- }
- }
-}
diff --git a/crypto/src/util/collections/ISet.cs b/crypto/src/util/collections/ISet.cs
deleted file mode 100644
index 1f8edba40..000000000
--- a/crypto/src/util/collections/ISet.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using System;
-using System.Collections;
-
-namespace Org.BouncyCastle.Utilities.Collections
-{
- public interface ISet
- : ICollection
- {
- void Add(object o);
- void AddAll(IEnumerable e);
- void Clear();
- bool Contains(object o);
- bool IsEmpty { get; }
- bool IsFixedSize { get; }
- bool IsReadOnly { get; }
- void Remove(object o);
- void RemoveAll(IEnumerable e);
- }
-}
diff --git a/crypto/src/util/collections/ReadOnlyCollection.cs b/crypto/src/util/collections/ReadOnlyCollection.cs
new file mode 100644
index 000000000..a44491d0b
--- /dev/null
+++ b/crypto/src/util/collections/ReadOnlyCollection.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+
+namespace Org.BouncyCastle.Utilities.Collections
+{
+ internal abstract class ReadOnlyCollection<T>
+ : ICollection<T>
+ {
+ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+ {
+ return GetEnumerator();
+ }
+
+ public bool IsReadOnly => true;
+
+ public void Add(T item) => throw new NotSupportedException();
+ public void Clear() => throw new NotSupportedException();
+ public bool Remove(T item) => throw new NotSupportedException();
+
+ public abstract bool Contains(T item);
+ public abstract int Count { get; }
+ public abstract void CopyTo(T[] array, int arrayIndex);
+ public abstract IEnumerator<T> GetEnumerator();
+ }
+
+ internal class ReadOnlyCollectionProxy<T>
+ : ReadOnlyCollection<T>
+ {
+ private readonly ICollection<T> m_target;
+
+ internal ReadOnlyCollectionProxy(ICollection<T> target)
+ {
+ if (target == null)
+ throw new ArgumentNullException(nameof(target));
+
+ m_target = target;
+ }
+
+ public override bool Contains(T item) => m_target.Contains(item);
+ public override int Count => m_target.Count;
+ public override void CopyTo(T[] array, int arrayIndex) => m_target.CopyTo(array, arrayIndex);
+ public override IEnumerator<T> GetEnumerator() => m_target.GetEnumerator();
+ }
+}
diff --git a/crypto/src/util/collections/ReadOnlyDictionary.cs b/crypto/src/util/collections/ReadOnlyDictionary.cs
new file mode 100644
index 000000000..f87bcc506
--- /dev/null
+++ b/crypto/src/util/collections/ReadOnlyDictionary.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+
+namespace Org.BouncyCastle.Utilities.Collections
+{
+ internal abstract class ReadOnlyDictionary<K, V>
+ : IDictionary<K, V>
+ {
+ public V this[K key]
+ {
+ get { return Lookup(key); }
+ set { throw new NotSupportedException(); }
+ }
+
+ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+ {
+ return GetEnumerator();
+ }
+
+ public bool IsReadOnly => true;
+
+ public void Add(K key, V value) => throw new NotSupportedException();
+ public void Add(KeyValuePair<K, V> item) => throw new NotSupportedException();
+ public void Clear() => throw new NotSupportedException();
+ public bool Remove(K key) => throw new NotSupportedException();
+ public bool Remove(KeyValuePair<K, V> item) => throw new NotSupportedException();
+
+ public abstract bool Contains(KeyValuePair<K, V> item);
+ public abstract bool ContainsKey(K key);
+ public abstract void CopyTo(KeyValuePair<K, V>[] array, int arrayIndex);
+ public abstract int Count { get; }
+ public abstract IEnumerator<KeyValuePair<K, V>> GetEnumerator();
+ public abstract ICollection<K> Keys { get; }
+ public abstract bool TryGetValue(K key, out V value);
+ public abstract ICollection<V> Values { get; }
+
+ protected abstract V Lookup(K key);
+ }
+
+ internal class ReadOnlyDictionaryProxy<K, V>
+ : ReadOnlyDictionary<K, V>
+ {
+ private readonly IDictionary<K, V> m_target;
+
+ internal ReadOnlyDictionaryProxy(IDictionary<K, V> target)
+ {
+ if (target == null)
+ throw new ArgumentNullException(nameof(target));
+
+ m_target = target;
+ }
+
+ public override bool Contains(KeyValuePair<K, V> item) => m_target.Contains(item);
+ public override bool ContainsKey(K key) => m_target.ContainsKey(key);
+ public override void CopyTo(KeyValuePair<K, V>[] array, int arrayIndex) => m_target.CopyTo(array, arrayIndex);
+ public override int Count => m_target.Count;
+ public override IEnumerator<KeyValuePair<K, V>> GetEnumerator() => m_target.GetEnumerator();
+ public override ICollection<K> Keys => new ReadOnlyCollectionProxy<K>(m_target.Keys);
+ public override bool TryGetValue(K key, out V value) => m_target.TryGetValue(key, out value);
+ public override ICollection<V> Values => new ReadOnlyCollectionProxy<V>(m_target.Values);
+
+ protected override V Lookup(K key) => m_target[key];
+ }
+}
diff --git a/crypto/src/util/collections/ReadOnlyList.cs b/crypto/src/util/collections/ReadOnlyList.cs
index 707c73bfd..c4d367c47 100644
--- a/crypto/src/util/collections/ReadOnlyList.cs
+++ b/crypto/src/util/collections/ReadOnlyList.cs
@@ -25,10 +25,10 @@ namespace Org.BouncyCastle.Utilities.Collections
public bool Remove(T item) => throw new NotSupportedException();
public void RemoveAt(int index) => throw new NotSupportedException();
- public abstract int Count { get; }
public abstract bool Contains(T item);
public abstract void CopyTo(T[] array, int arrayIndex);
+ public abstract int Count { get; }
public abstract IEnumerator<T> GetEnumerator();
public abstract int IndexOf(T item);
@@ -42,6 +42,9 @@ namespace Org.BouncyCastle.Utilities.Collections
internal ReadOnlyListProxy(IList<T> target)
{
+ if (target == null)
+ throw new ArgumentNullException(nameof(target));
+
m_target = target;
}
diff --git a/crypto/src/util/collections/ReadOnlySet.cs b/crypto/src/util/collections/ReadOnlySet.cs
new file mode 100644
index 000000000..36c198f07
--- /dev/null
+++ b/crypto/src/util/collections/ReadOnlySet.cs
@@ -0,0 +1,61 @@
+using System;
+using System.Collections.Generic;
+
+namespace Org.BouncyCastle.Utilities.Collections
+{
+ internal abstract class ReadOnlySet<T>
+ : ISet<T>
+ {
+ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+ {
+ return GetEnumerator();
+ }
+
+ public bool IsReadOnly => true;
+
+ void ICollection<T>.Add(T item) => throw new NotSupportedException();
+
+ public bool Add(T item) => throw new NotSupportedException();
+ public void Clear() => throw new NotSupportedException();
+ public void ExceptWith(IEnumerable<T> other) => throw new NotSupportedException();
+ public void IntersectWith(IEnumerable<T> other) => throw new NotSupportedException();
+ public bool Remove(T item) => throw new NotSupportedException();
+ public bool SetEquals(IEnumerable<T> other) => throw new NotSupportedException();
+ public void SymmetricExceptWith(IEnumerable<T> other) => throw new NotSupportedException();
+ public void UnionWith(IEnumerable<T> other) => throw new NotSupportedException();
+
+ public abstract bool Contains(T item);
+ public abstract void CopyTo(T[] array, int arrayIndex);
+ public abstract int Count { get; }
+ public abstract IEnumerator<T> GetEnumerator();
+ public abstract bool IsProperSubsetOf(IEnumerable<T> other);
+ public abstract bool IsProperSupersetOf(IEnumerable<T> other);
+ public abstract bool IsSubsetOf(IEnumerable<T> other);
+ public abstract bool IsSupersetOf(IEnumerable<T> other);
+ public abstract bool Overlaps(IEnumerable<T> other);
+ }
+
+ internal class ReadOnlySetProxy<T>
+ : ReadOnlySet<T>
+ {
+ private readonly ISet<T> m_target;
+
+ internal ReadOnlySetProxy(ISet<T> target)
+ {
+ if (target == null)
+ throw new ArgumentNullException(nameof(target));
+
+ m_target = target;
+ }
+
+ public override bool Contains(T item) => m_target.Contains(item);
+ public override void CopyTo(T[] array, int arrayIndex) => m_target.CopyTo(array, arrayIndex);
+ public override int Count => m_target.Count;
+ public override IEnumerator<T> GetEnumerator() => m_target.GetEnumerator();
+ public override bool IsProperSubsetOf(IEnumerable<T> other) => m_target.IsProperSubsetOf(other);
+ public override bool IsProperSupersetOf(IEnumerable<T> other) => m_target.IsProperSupersetOf(other);
+ public override bool IsSubsetOf(IEnumerable<T> other) => m_target.IsSubsetOf(other);
+ public override bool IsSupersetOf(IEnumerable<T> other) => m_target.IsSupersetOf(other);
+ public override bool Overlaps(IEnumerable<T> other) => m_target.Overlaps(other);
+ }
+}
diff --git a/crypto/src/util/collections/UnmodifiableDictionary.cs b/crypto/src/util/collections/UnmodifiableDictionary.cs
deleted file mode 100644
index 3b4ba22ae..000000000
--- a/crypto/src/util/collections/UnmodifiableDictionary.cs
+++ /dev/null
@@ -1,64 +0,0 @@
-using System;
-using System.Collections;
-
-namespace Org.BouncyCastle.Utilities.Collections
-{
- public abstract class UnmodifiableDictionary
- : IDictionary
- {
- protected UnmodifiableDictionary()
- {
- }
-
- public virtual void Add(object k, object v)
- {
- throw new NotSupportedException();
- }
-
- public virtual void Clear()
- {
- throw new NotSupportedException();
- }
-
- public abstract bool Contains(object k);
-
- public abstract void CopyTo(Array array, int index);
-
- public abstract int Count { get; }
-
- System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
- {
- return GetEnumerator();
- }
-
- public abstract IDictionaryEnumerator GetEnumerator();
-
- public virtual void Remove(object k)
- {
- throw new NotSupportedException();
- }
-
- public abstract bool IsFixedSize { get; }
-
- public virtual bool IsReadOnly
- {
- get { return true; }
- }
-
- public abstract bool IsSynchronized { get; }
-
- public abstract object SyncRoot { get; }
-
- public abstract ICollection Keys { get; }
-
- public abstract ICollection Values { get; }
-
- public virtual object this[object k]
- {
- get { return GetValue(k); }
- set { throw new NotSupportedException(); }
- }
-
- protected abstract object GetValue(object k);
- }
-}
diff --git a/crypto/src/util/collections/UnmodifiableDictionaryProxy.cs b/crypto/src/util/collections/UnmodifiableDictionaryProxy.cs
deleted file mode 100644
index 0fca909a3..000000000
--- a/crypto/src/util/collections/UnmodifiableDictionaryProxy.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-using System;
-using System.Collections;
-
-namespace Org.BouncyCastle.Utilities.Collections
-{
- public class UnmodifiableDictionaryProxy
- : UnmodifiableDictionary
- {
- private readonly IDictionary d;
-
- public UnmodifiableDictionaryProxy(IDictionary d)
- {
- this.d = d;
- }
-
- public override bool Contains(object k)
- {
- return d.Contains(k);
- }
-
- public override void CopyTo(Array array, int index)
- {
- d.CopyTo(array, index);
- }
-
- public override int Count
- {
- get { return d.Count; }
- }
-
- public override IDictionaryEnumerator GetEnumerator()
- {
- return d.GetEnumerator();
- }
-
- public override bool IsFixedSize
- {
- get { return d.IsFixedSize; }
- }
-
- public override bool IsSynchronized
- {
- get { return d.IsSynchronized; }
- }
-
- public override object SyncRoot
- {
- get { return d.SyncRoot; }
- }
-
- public override ICollection Keys
- {
- get { return d.Keys; }
- }
-
- public override ICollection Values
- {
- get { return d.Values; }
- }
-
- protected override object GetValue(object k)
- {
- return d[k];
- }
- }
-}
diff --git a/crypto/src/util/collections/UnmodifiableList.cs b/crypto/src/util/collections/UnmodifiableList.cs
deleted file mode 100644
index 28e49eac3..000000000
--- a/crypto/src/util/collections/UnmodifiableList.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-using System;
-using System.Collections;
-
-namespace Org.BouncyCastle.Utilities.Collections
-{
- public abstract class UnmodifiableList
- : IList
- {
- protected UnmodifiableList()
- {
- }
-
- public virtual int Add(object o)
- {
- throw new NotSupportedException();
- }
-
- public virtual void Clear()
- {
- throw new NotSupportedException();
- }
-
- public abstract bool Contains(object o);
-
- public abstract void CopyTo(Array array, int index);
-
- public abstract int Count { get; }
-
- public abstract IEnumerator GetEnumerator();
-
- public abstract int IndexOf(object o);
-
- public virtual void Insert(int i, object o)
- {
- throw new NotSupportedException();
- }
-
- public abstract bool IsFixedSize { get; }
-
- public virtual bool IsReadOnly
- {
- get { return true; }
- }
-
- public abstract bool IsSynchronized { get; }
-
- public virtual void Remove(object o)
- {
- throw new NotSupportedException();
- }
-
- public virtual void RemoveAt(int i)
- {
- throw new NotSupportedException();
- }
-
- public abstract object SyncRoot { get; }
-
- public virtual object this[int i]
- {
- get { return GetValue(i); }
- set { throw new NotSupportedException(); }
- }
-
- protected abstract object GetValue(int i);
- }
-}
diff --git a/crypto/src/util/collections/UnmodifiableListProxy.cs b/crypto/src/util/collections/UnmodifiableListProxy.cs
deleted file mode 100644
index 9d00737ef..000000000
--- a/crypto/src/util/collections/UnmodifiableListProxy.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-using System;
-using System.Collections;
-
-namespace Org.BouncyCastle.Utilities.Collections
-{
- public class UnmodifiableListProxy
- : UnmodifiableList
- {
- private readonly IList l;
-
- public UnmodifiableListProxy(IList l)
- {
- this.l = l;
- }
-
- public override bool Contains(object o)
- {
- return l.Contains(o);
- }
-
- public override void CopyTo(Array array, int index)
- {
- l.CopyTo(array, index);
- }
-
- public override int Count
- {
- get { return l.Count; }
- }
-
- public override IEnumerator GetEnumerator()
- {
- return l.GetEnumerator();
- }
-
- public override int IndexOf(object o)
- {
- return l.IndexOf(o);
- }
-
- public override bool IsFixedSize
- {
- get { return l.IsFixedSize; }
- }
-
- public override bool IsSynchronized
- {
- get { return l.IsSynchronized; }
- }
-
- public override object SyncRoot
- {
- get { return l.SyncRoot; }
- }
-
- protected override object GetValue(int i)
- {
- return l[i];
- }
- }
-}
diff --git a/crypto/src/util/collections/UnmodifiableSet.cs b/crypto/src/util/collections/UnmodifiableSet.cs
deleted file mode 100644
index 8792815ac..000000000
--- a/crypto/src/util/collections/UnmodifiableSet.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-using System;
-using System.Collections;
-
-namespace Org.BouncyCastle.Utilities.Collections
-{
- public abstract class UnmodifiableSet
- : ISet
- {
- protected UnmodifiableSet()
- {
- }
-
- public virtual void Add(object o)
- {
- throw new NotSupportedException();
- }
-
- public virtual void AddAll(IEnumerable e)
- {
- throw new NotSupportedException();
- }
-
- public virtual void Clear()
- {
- throw new NotSupportedException();
- }
-
- public abstract bool Contains(object o);
-
- public abstract void CopyTo(Array array, int index);
-
- public abstract int Count { get; }
-
- public abstract IEnumerator GetEnumerator();
-
- public abstract bool IsEmpty { get; }
-
- public abstract bool IsFixedSize { get; }
-
- public virtual bool IsReadOnly
- {
- get { return true; }
- }
-
- public abstract bool IsSynchronized { get; }
-
- public abstract object SyncRoot { get; }
-
- public virtual void Remove(object o)
- {
- throw new NotSupportedException();
- }
-
- public virtual void RemoveAll(IEnumerable e)
- {
- throw new NotSupportedException();
- }
- }
-}
diff --git a/crypto/src/util/collections/UnmodifiableSetProxy.cs b/crypto/src/util/collections/UnmodifiableSetProxy.cs
deleted file mode 100644
index e119e2957..000000000
--- a/crypto/src/util/collections/UnmodifiableSetProxy.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-using System;
-using System.Collections;
-
-namespace Org.BouncyCastle.Utilities.Collections
-{
- public class UnmodifiableSetProxy
- : UnmodifiableSet
- {
- private readonly ISet s;
-
- public UnmodifiableSetProxy (ISet s)
- {
- this.s = s;
- }
-
- public override bool Contains(object o)
- {
- return s.Contains(o);
- }
-
- public override void CopyTo(Array array, int index)
- {
- s.CopyTo(array, index);
- }
-
- public override int Count
- {
- get { return s.Count; }
- }
-
- public override IEnumerator GetEnumerator()
- {
- return s.GetEnumerator();
- }
-
- public override bool IsEmpty
- {
- get { return s.IsEmpty; }
- }
-
- public override bool IsFixedSize
- {
- get { return s.IsFixedSize; }
- }
-
- public override bool IsSynchronized
- {
- get { return s.IsSynchronized; }
- }
-
- public override object SyncRoot
- {
- get { return s.SyncRoot; }
- }
- }
-}
diff --git a/crypto/src/util/io/pem/PemObject.cs b/crypto/src/util/io/pem/PemObject.cs
index fce429f39..2a152f81d 100644
--- a/crypto/src/util/io/pem/PemObject.cs
+++ b/crypto/src/util/io/pem/PemObject.cs
@@ -1,26 +1,24 @@
using System;
-using System.Collections;
-
-using Org.BouncyCastle.Utilities.Collections;
+using System.Collections.Generic;
namespace Org.BouncyCastle.Utilities.IO.Pem
{
public class PemObject
: PemObjectGenerator
{
- private string type;
- private IList headers;
- private byte[] content;
+ private string type;
+ private IList<PemHeader> headers;
+ private byte[] content;
public PemObject(string type, byte[] content)
- : this(type, Platform.CreateArrayList(), content)
+ : this(type, new List<PemHeader>(), content)
{
}
- public PemObject(string type, IList headers, byte[] content)
+ public PemObject(string type, IList<PemHeader> headers, byte[] content)
{
this.type = type;
- this.headers = Platform.CreateArrayList(headers);
+ this.headers = new List<PemHeader>(headers);
this.content = content;
}
@@ -29,7 +27,7 @@ namespace Org.BouncyCastle.Utilities.IO.Pem
get { return type; }
}
- public IList Headers
+ public IList<PemHeader> Headers
{
get { return headers; }
}
diff --git a/crypto/src/util/io/pem/PemReader.cs b/crypto/src/util/io/pem/PemReader.cs
index a32ca8181..cd19e95b8 100644
--- a/crypto/src/util/io/pem/PemReader.cs
+++ b/crypto/src/util/io/pem/PemReader.cs
@@ -1,8 +1,7 @@
using System;
-using System.Collections;
+using System.Collections.Generic;
using System.IO;
-
using Org.BouncyCastle.Utilities.Encoders;
namespace Org.BouncyCastle.Utilities.IO.Pem
@@ -13,11 +12,9 @@ namespace Org.BouncyCastle.Utilities.IO.Pem
private readonly TextReader reader;
private readonly MemoryStream buffer;
private readonly StreamWriter textBuffer;
- private readonly IList pushback = Platform.CreateArrayList();
+ private readonly List<int> pushback = new List<int>();
int c = 0;
-
-
public PemReader(TextReader reader)
{
if (reader == null)
@@ -47,7 +44,7 @@ namespace Org.BouncyCastle.Utilities.IO.Pem
// Look for BEGIN
//
- for (; ; )
+ for (;;)
{
// Seek a leading dash, ignore anything up to that point.
@@ -107,7 +104,7 @@ namespace Org.BouncyCastle.Utilities.IO.Pem
// Look for a colon for up to 64 characters, as an indication there might be a header.
//
- IList headers = Platform.CreateArrayList();
+ var headers = new List<PemHeader>();
while (seekColon(64))
{
@@ -227,7 +224,7 @@ namespace Org.BouncyCastle.Utilities.IO.Pem
{
c = 0;
bool colonFound = false;
- IList read = Platform.CreateArrayList();
+ var read = new List<int>();
for (; upTo>=0 && c >=0; upTo--)
{
@@ -308,7 +305,6 @@ namespace Org.BouncyCastle.Utilities.IO.Pem
return true;
}
-
/// <summary>
/// Consume until dash.
@@ -338,8 +334,6 @@ namespace Org.BouncyCastle.Utilities.IO.Pem
return c > -1;
}
-
-
private void PushBack(int value)
{
if (pushback.Count == 0)
@@ -351,21 +345,16 @@ namespace Org.BouncyCastle.Utilities.IO.Pem
}
}
-
private int Read()
{
- if (pushback.Count>0)
+ if (pushback.Count > 0)
{
- int i = (int)pushback[0];
+ int i = pushback[0];
pushback.RemoveAt(0);
return i;
}
return reader.Read();
}
-
-
-
-
}
}
diff --git a/crypto/src/util/io/pem/PemWriter.cs b/crypto/src/util/io/pem/PemWriter.cs
index e85b31543..87968a727 100644
--- a/crypto/src/util/io/pem/PemWriter.cs
+++ b/crypto/src/util/io/pem/PemWriter.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections;
using System.IO;
using Org.BouncyCastle.Utilities.Encoders;
|