Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EncryptedKey.cs
- Trustee.cs
- StrokeCollectionConverter.cs
- ThreadPool.cs
- CacheSection.cs
- ObjectContext.cs
- MdImport.cs
- MaskPropertyEditor.cs
- UserControl.cs
- Tile.cs
- DataControlField.cs
- ServicePointManagerElement.cs
- TextChange.cs
- SiteMap.cs
- HttpChannelListener.cs
- Timeline.cs
- IncrementalCompileAnalyzer.cs
- SecurityState.cs
- ScaleTransform.cs
- ViewCellRelation.cs
- PinnedBufferMemoryStream.cs
- DbConnectionStringCommon.cs
- Assert.cs
- CacheForPrimitiveTypes.cs
- JsonReaderDelegator.cs
- TypeKeyValue.cs
- TextRenderer.cs
- WebExceptionStatus.cs
- EntityDesignerDataSourceView.cs
- StrokeSerializer.cs
- AuthenticationSection.cs
- SoapTypeAttribute.cs
- XmlReflectionImporter.cs
- ParameterCollection.cs
- DataBoundControlAdapter.cs
- RoutedCommand.cs
- NavigationProperty.cs
- HashHelper.cs
- CreateUserWizard.cs
- PriorityChain.cs
- QueryCacheEntry.cs
- __ComObject.cs
- XmlElementCollection.cs
- ToolStripRenderer.cs
- ControlPager.cs
- DESCryptoServiceProvider.cs
- x509utils.cs
- GeneralTransform.cs
- ParameterBuilder.cs
- ByteStack.cs
- Camera.cs
- SatelliteContractVersionAttribute.cs
- BaseParaClient.cs
- DefaultPrintController.cs
- InstanceDataCollectionCollection.cs
- FontEmbeddingManager.cs
- EmptyEnumerable.cs
- FtpRequestCacheValidator.cs
- ContentOperations.cs
- CustomTypeDescriptor.cs
- BoundColumn.cs
- SByteConverter.cs
- BitmapEffectGeneralTransform.cs
- ReferentialConstraint.cs
- CodeTypeOfExpression.cs
- BezierSegment.cs
- IDispatchConstantAttribute.cs
- MultiByteCodec.cs
- DiscoveryOperationContext.cs
- safemediahandle.cs
- InfocardChannelParameter.cs
- HideDisabledControlAdapter.cs
- StickyNoteHelper.cs
- CharStorage.cs
- KeyValuePair.cs
- WebHttpBinding.cs
- DesignerDataTable.cs
- SslSecurityTokenParameters.cs
- CodeMemberProperty.cs
- BitmapCodecInfo.cs
- ZipIOExtraFieldPaddingElement.cs
- ForeignKeyConstraint.cs
- Accessible.cs
- JsonQueryStringConverter.cs
- DataGridViewComboBoxColumnDesigner.cs
- UpdatePanel.cs
- TrackBarRenderer.cs
- _ProxyChain.cs
- control.ime.cs
- FolderLevelBuildProviderAppliesToAttribute.cs
- ValidateNames.cs
- Section.cs
- ComponentResourceKey.cs
- TypedOperationInfo.cs
- CaseInsensitiveComparer.cs
- UnsafeNativeMethods.cs
- CodeSnippetTypeMember.cs
- DbConnectionHelper.cs
- ObjectSelectorEditor.cs
- WebPartHeaderCloseVerb.cs