情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

C#でアセンブリの署名を検証する

署名されたアセンブリが改竄されていないか検証する場合は、mscoree.dllStrongNameSignatureVerificationEx関数を使用します。

[DllImport("mscoree.dll", CharSet = CharSet.Unicode)]
static extern bool StrongNameSignatureVerificationEx(string wszFilePath, bool fForceVerification, ref bool pfWasVerified);

public static bool ValidateSignature(string assembly)
{
    bool notForced = false;
    return StrongNameSignatureVerificationEx(assembly, false, ref notForced);
}

また、公開鍵(やそのトークン)が正しいか検証する場合は、AssemblyName.GetPublicKey関数やAssemblyName.GetPublicKeyToken関数を使用します。

public static bool ValidatePublicKeyToken(Assembly assembly, byte[] appropriatePublicKeyToken)
{
    return assembly.GetName().GetPublicKeyToken().SequenceEqual(appropriatePublicKeyToken);
}

public static bool ValidatePublicKey(Assembly assembly, byte[] appropriatePublicKey)
{
    return assembly.GetName().GetPublicKey().SequenceEqual(appropriatePublicKey);
}
pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-C#