Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / public / internal / NDP / inc / StrongNameHelpers.cs / 1305411 / StrongNameHelpers.cs
using System; using System.Security; using System.Text; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Diagnostics.CodeAnalysis; namespace Microsoft.Runtime.Hosting { ////// The methods here are designed to aid in transition from the v2 StrongName APIs on mscoree.dll to the /// v4 metahost APIs (which are in-proc SxS aware). /// internal static class StrongNameHelpers { [ThreadStatic] private static int ts_LastStrongNameHR; [System.Security.SecurityCritical] [ThreadStatic] private static IClrStrongName s_StrongName; [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] private static IClrStrongName StrongName { [System.Security.SecurityCritical] get { if (s_StrongName == null) { s_StrongName = (IClrStrongName)RuntimeEnvironment.GetRuntimeInterfaceAsObject( new Guid("B79B0ACD-F5CD-409b-B5A5-A16244610B92"), new Guid("9FD93CCF-3280-4391-B3A9-96E1CDE77C8D")); } return s_StrongName; } } [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] private static IClrStrongNameUsingIntPtr StrongNameUsingIntPtr { [System.Security.SecurityCritical] get { return (IClrStrongNameUsingIntPtr)StrongName; } } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static int StrongNameErrorInfo() { return ts_LastStrongNameHR; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] [SuppressMessage("Microsoft.Usage", "CA1806:DoNotIgnoreMethodResults", MessageId = "Microsoft.Runtime.Hosting.IClrStrongNameUsingIntPtr.StrongNameFreeBuffer(System.IntPtr)", Justification = "StrongNameFreeBuffer returns void but the new runtime wrappers return an HRESULT.")] public static void StrongNameFreeBuffer(IntPtr pbMemory) { StrongNameUsingIntPtr.StrongNameFreeBuffer(pbMemory); } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameGetPublicKey(string pwzKeyContainer, IntPtr pbKeyBlob, int cbKeyBlob, out IntPtr ppbPublicKeyBlob, out int pcbPublicKeyBlob) { int hr = StrongNameUsingIntPtr.StrongNameGetPublicKey(pwzKeyContainer, pbKeyBlob, cbKeyBlob, out ppbPublicKeyBlob, out pcbPublicKeyBlob); if( hr < 0 ) { ts_LastStrongNameHR = hr; ppbPublicKeyBlob = IntPtr.Zero; pcbPublicKeyBlob = 0; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameKeyDelete(string pwzKeyContainer) { int hr = StrongName.StrongNameKeyDelete(pwzKeyContainer); if( hr < 0 ) { ts_LastStrongNameHR = hr; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameKeyGen(string pwzKeyContainer, int dwFlags, out IntPtr ppbKeyBlob, out int pcbKeyBlob) { int hr = StrongName.StrongNameKeyGen(pwzKeyContainer, dwFlags, out ppbKeyBlob, out pcbKeyBlob); if( hr < 0 ) { ts_LastStrongNameHR = hr; ppbKeyBlob = IntPtr.Zero; pcbKeyBlob = 0; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameKeyInstall(string pwzKeyContainer, IntPtr pbKeyBlob, int cbKeyBlob) { int hr = StrongNameUsingIntPtr.StrongNameKeyInstall(pwzKeyContainer, pbKeyBlob, cbKeyBlob); if( hr < 0 ) { ts_LastStrongNameHR = hr; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameSignatureGeneration(string pwzFilePath, string pwzKeyContainer, IntPtr pbKeyBlob, int cbKeyBlob) { IntPtr ppbSignatureBlob = IntPtr.Zero; int cbSignatureBlob = 0; return StrongNameSignatureGeneration(pwzFilePath, pwzKeyContainer, pbKeyBlob, cbKeyBlob, ref ppbSignatureBlob, out cbSignatureBlob); } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameSignatureGeneration(string pwzFilePath, string pwzKeyContainer, IntPtr pbKeyBlob, int cbKeyBlob, ref IntPtr ppbSignatureBlob, out int pcbSignatureBlob) { int hr = StrongNameUsingIntPtr.StrongNameSignatureGeneration(pwzFilePath, pwzKeyContainer, pbKeyBlob, cbKeyBlob, ppbSignatureBlob, out pcbSignatureBlob); if( hr < 0 ) { ts_LastStrongNameHR = hr; pcbSignatureBlob = 0; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameSignatureSize(IntPtr pbPublicKeyBlob, int cbPublicKeyBlob, out int pcbSize) { int hr = StrongNameUsingIntPtr.StrongNameSignatureSize(pbPublicKeyBlob, cbPublicKeyBlob, out pcbSize); if( hr < 0 ) { ts_LastStrongNameHR = hr; pcbSize = 0; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameSignatureVerification(string pwzFilePath, int dwInFlags, out int pdwOutFlags) { int hr = StrongName.StrongNameSignatureVerification(pwzFilePath, dwInFlags, out pdwOutFlags); if( hr < 0 ) { ts_LastStrongNameHR = hr; pdwOutFlags = 0; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameSignatureVerificationEx(string pwzFilePath, bool fForceVerification, out bool pfWasVerified) { int hr = StrongName.StrongNameSignatureVerificationEx(pwzFilePath, fForceVerification, out pfWasVerified); if( hr < 0 ) { ts_LastStrongNameHR = hr; pfWasVerified = false; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameTokenFromPublicKey(IntPtr pbPublicKeyBlob, int cbPublicKeyBlob, out IntPtr ppbStrongNameToken, out int pcbStrongNameToken) { int hr = StrongNameUsingIntPtr.StrongNameTokenFromPublicKey(pbPublicKeyBlob, cbPublicKeyBlob, out ppbStrongNameToken, out pcbStrongNameToken); if( hr < 0 ) { ts_LastStrongNameHR = hr; ppbStrongNameToken = IntPtr.Zero; pcbStrongNameToken = 0; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameSignatureSize(byte[] bPublicKeyBlob, int cbPublicKeyBlob, out int pcbSize) { int hr = StrongName.StrongNameSignatureSize(bPublicKeyBlob, cbPublicKeyBlob, out pcbSize); if( hr < 0 ) { ts_LastStrongNameHR = hr; pcbSize = 0; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameTokenFromPublicKey(byte[] bPublicKeyBlob, int cbPublicKeyBlob, out IntPtr ppbStrongNameToken, out int pcbStrongNameToken) { int hr = StrongName.StrongNameTokenFromPublicKey(bPublicKeyBlob, cbPublicKeyBlob, out ppbStrongNameToken, out pcbStrongNameToken); if( hr < 0 ) { ts_LastStrongNameHR = hr; ppbStrongNameToken = IntPtr.Zero; pcbStrongNameToken = 0; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameGetPublicKey(string pwzKeyContainer, byte[] bKeyBlob, int cbKeyBlob, out IntPtr ppbPublicKeyBlob, out int pcbPublicKeyBlob) { int hr = StrongName.StrongNameGetPublicKey(pwzKeyContainer, bKeyBlob, cbKeyBlob, out ppbPublicKeyBlob, out pcbPublicKeyBlob); if( hr < 0 ) { ts_LastStrongNameHR = hr; ppbPublicKeyBlob = IntPtr.Zero; pcbPublicKeyBlob = 0; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameKeyInstall(string pwzKeyContainer, byte[] bKeyBlob, int cbKeyBlob) { int hr = StrongName.StrongNameKeyInstall(pwzKeyContainer, bKeyBlob, cbKeyBlob); if( hr < 0 ) { ts_LastStrongNameHR = hr; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameSignatureGeneration(string pwzFilePath, string pwzKeyContainer, byte[] bKeyBlob, int cbKeyBlob) { IntPtr ppbSignatureBlob = IntPtr.Zero; int cbSignatureBlob = 0; return StrongNameSignatureGeneration(pwzFilePath, pwzKeyContainer, bKeyBlob, cbKeyBlob, ref ppbSignatureBlob, out cbSignatureBlob); } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameSignatureGeneration(string pwzFilePath, string pwzKeyContainer, byte[] bKeyBlob, int cbKeyBlob, ref IntPtr ppbSignatureBlob, out int pcbSignatureBlob) { int hr = StrongName.StrongNameSignatureGeneration(pwzFilePath, pwzKeyContainer, bKeyBlob, cbKeyBlob, ppbSignatureBlob, out pcbSignatureBlob); if( hr < 0 ) { ts_LastStrongNameHR = hr; pcbSignatureBlob = 0; return false; } return true; } } ////// This is a managed wrapper for the IClrStrongName interface defined in metahost.idl /// This uses IntPtrs in some places where you'd normally expect a byte[] in order to /// be compatible with callers who wrote their PInvoke signatures that way. /// Ideally we'd probably just simplify all such callers to using byte[] and remove this /// version of the interface. /// [System.Security.SecurityCritical] [ComImport, ComConversionLoss, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("9FD93CCF-3280-4391-B3A9-96E1CDE77C8D")] internal interface IClrStrongNameUsingIntPtr { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromAssemblyFile( [In, MarshalAs(UnmanagedType.LPStr)] string pszFilePath, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] out byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromAssemblyFileW( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromBlob( [In] IntPtr pbBlob, [In, MarshalAs(UnmanagedType.U4)] int cchBlob, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromFile( [In, MarshalAs(UnmanagedType.LPStr)] string pszFilePath, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromFileW( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromHandle( [In] IntPtr hFile, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameCompareAssemblies( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzAssembly1, [In, MarshalAs(UnmanagedType.LPWStr)] string pwzAssembly2, [MarshalAs(UnmanagedType.U4)] out int dwResult); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameFreeBuffer( [In] IntPtr pbMemory); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameGetBlob( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pbBlob, [In, Out, MarshalAs(UnmanagedType.U4)] ref int pcbBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameGetBlobFromImage( [In] IntPtr pbBase, [In, MarshalAs(UnmanagedType.U4)] int dwLength, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pbBlob, [In, Out, MarshalAs(UnmanagedType.U4)] ref int pcbBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameGetPublicKey( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In] IntPtr pbKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbKeyBlob, out IntPtr ppbPublicKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbPublicKeyBlob); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameHashSize( [In, MarshalAs(UnmanagedType.U4)] int ulHashAlg, [MarshalAs(UnmanagedType.U4)] out int cbSize); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameKeyDelete( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameKeyGen( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In, MarshalAs(UnmanagedType.U4)] int dwFlags, out IntPtr ppbKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbKeyBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameKeyGenEx( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In, MarshalAs(UnmanagedType.U4)] int dwFlags, [In, MarshalAs(UnmanagedType.U4)] int dwKeySize, out IntPtr ppbKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbKeyBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameKeyInstall( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In] IntPtr pbKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbKeyBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureGeneration( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In] IntPtr pbKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbKeyBlob, [In, Out] IntPtr ppbSignatureBlob, [MarshalAs(UnmanagedType.U4)] out int pcbSignatureBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureGenerationEx( [In, MarshalAs(UnmanagedType.LPWStr)] string wszFilePath, [In, MarshalAs(UnmanagedType.LPWStr)] string wszKeyContainer, [In] IntPtr pbKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbKeyBlob, [In, Out] IntPtr ppbSignatureBlob, [MarshalAs(UnmanagedType.U4)] out int pcbSignatureBlob, [In, MarshalAs(UnmanagedType.U4)] int dwFlags); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureSize( [In] IntPtr pbPublicKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbPublicKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbSize); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureVerification( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, MarshalAs(UnmanagedType.U4)] int dwInFlags, [MarshalAs(UnmanagedType.U4)] out int dwOutFlags); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureVerificationEx( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, MarshalAs(UnmanagedType.I1)] bool fForceVerification, [MarshalAs(UnmanagedType.I1)] out bool fWasVerified); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureVerificationFromImage( [In] IntPtr pbBase, [In, MarshalAs(UnmanagedType.U4)] int dwLength, [In, MarshalAs(UnmanagedType.U4)] int dwInFlags, [MarshalAs(UnmanagedType.U4)] out int dwOutFlags); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameTokenFromAssembly( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, out IntPtr ppbStrongNameToken, [MarshalAs(UnmanagedType.U4)] out int pcbStrongNameToken); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameTokenFromAssemblyEx( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, out IntPtr ppbStrongNameToken, [MarshalAs(UnmanagedType.U4)] out int pcbStrongNameToken, out IntPtr ppbPublicKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbPublicKeyBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameTokenFromPublicKey( [In] IntPtr pbPublicKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbPublicKeyBlob, out IntPtr ppbStrongNameToken, [MarshalAs(UnmanagedType.U4)] out int pcbStrongNameToken); } ////// This is a managed wrapper for the IClrStrongName interface defined in metahost.idl /// This is very similar to the standard RCWs provided in /// ndp/fx/src/hosting/interop/microsoft/runtime/hosting/interop, but we don't want to /// reference that assembly (part of the SDK only, not .NET redist). Also, our version /// is designed specifically for easy migration from the old mscoree APIs, for example /// all APIs return HResults rather than throw exceptions. /// [System.Security.SecurityCritical] [ComImport, ComConversionLoss, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("9FD93CCF-3280-4391-B3A9-96E1CDE77C8D")] internal interface IClrStrongName { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromAssemblyFile( [In, MarshalAs(UnmanagedType.LPStr)] string pszFilePath, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] out byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromAssemblyFileW( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromBlob( [In] IntPtr pbBlob, [In, MarshalAs(UnmanagedType.U4)] int cchBlob, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromFile( [In, MarshalAs(UnmanagedType.LPStr)] string pszFilePath, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromFileW( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromHandle( [In] IntPtr hFile, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameCompareAssemblies( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzAssembly1, [In, MarshalAs(UnmanagedType.LPWStr)] string pwzAssembly2, [MarshalAs(UnmanagedType.U4)] out int dwResult); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameFreeBuffer( [In] IntPtr pbMemory); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameGetBlob( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pbBlob, [In, Out, MarshalAs(UnmanagedType.U4)] ref int pcbBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameGetBlobFromImage( [In] IntPtr pbBase, [In, MarshalAs(UnmanagedType.U4)] int dwLength, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pbBlob, [In, Out, MarshalAs(UnmanagedType.U4)] ref int pcbBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameGetPublicKey( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pbKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbKeyBlob, out IntPtr ppbPublicKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbPublicKeyBlob); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameHashSize( [In, MarshalAs(UnmanagedType.U4)] int ulHashAlg, [MarshalAs(UnmanagedType.U4)] out int cbSize); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameKeyDelete( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameKeyGen( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In, MarshalAs(UnmanagedType.U4)] int dwFlags, out IntPtr ppbKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbKeyBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameKeyGenEx( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In, MarshalAs(UnmanagedType.U4)] int dwFlags, [In, MarshalAs(UnmanagedType.U4)] int dwKeySize, out IntPtr ppbKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbKeyBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameKeyInstall( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pbKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbKeyBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureGeneration( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbKeyBlob, [In, Out] IntPtr ppbSignatureBlob, [MarshalAs(UnmanagedType.U4)] out int pcbSignatureBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureGenerationEx( [In, MarshalAs(UnmanagedType.LPWStr)] string wszFilePath, [In, MarshalAs(UnmanagedType.LPWStr)] string wszKeyContainer, [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbKeyBlob, [In, Out] IntPtr ppbSignatureBlob, [MarshalAs(UnmanagedType.U4)] out int pcbSignatureBlob, [In, MarshalAs(UnmanagedType.U4)] int dwFlags); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureSize( [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] byte[] pbPublicKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbPublicKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbSize); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureVerification( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, MarshalAs(UnmanagedType.U4)] int dwInFlags, [MarshalAs(UnmanagedType.U4)] out int dwOutFlags); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureVerificationEx( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, MarshalAs(UnmanagedType.I1)] bool fForceVerification, [MarshalAs(UnmanagedType.I1)] out bool fWasVerified); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureVerificationFromImage( [In] IntPtr pbBase, [In, MarshalAs(UnmanagedType.U4)] int dwLength, [In, MarshalAs(UnmanagedType.U4)] int dwInFlags, [MarshalAs(UnmanagedType.U4)] out int dwOutFlags); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameTokenFromAssembly( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, out IntPtr ppbStrongNameToken, [MarshalAs(UnmanagedType.U4)] out int pcbStrongNameToken); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameTokenFromAssemblyEx( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, out IntPtr ppbStrongNameToken, [MarshalAs(UnmanagedType.U4)] out int pcbStrongNameToken, out IntPtr ppbPublicKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbPublicKeyBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameTokenFromPublicKey( [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] byte[] pbPublicKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbPublicKeyBlob, out IntPtr ppbStrongNameToken, [MarshalAs(UnmanagedType.U4)] out int pcbStrongNameToken); } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Security; using System.Text; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Diagnostics.CodeAnalysis; namespace Microsoft.Runtime.Hosting { ////// The methods here are designed to aid in transition from the v2 StrongName APIs on mscoree.dll to the /// v4 metahost APIs (which are in-proc SxS aware). /// internal static class StrongNameHelpers { [ThreadStatic] private static int ts_LastStrongNameHR; [System.Security.SecurityCritical] [ThreadStatic] private static IClrStrongName s_StrongName; [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] private static IClrStrongName StrongName { [System.Security.SecurityCritical] get { if (s_StrongName == null) { s_StrongName = (IClrStrongName)RuntimeEnvironment.GetRuntimeInterfaceAsObject( new Guid("B79B0ACD-F5CD-409b-B5A5-A16244610B92"), new Guid("9FD93CCF-3280-4391-B3A9-96E1CDE77C8D")); } return s_StrongName; } } [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] private static IClrStrongNameUsingIntPtr StrongNameUsingIntPtr { [System.Security.SecurityCritical] get { return (IClrStrongNameUsingIntPtr)StrongName; } } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static int StrongNameErrorInfo() { return ts_LastStrongNameHR; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] [SuppressMessage("Microsoft.Usage", "CA1806:DoNotIgnoreMethodResults", MessageId = "Microsoft.Runtime.Hosting.IClrStrongNameUsingIntPtr.StrongNameFreeBuffer(System.IntPtr)", Justification = "StrongNameFreeBuffer returns void but the new runtime wrappers return an HRESULT.")] public static void StrongNameFreeBuffer(IntPtr pbMemory) { StrongNameUsingIntPtr.StrongNameFreeBuffer(pbMemory); } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameGetPublicKey(string pwzKeyContainer, IntPtr pbKeyBlob, int cbKeyBlob, out IntPtr ppbPublicKeyBlob, out int pcbPublicKeyBlob) { int hr = StrongNameUsingIntPtr.StrongNameGetPublicKey(pwzKeyContainer, pbKeyBlob, cbKeyBlob, out ppbPublicKeyBlob, out pcbPublicKeyBlob); if( hr < 0 ) { ts_LastStrongNameHR = hr; ppbPublicKeyBlob = IntPtr.Zero; pcbPublicKeyBlob = 0; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameKeyDelete(string pwzKeyContainer) { int hr = StrongName.StrongNameKeyDelete(pwzKeyContainer); if( hr < 0 ) { ts_LastStrongNameHR = hr; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameKeyGen(string pwzKeyContainer, int dwFlags, out IntPtr ppbKeyBlob, out int pcbKeyBlob) { int hr = StrongName.StrongNameKeyGen(pwzKeyContainer, dwFlags, out ppbKeyBlob, out pcbKeyBlob); if( hr < 0 ) { ts_LastStrongNameHR = hr; ppbKeyBlob = IntPtr.Zero; pcbKeyBlob = 0; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameKeyInstall(string pwzKeyContainer, IntPtr pbKeyBlob, int cbKeyBlob) { int hr = StrongNameUsingIntPtr.StrongNameKeyInstall(pwzKeyContainer, pbKeyBlob, cbKeyBlob); if( hr < 0 ) { ts_LastStrongNameHR = hr; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameSignatureGeneration(string pwzFilePath, string pwzKeyContainer, IntPtr pbKeyBlob, int cbKeyBlob) { IntPtr ppbSignatureBlob = IntPtr.Zero; int cbSignatureBlob = 0; return StrongNameSignatureGeneration(pwzFilePath, pwzKeyContainer, pbKeyBlob, cbKeyBlob, ref ppbSignatureBlob, out cbSignatureBlob); } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameSignatureGeneration(string pwzFilePath, string pwzKeyContainer, IntPtr pbKeyBlob, int cbKeyBlob, ref IntPtr ppbSignatureBlob, out int pcbSignatureBlob) { int hr = StrongNameUsingIntPtr.StrongNameSignatureGeneration(pwzFilePath, pwzKeyContainer, pbKeyBlob, cbKeyBlob, ppbSignatureBlob, out pcbSignatureBlob); if( hr < 0 ) { ts_LastStrongNameHR = hr; pcbSignatureBlob = 0; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameSignatureSize(IntPtr pbPublicKeyBlob, int cbPublicKeyBlob, out int pcbSize) { int hr = StrongNameUsingIntPtr.StrongNameSignatureSize(pbPublicKeyBlob, cbPublicKeyBlob, out pcbSize); if( hr < 0 ) { ts_LastStrongNameHR = hr; pcbSize = 0; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameSignatureVerification(string pwzFilePath, int dwInFlags, out int pdwOutFlags) { int hr = StrongName.StrongNameSignatureVerification(pwzFilePath, dwInFlags, out pdwOutFlags); if( hr < 0 ) { ts_LastStrongNameHR = hr; pdwOutFlags = 0; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameSignatureVerificationEx(string pwzFilePath, bool fForceVerification, out bool pfWasVerified) { int hr = StrongName.StrongNameSignatureVerificationEx(pwzFilePath, fForceVerification, out pfWasVerified); if( hr < 0 ) { ts_LastStrongNameHR = hr; pfWasVerified = false; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameTokenFromPublicKey(IntPtr pbPublicKeyBlob, int cbPublicKeyBlob, out IntPtr ppbStrongNameToken, out int pcbStrongNameToken) { int hr = StrongNameUsingIntPtr.StrongNameTokenFromPublicKey(pbPublicKeyBlob, cbPublicKeyBlob, out ppbStrongNameToken, out pcbStrongNameToken); if( hr < 0 ) { ts_LastStrongNameHR = hr; ppbStrongNameToken = IntPtr.Zero; pcbStrongNameToken = 0; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameSignatureSize(byte[] bPublicKeyBlob, int cbPublicKeyBlob, out int pcbSize) { int hr = StrongName.StrongNameSignatureSize(bPublicKeyBlob, cbPublicKeyBlob, out pcbSize); if( hr < 0 ) { ts_LastStrongNameHR = hr; pcbSize = 0; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameTokenFromPublicKey(byte[] bPublicKeyBlob, int cbPublicKeyBlob, out IntPtr ppbStrongNameToken, out int pcbStrongNameToken) { int hr = StrongName.StrongNameTokenFromPublicKey(bPublicKeyBlob, cbPublicKeyBlob, out ppbStrongNameToken, out pcbStrongNameToken); if( hr < 0 ) { ts_LastStrongNameHR = hr; ppbStrongNameToken = IntPtr.Zero; pcbStrongNameToken = 0; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameGetPublicKey(string pwzKeyContainer, byte[] bKeyBlob, int cbKeyBlob, out IntPtr ppbPublicKeyBlob, out int pcbPublicKeyBlob) { int hr = StrongName.StrongNameGetPublicKey(pwzKeyContainer, bKeyBlob, cbKeyBlob, out ppbPublicKeyBlob, out pcbPublicKeyBlob); if( hr < 0 ) { ts_LastStrongNameHR = hr; ppbPublicKeyBlob = IntPtr.Zero; pcbPublicKeyBlob = 0; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameKeyInstall(string pwzKeyContainer, byte[] bKeyBlob, int cbKeyBlob) { int hr = StrongName.StrongNameKeyInstall(pwzKeyContainer, bKeyBlob, cbKeyBlob); if( hr < 0 ) { ts_LastStrongNameHR = hr; return false; } return true; } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameSignatureGeneration(string pwzFilePath, string pwzKeyContainer, byte[] bKeyBlob, int cbKeyBlob) { IntPtr ppbSignatureBlob = IntPtr.Zero; int cbSignatureBlob = 0; return StrongNameSignatureGeneration(pwzFilePath, pwzKeyContainer, bKeyBlob, cbKeyBlob, ref ppbSignatureBlob, out cbSignatureBlob); } [System.Security.SecurityCritical] [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "[....]: This file is included in a lot of projects some of which only use a subset of the functions.")] public static bool StrongNameSignatureGeneration(string pwzFilePath, string pwzKeyContainer, byte[] bKeyBlob, int cbKeyBlob, ref IntPtr ppbSignatureBlob, out int pcbSignatureBlob) { int hr = StrongName.StrongNameSignatureGeneration(pwzFilePath, pwzKeyContainer, bKeyBlob, cbKeyBlob, ppbSignatureBlob, out pcbSignatureBlob); if( hr < 0 ) { ts_LastStrongNameHR = hr; pcbSignatureBlob = 0; return false; } return true; } } ////// This is a managed wrapper for the IClrStrongName interface defined in metahost.idl /// This uses IntPtrs in some places where you'd normally expect a byte[] in order to /// be compatible with callers who wrote their PInvoke signatures that way. /// Ideally we'd probably just simplify all such callers to using byte[] and remove this /// version of the interface. /// [System.Security.SecurityCritical] [ComImport, ComConversionLoss, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("9FD93CCF-3280-4391-B3A9-96E1CDE77C8D")] internal interface IClrStrongNameUsingIntPtr { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromAssemblyFile( [In, MarshalAs(UnmanagedType.LPStr)] string pszFilePath, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] out byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromAssemblyFileW( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromBlob( [In] IntPtr pbBlob, [In, MarshalAs(UnmanagedType.U4)] int cchBlob, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromFile( [In, MarshalAs(UnmanagedType.LPStr)] string pszFilePath, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromFileW( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromHandle( [In] IntPtr hFile, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameCompareAssemblies( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzAssembly1, [In, MarshalAs(UnmanagedType.LPWStr)] string pwzAssembly2, [MarshalAs(UnmanagedType.U4)] out int dwResult); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameFreeBuffer( [In] IntPtr pbMemory); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameGetBlob( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pbBlob, [In, Out, MarshalAs(UnmanagedType.U4)] ref int pcbBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameGetBlobFromImage( [In] IntPtr pbBase, [In, MarshalAs(UnmanagedType.U4)] int dwLength, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pbBlob, [In, Out, MarshalAs(UnmanagedType.U4)] ref int pcbBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameGetPublicKey( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In] IntPtr pbKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbKeyBlob, out IntPtr ppbPublicKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbPublicKeyBlob); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameHashSize( [In, MarshalAs(UnmanagedType.U4)] int ulHashAlg, [MarshalAs(UnmanagedType.U4)] out int cbSize); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameKeyDelete( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameKeyGen( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In, MarshalAs(UnmanagedType.U4)] int dwFlags, out IntPtr ppbKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbKeyBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameKeyGenEx( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In, MarshalAs(UnmanagedType.U4)] int dwFlags, [In, MarshalAs(UnmanagedType.U4)] int dwKeySize, out IntPtr ppbKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbKeyBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameKeyInstall( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In] IntPtr pbKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbKeyBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureGeneration( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In] IntPtr pbKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbKeyBlob, [In, Out] IntPtr ppbSignatureBlob, [MarshalAs(UnmanagedType.U4)] out int pcbSignatureBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureGenerationEx( [In, MarshalAs(UnmanagedType.LPWStr)] string wszFilePath, [In, MarshalAs(UnmanagedType.LPWStr)] string wszKeyContainer, [In] IntPtr pbKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbKeyBlob, [In, Out] IntPtr ppbSignatureBlob, [MarshalAs(UnmanagedType.U4)] out int pcbSignatureBlob, [In, MarshalAs(UnmanagedType.U4)] int dwFlags); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureSize( [In] IntPtr pbPublicKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbPublicKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbSize); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureVerification( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, MarshalAs(UnmanagedType.U4)] int dwInFlags, [MarshalAs(UnmanagedType.U4)] out int dwOutFlags); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureVerificationEx( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, MarshalAs(UnmanagedType.I1)] bool fForceVerification, [MarshalAs(UnmanagedType.I1)] out bool fWasVerified); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureVerificationFromImage( [In] IntPtr pbBase, [In, MarshalAs(UnmanagedType.U4)] int dwLength, [In, MarshalAs(UnmanagedType.U4)] int dwInFlags, [MarshalAs(UnmanagedType.U4)] out int dwOutFlags); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameTokenFromAssembly( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, out IntPtr ppbStrongNameToken, [MarshalAs(UnmanagedType.U4)] out int pcbStrongNameToken); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameTokenFromAssemblyEx( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, out IntPtr ppbStrongNameToken, [MarshalAs(UnmanagedType.U4)] out int pcbStrongNameToken, out IntPtr ppbPublicKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbPublicKeyBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameTokenFromPublicKey( [In] IntPtr pbPublicKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbPublicKeyBlob, out IntPtr ppbStrongNameToken, [MarshalAs(UnmanagedType.U4)] out int pcbStrongNameToken); } ////// This is a managed wrapper for the IClrStrongName interface defined in metahost.idl /// This is very similar to the standard RCWs provided in /// ndp/fx/src/hosting/interop/microsoft/runtime/hosting/interop, but we don't want to /// reference that assembly (part of the SDK only, not .NET redist). Also, our version /// is designed specifically for easy migration from the old mscoree APIs, for example /// all APIs return HResults rather than throw exceptions. /// [System.Security.SecurityCritical] [ComImport, ComConversionLoss, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("9FD93CCF-3280-4391-B3A9-96E1CDE77C8D")] internal interface IClrStrongName { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromAssemblyFile( [In, MarshalAs(UnmanagedType.LPStr)] string pszFilePath, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] out byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromAssemblyFileW( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromBlob( [In] IntPtr pbBlob, [In, MarshalAs(UnmanagedType.U4)] int cchBlob, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromFile( [In, MarshalAs(UnmanagedType.LPStr)] string pszFilePath, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromFileW( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int GetHashFromHandle( [In] IntPtr hFile, [In, Out, MarshalAs(UnmanagedType.U4)] ref int piHashAlg, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbHash, [In, MarshalAs(UnmanagedType.U4)] int cchHash, [MarshalAs(UnmanagedType.U4)] out int pchHash); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameCompareAssemblies( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzAssembly1, [In, MarshalAs(UnmanagedType.LPWStr)] string pwzAssembly2, [MarshalAs(UnmanagedType.U4)] out int dwResult); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameFreeBuffer( [In] IntPtr pbMemory); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameGetBlob( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pbBlob, [In, Out, MarshalAs(UnmanagedType.U4)] ref int pcbBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameGetBlobFromImage( [In] IntPtr pbBase, [In, MarshalAs(UnmanagedType.U4)] int dwLength, [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pbBlob, [In, Out, MarshalAs(UnmanagedType.U4)] ref int pcbBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameGetPublicKey( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pbKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbKeyBlob, out IntPtr ppbPublicKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbPublicKeyBlob); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameHashSize( [In, MarshalAs(UnmanagedType.U4)] int ulHashAlg, [MarshalAs(UnmanagedType.U4)] out int cbSize); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameKeyDelete( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameKeyGen( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In, MarshalAs(UnmanagedType.U4)] int dwFlags, out IntPtr ppbKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbKeyBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameKeyGenEx( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In, MarshalAs(UnmanagedType.U4)] int dwFlags, [In, MarshalAs(UnmanagedType.U4)] int dwKeySize, out IntPtr ppbKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbKeyBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameKeyInstall( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] pbKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbKeyBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureGeneration( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, MarshalAs(UnmanagedType.LPWStr)] string pwzKeyContainer, [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbKeyBlob, [In, Out] IntPtr ppbSignatureBlob, [MarshalAs(UnmanagedType.U4)] out int pcbSignatureBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureGenerationEx( [In, MarshalAs(UnmanagedType.LPWStr)] string wszFilePath, [In, MarshalAs(UnmanagedType.LPWStr)] string wszKeyContainer, [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] byte[] pbKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbKeyBlob, [In, Out] IntPtr ppbSignatureBlob, [MarshalAs(UnmanagedType.U4)] out int pcbSignatureBlob, [In, MarshalAs(UnmanagedType.U4)] int dwFlags); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureSize( [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] byte[] pbPublicKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbPublicKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbSize); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureVerification( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, MarshalAs(UnmanagedType.U4)] int dwInFlags, [MarshalAs(UnmanagedType.U4)] out int dwOutFlags); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureVerificationEx( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, [In, MarshalAs(UnmanagedType.I1)] bool fForceVerification, [MarshalAs(UnmanagedType.I1)] out bool fWasVerified); [return: MarshalAs(UnmanagedType.U4)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameSignatureVerificationFromImage( [In] IntPtr pbBase, [In, MarshalAs(UnmanagedType.U4)] int dwLength, [In, MarshalAs(UnmanagedType.U4)] int dwInFlags, [MarshalAs(UnmanagedType.U4)] out int dwOutFlags); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameTokenFromAssembly( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, out IntPtr ppbStrongNameToken, [MarshalAs(UnmanagedType.U4)] out int pcbStrongNameToken); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameTokenFromAssemblyEx( [In, MarshalAs(UnmanagedType.LPWStr)] string pwzFilePath, out IntPtr ppbStrongNameToken, [MarshalAs(UnmanagedType.U4)] out int pcbStrongNameToken, out IntPtr ppbPublicKeyBlob, [MarshalAs(UnmanagedType.U4)] out int pcbPublicKeyBlob); [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] [PreserveSig] int StrongNameTokenFromPublicKey( [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] byte[] pbPublicKeyBlob, [In, MarshalAs(UnmanagedType.U4)] int cbPublicKeyBlob, out IntPtr ppbStrongNameToken, [MarshalAs(UnmanagedType.U4)] out int pcbStrongNameToken); } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BasicViewGenerator.cs
- DbConnectionPool.cs
- TypeReference.cs
- XmlAtomicValue.cs
- ComponentConverter.cs
- TableItemStyle.cs
- SqlServices.cs
- StringInfo.cs
- TypeForwardedToAttribute.cs
- XmlValidatingReader.cs
- CodeBinaryOperatorExpression.cs
- ByteStack.cs
- NamespaceEmitter.cs
- DesignTimeXamlWriter.cs
- DataTableTypeConverter.cs
- ClientOperationFormatterProvider.cs
- XmlDocumentSchema.cs
- NumberFormatter.cs
- CompilationPass2TaskInternal.cs
- CachedBitmap.cs
- PropertyTabAttribute.cs
- DataKeyArray.cs
- StylusPlugInCollection.cs
- ConfigXmlSignificantWhitespace.cs
- LogStream.cs
- __Filters.cs
- ChannelManager.cs
- OlePropertyStructs.cs
- DefaultBinder.cs
- ReachBasicContext.cs
- HtmlTextArea.cs
- HwndTarget.cs
- ServiceHost.cs
- PersonalizationProviderHelper.cs
- UrlAuthFailureHandler.cs
- ColumnMapProcessor.cs
- HttpVersion.cs
- LayoutManager.cs
- NetworkInterface.cs
- ScriptRegistrationManager.cs
- XamlTemplateSerializer.cs
- MetadataItemEmitter.cs
- KeyedHashAlgorithm.cs
- WindowsToolbarAsMenu.cs
- FrameAutomationPeer.cs
- EdmItemCollection.OcAssemblyCache.cs
- DataBinder.cs
- Compiler.cs
- WebPartZoneCollection.cs
- ControlBuilder.cs
- EnvironmentPermission.cs
- HuffModule.cs
- SimplePropertyEntry.cs
- DSASignatureDeformatter.cs
- ArrayConverter.cs
- bidPrivateBase.cs
- EntityViewGenerationAttribute.cs
- Expander.cs
- FontCacheUtil.cs
- AddressAlreadyInUseException.cs
- XmlDataSourceDesigner.cs
- PopOutPanel.cs
- DotExpr.cs
- ScanQueryOperator.cs
- ExpressionEditorAttribute.cs
- StateFinalizationActivity.cs
- PageSettings.cs
- ObjectAssociationEndMapping.cs
- SqlNode.cs
- DesigntimeLicenseContextSerializer.cs
- ReflectionUtil.cs
- ValueType.cs
- MessageSecurityOverMsmqElement.cs
- RegexStringValidatorAttribute.cs
- EntityModelSchemaGenerator.cs
- BinaryFormatterWriter.cs
- SerialPinChanges.cs
- DataGridViewTopRowAccessibleObject.cs
- DesignSurfaceCollection.cs
- BuildManagerHost.cs
- MultiTrigger.cs
- TreeBuilder.cs
- MILUtilities.cs
- Literal.cs
- ResourceAssociationTypeEnd.cs
- ExpressionPrinter.cs
- ControlEvent.cs
- HotSpot.cs
- control.ime.cs
- TemplateKeyConverter.cs
- KoreanCalendar.cs
- XmlSchemaAnnotation.cs
- ComplexBindingPropertiesAttribute.cs
- ConfigurationPropertyAttribute.cs
- ListControl.cs
- SiteMapNodeCollection.cs
- AsymmetricAlgorithm.cs
- DataGridViewCellParsingEventArgs.cs
- CodeEventReferenceExpression.cs
- OledbConnectionStringbuilder.cs