diff --git a/crypto/crypto.csproj b/crypto/crypto.csproj
index cdb48bfff..a1e217aca 100644
--- a/crypto/crypto.csproj
+++ b/crypto/crypto.csproj
@@ -6769,6 +6769,11 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "src\util\TypeExtensions.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "src\util\collections\CollectionUtilities.cs"
SubType = "Code"
BuildAction = "Compile"
diff --git a/crypto/src/asn1/DerGeneralizedTime.cs b/crypto/src/asn1/DerGeneralizedTime.cs
index 152596678..17c42e7cf 100644
--- a/crypto/src/asn1/DerGeneralizedTime.cs
+++ b/crypto/src/asn1/DerGeneralizedTime.cs
@@ -83,7 +83,11 @@ namespace Org.BouncyCastle.Asn1
public DerGeneralizedTime(
DateTime time)
{
+#if PORTABLE
+ this.time = time.ToUniversalTime().ToString(@"yyyyMMddHHmmss\Z");
+#else
this.time = time.ToString(@"yyyyMMddHHmmss\Z");
+#endif
}
internal DerGeneralizedTime(
diff --git a/crypto/src/asn1/DerUTCTime.cs b/crypto/src/asn1/DerUTCTime.cs
index ab8ca792d..639a2d4f4 100644
--- a/crypto/src/asn1/DerUTCTime.cs
+++ b/crypto/src/asn1/DerUTCTime.cs
@@ -86,7 +86,11 @@ namespace Org.BouncyCastle.Asn1
public DerUtcTime(
DateTime time)
{
+#if PORTABLE
+ this.time = time.ToUniversalTime().ToString("yyMMddHHmmss", CultureInfo.InvariantCulture) + "Z";
+#else
this.time = time.ToString("yyMMddHHmmss", CultureInfo.InvariantCulture) + "Z";
+#endif
}
internal DerUtcTime(
diff --git a/crypto/src/asn1/x509/Time.cs b/crypto/src/asn1/x509/Time.cs
index 8350339bb..ffe293521 100644
--- a/crypto/src/asn1/x509/Time.cs
+++ b/crypto/src/asn1/x509/Time.cs
@@ -34,7 +34,11 @@ namespace Org.BouncyCastle.Asn1.X509
public Time(
DateTime date)
{
+#if PORTABLE
+ string d = date.ToUniversalTime().ToString("yyyyMMddHHmmss", CultureInfo.InvariantCulture) + "Z";
+#else
string d = date.ToString("yyyyMMddHHmmss", CultureInfo.InvariantCulture) + "Z";
+#endif
int year = int.Parse(d.Substring(0, 4));
diff --git a/crypto/src/util/Enums.cs b/crypto/src/util/Enums.cs
index 25b218667..660bbe73f 100644
--- a/crypto/src/util/Enums.cs
+++ b/crypto/src/util/Enums.cs
@@ -14,7 +14,11 @@ namespace Org.BouncyCastle.Utilities
{
internal static Enum GetEnumValue(System.Type enumType, string s)
{
+#if NEW_REFLECTION
+ if (!enumType.GetTypeInfo().IsEnum)
+#else
if (!enumType.IsEnum)
+#endif
throw new ArgumentException("Not an enumeration type", "enumType");
// We only want to parse single named constants
@@ -39,10 +43,14 @@ namespace Org.BouncyCastle.Utilities
internal static Array GetEnumValues(System.Type enumType)
{
+#if NEW_REFLECTION
+ if (!enumType.GetTypeInfo().IsEnum)
+#else
if (!enumType.IsEnum)
+#endif
throw new ArgumentException("Not an enumeration type", "enumType");
-#if NETCF_1_0 || NETCF_2_0 || SILVERLIGHT || PORTABLE
+#if NETCF_1_0 || NETCF_2_0 || SILVERLIGHT
IList result = Platform.CreateArrayList();
FieldInfo[] fields = enumType.GetFields(BindingFlags.Static | BindingFlags.Public);
foreach (FieldInfo field in fields)
diff --git a/crypto/src/util/Platform.cs b/crypto/src/util/Platform.cs
index 82446b296..d4b18f182 100644
--- a/crypto/src/util/Platform.cs
+++ b/crypto/src/util/Platform.cs
@@ -34,6 +34,8 @@ namespace Org.BouncyCastle.Utilities
{
#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);
#else
diff --git a/crypto/src/util/TypeExtensions.cs b/crypto/src/util/TypeExtensions.cs
new file mode 100644
index 000000000..203d0a605
--- /dev/null
+++ b/crypto/src/util/TypeExtensions.cs
@@ -0,0 +1,17 @@
+#if NEW_REFLECTION
+
+using System;
+using System.Reflection;
+
+namespace Org.BouncyCastle.Utilities
+{
+ internal static class TypeExtensions
+ {
+ public static bool IsInstanceOfType(this Type type, object instance)
+ {
+ return instance != null && type.GetTypeInfo().IsAssignableFrom(instance.GetType().GetTypeInfo());
+ }
+ }
+}
+
+#endif
diff --git a/crypto/test/src/util/test/SimpleTest.cs b/crypto/test/src/util/test/SimpleTest.cs
index 84a7ce02b..1cf9aa16f 100644
--- a/crypto/test/src/util/test/SimpleTest.cs
+++ b/crypto/test/src/util/test/SimpleTest.cs
@@ -115,11 +115,10 @@ namespace Org.BouncyCastle.Utilities.Test
private static string GetFullName(
string name)
{
-// TODO MonoDevelop/Visual Studio embedded resource ids still inconsistent
-#if BC_BUILD_MONODEVELOP
- return "test.data." + name;
+#if PORTABLE
+ return "crypto.tests." + name;
#else
- return "crypto.test.data." + name;
+ return "crypto.test.data." + name;
#endif
}
@@ -127,10 +126,10 @@ namespace Org.BouncyCastle.Utilities.Test
string fullName)
{
// TODO MonoDevelop/Visual Studio embedded resource ids still inconsistent
-#if BC_BUILD_MONODEVELOP
- return fullName.Substring("test.data.".Length);
+#if PORTABLE
+ return fullName.Substring("crypto.tests.".Length);
#else
- return fullName.Substring("crypto.test.data.".Length);
+ return fullName.Substring("crypto.test.data.".Length);
#endif
}
|