public static Assembly LoadAndVerifyAssembly(byte[] assemblyData, string authorizationKey) { RSACryptoServiceProvider rSACryptoServiceProvider = new RSACryptoServiceProvider(); rSACryptoServiceProvider.FromXmlString("<RSAKeyValue><Modulus>uP7lsvrE6fNoQWhUIdJnQrgKoGXBkgWgs5l1xmS9gfyNkFSXgugIpfmN/0YrtL57PezYFXN0CogAnOpOtcUmpcIrh524VL/7bIh+jDUaOCG292PIx92dtzqCTvbUdCYUmaag9VlrdAw05FxYQJi2iZ/X6EiuO1TnqpVNFCDb6pXPAssoO4Uxn9JXBzL0muNRdcmFGRiLp7JQOL7a2aeU9mF9qjMprnww0k8COa6tHdnNWJqaxdFO+Etk3os0ns/gQ2FWrztKemM1Wfu7lk/B1F+V2g0adwlTiuyNHw6to+5VQXWK775RXB9wAGr8KhsVD5IJvmxrdBT8KVEWve+OXQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>"); bool flag = false; SHA1 sHA = SHA1.Create(); byte[] rgbHash = sHA.ComputeHash(assemblyData); byte[] rgbSignature = Convert.FromBase64String(authorizationKey); try { flag = rSACryptoServiceProvider.VerifyHash(rgbHash, CryptoConfig.MapNameToOID("SHA1"), rgbSignature); } catch (CryptographicException) { Debug.LogError("Unable to verify that this assembly has been authorized by Unity. The assembly will not be loaded."); flag = false; } if (!flag) { return(null); } return(Security.LoadAndVerifyAssemblyInternal(assemblyData)); }
public static Assembly LoadAndVerifyAssembly(byte[] assemblyData) { if (Application.GetBuildUnityVersion() >= Application.GetNumericUnityVersion("4.5.0a4")) { Debug.LogError("Unable to verify assembly data; you must provide an authorization key when loading this assembly."); return(null); } return(Security.LoadAndVerifyAssemblyInternal(assemblyData)); }