System.Security.Cryptography, link.xml and bytecode stripping

I am trying to create an iOS build with stripping level set to strip bytecode.

In my project I have a test certificate validator that looks something like this:

public static bool Validator (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors PolicyErrors)
{
    Debug.Log("This is actually working!!");
	return true;
}

and my link.xml looks like this:

<linker>
       <assembly fullname="mscorlib">
               <namespace fullname="System.Security.Cryptography" preserve="all"/>
       </assembly>
</linker>

My problem is that even my validator never gets hit and I’m getting security errors from my server.
I read in the troubleshooting guide and build optimization guide that there is problems with reflection and using System.Security.Cryptography types and methods so, that is where I got my example for the link.xml file.

Is there any way to get this to work?

I’ve tried to put a lot of things into the link.xml and none of it seems to work.
I even tried what this guy was doing: Crash on a stripped iOS binary

I’m using the WebClient class that is why I have to use a cert validator.
I’ve gotten to the point of no return on using this, that is why I can’t switch to the WWW class.

Thanks in advance!

Update: I opened the System.dll file that gets created from the build process and it looks as though all the referenced classes that I need are in there, but the above ServicePointManager.ServerCertificateValidationCallback is never being hit.

Add this to link.xml:

<assembly fullname="System">
    <namespace fullname="System.Security.Cryptography" preserve="all" />
</assembly>

It seems some of the classes needed, used through reflection, are in the System assembly rather than in mscorlib.

I use the “Strip assemblies” option. I don’t know if that makes a difference.

You can try following link.xml:

<linker>
	<assembly fullname="System.Core">
		<namespace fullname="System.Security.Cryptography" preserve="all"/>
	</assembly>
	<assembly fullname="mscorlib">
		<namespace fullname="System.Security.Cryptography" preserve="all"/>
	</assembly>
	<assembly fullname="System">
		<namespace fullname="System.Security.Cryptography" preserve="all"/>
	</assembly>
	<assembly fullname="System.Security">
		<namespace fullname="System.Security.Cryptography" preserve="all"/>
	</assembly>
	<assembly fullname="Mono.Security">
		<namespace fullname="System.Security.Cryptography" preserve="all"/>
	</assembly>
</linker>

The problem is that Crypto code is mixed in many assemblies, not just System and mscorlib.