public void CanSignAssembly(string inputAssembly, string outputAssembly) { string keyFile = Path.Combine(KeyDir, "test.snk"); var key = new StrongNameKey(keyFile); var signer = new StrongNameSigner(); signer.SignAssembly(inputAssembly, key, outputAssembly); if (Environment.OSVersion.Platform == PlatformID.Win32NT) { int exitCode = Exec.RunNetFxTool("sn.exe", new[] { "-v", outputAssembly }); exitCode.Should() .Be(0); } PEReader assemblyReader = GetPEReader(outputAssembly); assemblyReader.PEHeaders.CorHeader.Flags.Should() .HaveFlag(CorFlags.StrongNameSigned); AssemblyName assemblyName = GetAssemblyName(assemblyReader.GetMetadataReader()); StrongNamePublicKey publicKey = key.GetPublicKey(); assemblyName.GetPublicKey() .Should() .BeEquivalentTo(publicKey.CreatePublicKey()); assemblyName.GetPublicKeyToken() .Should() .BeEquivalentTo(publicKey.CreatePublicKeyToken()); }
public StrongNamePublicKey LoadPublicKey(string path) { try { var privateKey = new StrongNameKey(path); return(privateKey.GetPublicKey()); } catch (InvalidKeyException) { return(new StrongNamePublicKey(path)); } }