Update signing for coreclr repo
authorWes Haggard <Wes.Haggard@microsoft.com>
Fri, 19 May 2017 17:18:04 +0000 (10:18 -0700)
committerWes Haggard <Wes.Haggard@microsoft.com>
Fri, 19 May 2017 17:21:56 +0000 (10:21 -0700)
Make sign.builds consistent with corefx and only add strongname
signatures for managed assemblies and not native assemblies

src/ToolBox/SOS/NETCore/SOS.NETCore.csproj
src/mscorlib/System.Private.CoreLib.csproj
src/mscorlib/Tools/Signing/mscorlib.snk [deleted file]
src/sign.builds

index ec3602e66de4a800abf45bf29e15edb5f48b124a..c579b59dc0650f8ddcb399229af79b07c1a4dc9b 100644 (file)
@@ -12,7 +12,7 @@
     <NoStdLib>true</NoStdLib>
     <NoCompilerStandardLib>true</NoCompilerStandardLib>
     <IsDotNetFrameworkProductAssembly>true</IsDotNetFrameworkProductAssembly>
-    <UseOpenKey Condition="'$(UseOpenKey)'==''">true</UseOpenKey>
+    <AssemblyKey>Open</AssemblyKey>
     <ExcludeMscorlibFacade>true</ExcludeMscorlibFacade>
     <ContainsPackageReferences>true</ContainsPackageReferences>
 
@@ -71,7 +71,7 @@
       UseHardlinksIfPossible="false">
     </Copy>
 
-    <Copy 
+    <Copy
       SourceFiles="$(OutputPath)$(AssemblyName).pdb"
       DestinationFolder="$(BinDir)\PDB"
       SkipUnchangedFiles="false"
index b17b1becb14af68509cb0688d2e61dd250dff9f3..928726ea520eb7bce5eced2619b5d1541ca7f181 100644 (file)
   <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
   <PropertyGroup>
     <!-- Overwrite the key that we are going to use for signing -->
-    <AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)Tools\Signing\mscorlib.snk</AssemblyOriginatorKeyFile>
+    <AssemblyOriginatorKeyFile>$(ToolsDir)SilverlightPlatformPublicKey.snk</AssemblyOriginatorKeyFile>
+    <StrongNameSig>Silverlight</StrongNameSig>
     <!-- Use a different nativeresource file to avoid conflicts with mscorlib-->
     <Win32Resource Condition="'$(GenerateNativeVersionInfo)'=='true'">$(IntermediateOutputPath)\System.Private.CoreLib.res</Win32Resource>
   </PropertyGroup>
diff --git a/src/mscorlib/Tools/Signing/mscorlib.snk b/src/mscorlib/Tools/Signing/mscorlib.snk
deleted file mode 100644 (file)
index 60146e8..0000000
Binary files a/src/mscorlib/Tools/Signing/mscorlib.snk and /dev/null differ
index a8652b3ff431980fd51035376b14f31ce20ff5eb..831fe668c73a758284c442e169937098a8cb286f 100644 (file)
@@ -1,48 +1,34 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="12.0" DefaultTargets="SignFiles" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-
-  <!-- must set the default before importing targets -->
-  <PropertyGroup>
-    <SignType Condition="'$(SignType)' == ''">test</SignType>
-    <StrongNameSig>Silverlight</StrongNameSig>
-  </PropertyGroup>
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 
   <Import Project="..\dir.props"/>
   <Import Project="..\dir.targets" />
 
-  <!-- OutDir is used by the MicroBuild signing target -->
   <PropertyGroup>
+    <!-- The SignFiles target needs OutDir to be defined -->
     <OutDir>$(BinDir)</OutDir>
   </PropertyGroup>
 
   <UsingTask AssemblyFile="$(BuildToolsTaskDir)Microsoft.DotNet.Build.Tasks.dll" TaskName="ReadSigningRequired" />
 
-  <!-- apply the default signing certificates (defined in sign.targets) -->
-  <ItemDefinitionGroup>
-    <FilesToSign>
-      <Authenticode>$(AuthenticodeSig)</Authenticode>
-      <StrongName>$(StrongNameSig)</StrongName>
-    </FilesToSign>
-  </ItemDefinitionGroup>
-
-  <!-- gather the list of binaries to sign with the default certificates -->
   <ItemGroup>
-    <FilesToSign Include="$(BinDir)*.dll" Exclude="$(BinDir)*.ni.dll" />
-    <FilesToSign Include="$(BinDir)*.exe" />
+    <WindowsNativeLocation Include="$(BinDir)*.dll" />
+    <WindowsNativeLocation Include="$(BinDir)*.exe" />
   </ItemGroup>
 
-  <!--
-    for some reason the signing task incorrectly attemps to strong-name sign
-    native images which causes the signing step to fail for obvious reasons.
-  -->
-  <ItemGroup>
-    <FilesToSign Include="$(BinDir)*.ni.dll">
-      <StrongName>None</StrongName>
-    </FilesToSign>
-  </ItemGroup>
+  <Target Name="GenerateSignForWindowsNative">
+    <!--
+      Managed assemblies should already have a requires_signing file dropped so only generate
+      a requires_signing file for ones that don't exist which should leave just native assembies
+    -->
+    <WriteSigningRequired AuthenticodeSig="$(AuthenticodeSig)"
+                          MarkerFile="%(WindowsNativeLocation.Identity).requires_signing"
+                          Condition="!Exists('%(WindowsNativeLocation.Identity).requires_signing')" />
+  </Target>
 
   <!-- populates item group FilesToSign with the list of files to sign -->
-  <Target Name="GetFilesToSignItems" BeforeTargets="SignFiles">
+  <Target Name="GetFilesToSignItems"
+          DependsOnTargets="GenerateSignForWindowsNative">
     <!-- read all of the marker files and populate the FilesToSign item group -->
     <ItemGroup>
       <SignMarkerFile Include="$(OutDir)**\*.requires_signing" />
     <ReadSigningRequired MarkerFiles="@(SignMarkerFile)">
       <Output TaskParameter="SigningMetadata" ItemName="FilesToSign" />
     </ReadSigningRequired>
+
+    <Message Importance="High" Text="Attempting to sign %(FilesToSign.Identity) with authenticode='%(FilesToSign.Authenticode)' and strongname='%(FilesToSign.StrongName)'" />
+
   </Target>
 
-  <!-- now that signing is done clean up any marker files -->
-  <Target Name="CleanUpMarkerFiles" AfterTargets="SignFiles">
+  <Target Name="Build"
+          Condition="'$(SkipSigning)' != 'true' and '$(SignType)' != 'oss'"
+          DependsOnTargets="GetFilesToSignItems;SignFiles">
+
     <!-- now that the files have been signed delete the marker files -->
     <Delete Files="@(SignMarkerFile)" />
   </Target>