Index: mono-2.6.7/mcs/class/Mono.Security/Mono.Security.X509/X509Certificate.cs
===================================================================
--- mono-2.6.7.orig/mcs/class/Mono.Security/Mono.Security.X509/X509Certificate.cs
+++ mono-2.6.7/mcs/class/Mono.Security/Mono.Security.X509/X509Certificate.cs
@@ -301,12 +301,28 @@ namespace Mono.Security.X509 {
 						case "1.2.840.113549.1.1.4":	// MD5 with RSA encryption 
 							hash = MD5.Create ();
 							break;
+						case "1.2.840.113549.1.1.11":   // SHA-256 with RSA Encryption
+							hash = SHA256.Create ();
+							break;
+						case "1.2.840.113549.1.1.12":   // SHA-384 with RSA Encryption
+							hash = SHA384.Create ();
+							break;
+						case "1.2.840.113549.1.1.13":   // SHA-512 with RSA Encryption
+							hash = SHA512.Create ();
+							break;
+							/*
+						case "1.3.36.3.3.1.2":
+			                                hash = RIPEMD160.Create ();
+							break;
+							*/
+	
 						case "1.2.840.113549.1.1.5":	// SHA-1 with RSA Encryption 
 						case "1.3.14.3.2.29":		// SHA1 with RSA signature 
 						case "1.2.840.10040.4.3":	// SHA1-1 with DSA
 							hash = SHA1.Create ();
 							break;
 						default:
+							throw new CryptographicException ("Unsupported hash algorithm: " + m_signaturealgo);
 							return null;
 					}
 					if ((decoder == null) || (decoder.Count < 1))
@@ -403,6 +419,9 @@ namespace Mono.Security.X509 {
 					case "1.2.840.113549.1.1.2":	// MD2 with RSA encryption 
 					case "1.2.840.113549.1.1.4":	// MD5 with RSA encryption 
 					case "1.2.840.113549.1.1.5":	// SHA-1 with RSA Encryption 
+					case "1.2.840.113549.1.1.11":   // SHA-256 with RSA Encryption
+					case "1.2.840.113549.1.1.12":   // SHA-384 with RSA Encryption
+					case "1.2.840.113549.1.1.13":   // SHA-512 with RSA Encryption
 					case "1.3.14.3.2.29":		// SHA1 with RSA signature
 						return (byte[]) signature.Clone ();
 
@@ -511,6 +530,15 @@ namespace Mono.Security.X509 {
 				case "1.3.14.3.2.29":
 					v.SetHashAlgorithm ("SHA1");
 					break;
+				case "1.2.840.113549.1.1.11":   // SHA-256 with RSA Encryption
+					v.SetHashAlgorithm ("SHA256");
+					break;
+				case "1.2.840.113549.1.1.12":   // SHA-384 with RSA Encryption
+					v.SetHashAlgorithm ("SHA384");
+					break;
+				case "1.2.840.113549.1.1.13":   // SHA-512 with RSA Encryption
+					v.SetHashAlgorithm ("SHA512");
+					break;
 				default:
 					throw new CryptographicException ("Unsupported hash algorithm: " + m_signaturealgo);
 			}
Index: mono-2.6.7/mcs/class/corlib/Mono.Security.X509/X509Certificate.cs
===================================================================
--- mono-2.6.7.orig/mcs/class/corlib/Mono.Security.X509/X509Certificate.cs
+++ mono-2.6.7/mcs/class/corlib/Mono.Security.X509/X509Certificate.cs
@@ -307,12 +307,28 @@ namespace Mono.Security.X509 {
 						case "1.2.840.113549.1.1.4":	// MD5 with RSA encryption 
 							hash = MD5.Create ();
 							break;
+						case "1.2.840.113549.1.1.11":   // SHA-256 with RSA Encryption
+							hash = SHA256.Create ();
+							break;
+						case "1.2.840.113549.1.1.12":   // SHA-384 with RSA Encryption
+							hash = SHA384.Create ();
+							break;
+						case "1.2.840.113549.1.1.13":   // SHA-512 with RSA Encryption
+							hash = SHA512.Create ();
+							break;
+							/*
+						case "1.3.36.3.3.1.2":
+			                                hash = RIPEMD160.Create ();
+							break;
+							*/
+	
 						case "1.2.840.113549.1.1.5":	// SHA-1 with RSA Encryption 
 						case "1.3.14.3.2.29":		// SHA1 with RSA signature 
 						case "1.2.840.10040.4.3":	// SHA1-1 with DSA
 							hash = SHA1.Create ();
 							break;
 						default:
+							throw new CryptographicException ("Unsupported hash algorithm: " + m_signaturealgo);
 							return null;
 					}
 					if ((decoder == null) || (decoder.Count < 1))
@@ -413,6 +429,9 @@ namespace Mono.Security.X509 {
 					case "1.2.840.113549.1.1.2":	// MD2 with RSA encryption 
 					case "1.2.840.113549.1.1.4":	// MD5 with RSA encryption 
 					case "1.2.840.113549.1.1.5":	// SHA-1 with RSA Encryption 
+					case "1.2.840.113549.1.1.11":   // SHA-256 with RSA Encryption
+					case "1.2.840.113549.1.1.12":   // SHA-384 with RSA Encryption
+					case "1.2.840.113549.1.1.13":   // SHA-512 with RSA Encryption
 					case "1.3.14.3.2.29":		// SHA1 with RSA signature
 						return (byte[]) signature.Clone ();
 
@@ -517,6 +536,12 @@ namespace Mono.Security.X509 {
 			case "1.2.840.113549.1.1.5":
 			case "1.3.14.3.2.29":
 				return "SHA1";
+                        case "1.2.840.113549.1.1.11":   // SHA-256 with RSA Encryption
+                                return "SHA256";
+                        case "1.2.840.113549.1.1.12":   // SHA-384 with RSA Encryption
+                                return "SHA384";
+                        case "1.2.840.113549.1.1.13":   // SHA-512 with RSA Encryption
+                                return "SHA512";
 			default:
 				return null;
 			}
