SHA256
1
0
forked from pool/mono-core
mono-core/X509Certificate-workaround.patch

40 lines
1.6 KiB
Diff

From afcb0baec2182503ed8de016bd6225cbb1c74191 Mon Sep 17 00:00:00 2001
From: Jo Shields <jo.shields@xamarin.com>
Date: Mon, 19 Jan 2015 14:32:22 +0000
Subject: [PATCH] Workaround for X509Certificate.RSA throwing an unhandled
exception in ASN1 parsing of certificates with ECC public keys only.
---
mcs/class/Mono.Security/Mono.Security.X509/X509Certificate.cs | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/mcs/class/Mono.Security/Mono.Security.X509/X509Certificate.cs b/mcs/class/Mono.Security/Mono.Security.X509/X509Certificate.cs
index 11be419..da39f9a 100644
--- a/mcs/class/Mono.Security/Mono.Security.X509/X509Certificate.cs
+++ b/mcs/class/Mono.Security/Mono.Security.X509/X509Certificate.cs
@@ -247,7 +247,7 @@ private byte[] GetUnsignedBigInteger (byte[] integer)
if (m_keyalgoparams == null)
throw new CryptographicException ("Missing key algorithm parameters.");
- if (_dsa == null) {
+ if (_dsa == null && m_keyalgo == "1.2.840.10040.4.1") {
DSAParameters dsaParams = new DSAParameters ();
// for DSA m_publickey contains 1 ASN.1 integer - Y
ASN1 pubkey = new ASN1 (m_publickey);
@@ -327,7 +327,7 @@ private byte[] GetUnsignedBigInteger (byte[] integer)
public virtual RSA RSA {
get {
- if (_rsa == null) {
+ if (_rsa == null && m_keyalgo == "1.2.840.113549.1.1.1") {
RSAParameters rsaParams = new RSAParameters ();
// for RSA m_publickey contains 2 ASN.1 integers
// the modulus and the public exponent
@@ -560,4 +560,4 @@ static byte[] PEM (string type, byte[] data)
return Convert.FromBase64String (base64);
}
}
-}
\ No newline at end of file
+}