summary refs log tree commit diff
path: root/crypto/src/util/Platform.cs
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/src/util/Platform.cs')
-rw-r--r--crypto/src/util/Platform.cs34
1 files changed, 26 insertions, 8 deletions
diff --git a/crypto/src/util/Platform.cs b/crypto/src/util/Platform.cs
index d4b18f182..361fe7536 100644
--- a/crypto/src/util/Platform.cs
+++ b/crypto/src/util/Platform.cs
@@ -13,6 +13,8 @@ namespace Org.BouncyCastle.Utilities
 {
     internal abstract class Platform
     {
+        private static readonly CompareInfo InvariantCompareInfo = CultureInfo.InvariantCulture.CompareInfo;
+
 #if NETCF_1_0 || NETCF_2_0
         private static string GetNewLine()
         {
@@ -30,16 +32,12 @@ namespace Org.BouncyCastle.Utilities
         }
 #endif
 
-        internal static int CompareIgnoreCase(string a, string b)
+        internal static bool EqualsIgnoreCase(string a, string b)
         {
-#if SILVERLIGHT
-            return String.Compare(a, b, StringComparison.InvariantCultureIgnoreCase);
-#elif SYS_RUNTIME
-            return String.Compare(a, b, StringComparison.OrdinalIgnoreCase);
-#elif PORTABLE
-            return String.Compare(a, b, CultureInfo.InvariantCulture, CompareOptions.IgnoreCase);
+#if PORTABLE
+            return String.Equals(a, b, StringComparison.OrdinalIgnoreCase);
 #else
-            return String.Compare(a, b, true);
+            return ToUpperInvariant(a) == ToUpperInvariant(b);
 #endif
         }
 
@@ -202,5 +200,25 @@ namespace Org.BouncyCastle.Utilities
             t.Close();
         }
 #endif
+
+        internal static int IndexOf(string source, string value)
+        {
+            return InvariantCompareInfo.IndexOf(source, value, CompareOptions.Ordinal);
+        }
+
+        internal static int LastIndexOf(string source, string value)
+        {
+            return InvariantCompareInfo.LastIndexOf(source, value, CompareOptions.Ordinal);
+        }
+
+        internal static bool StartsWith(string source, string prefix)
+        {
+            return InvariantCompareInfo.IsPrefix(source, prefix, CompareOptions.Ordinal);
+        }
+
+        internal static bool EndsWith(string source, string suffix)
+        {
+            return InvariantCompareInfo.IsSuffix(source, suffix, CompareOptions.Ordinal);
+        }
     }
 }