- Home /
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.
Answer by Lars-Blaabjerg · Aug 08, 2014 at 09:19 AM
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.
Answer by anton_breusov · Apr 21, 2016 at 02:30 PM
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.
Your answer
![](https://koobas.hobune.stream/wayback/20220613112553im_/https://answers.unity.com/themes/thub/images/avi.jpg)