PublisherIdentityPermissionとは? わかりやすく解説

PublisherIdentityPermission クラス

ソフトウェア発行元ID表します。このクラス継承できません。

名前空間: System.Security.Permissions
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class
 PublisherIdentityPermission
    Inherits CodeAccessPermission
Dim instance As PublisherIdentityPermission
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public sealed class PublisherIdentityPermission
 : CodeAccessPermission
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class PublisherIdentityPermission
 sealed : public CodeAccessPermission
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class PublisherIdentityPermission
 extends CodeAccessPermission
SerializableAttribute 
ComVisibleAttribute(true) 
public final class PublisherIdentityPermission
 extends CodeAccessPermission
使用例使用例

PublisherIdentityPermission メソッド動作を示すコード例次に示します。この例は、アクセス許可使用方法を示すものではありません。PublisherIdentityPermission使用方法詳細については、「PublisherIdentityPermission」を参照してください

Imports System
Imports System.Security
Imports System.Security.Permissions
Imports System.Security.Cryptography.X509Certificates
Imports System.IO
Imports Microsoft.VisualBasic

Public Class PublisherIdentityDemo


    ' IsSubsetOf determines whether the current permission is a subset
 of the specified permission.
    Private Function IsSubsetOfDemo() As
 Boolean

        Dim retCode As Boolean
 = True

        Dim publisher1, publisher2 As [String]
        Dim pubIdPerm1, pubIdPerm2 As PublisherIdentityPermission

        Dim pubGen1 As New
 PublisherGenerator()
        Dim pubGen2 As New
 PublisherGenerator()

        pubGen1.ResetIndex()
        While pubGen1.CreatePublisher(pubIdPerm1, publisher1)
            If pubIdPerm1 Is Nothing
 Then
                GoTo ContinueWhile1
            End If
            pubGen2.ResetIndex()
            While pubGen2.CreatePublisher(pubIdPerm2, publisher2)
                If pubIdPerm2 Is Nothing
 Then
                    GoTo ContinueWhile2
                End If
                Try
                    ' Check for whether either of the publishers is
 null.
                    ' An exception will be thrown if either is null.
                    If publisher1 <> "null"
 AndAlso publisher2 <> "null"
 Then
                        If pubIdPerm1.IsSubsetOf(pubIdPerm2) Then
                            Console.WriteLine((pubIdPerm1.Certificate.GetName() &
 " is a subset of " & pubIdPerm2.Certificate.GetName()
 & ControlChars.Lf))
                        Else
                            Console.WriteLine((pubIdPerm1.Certificate.GetName() &
 " is not a subset of " & pubIdPerm2.Certificate.GetName()
 & ControlChars.Lf))
                        End If
                    End If

                Catch
                    Console.WriteLine(("An exception was thrown
 for " & publisher1 & " is a subset of "
 & publisher2 & ControlChars.Lf & "."))
                    retCode = False
                End Try
ContinueWhile2:
            End While
ContinueWhile1:
        End While


        Return retCode
    End Function 'IsSubsetOfDemo

    ' Union creates a new permission that is the union of the current
 permission and the specified permission.
    Private Function UnionDemo() As
 Boolean

        Dim retCode As Boolean
 = True

        Dim publisher1, publisher2 As [String]
        Dim pubIdPerm1, pubIdPerm2 As PublisherIdentityPermission
        Dim p3 As IPermission

        Dim pubGen1 As New
 PublisherGenerator()
        Dim pubGen2 As New
 PublisherGenerator()

        pubGen1.ResetIndex()
        While pubGen1.CreatePublisher(pubIdPerm1, publisher1)
            If pubIdPerm1 Is Nothing
 Or pubIdPerm1.Certificate Is Nothing
 Then
                GoTo ContinueWhile1
            End If
            pubGen2.ResetIndex()
            Try
                While pubGen2.CreatePublisher(pubIdPerm2, publisher2)
                    If pubIdPerm2 Is Nothing
 Or pubIdPerm2.Certificate Is Nothing
 Then
                        GoTo ContinueWhile2
                    End If
                    p3 = pubIdPerm1.Union(pubIdPerm2)

                    If Not (p3 Is
 Nothing) Then
                        Console.WriteLine(("The union of "
 & pubIdPerm1.Certificate.GetName() & " and "
 & pubIdPerm2.Certificate.GetName() & " = " & CType(p3, PublisherIdentityPermission).Certificate.GetName()))
                    Else
                        Console.WriteLine(("The union of "
 & pubIdPerm1.Certificate.GetName() & " and "
 & pubIdPerm2.Certificate.GetName() & " = null."))
                    End If
ContinueWhile2:
                End While
            Catch e As Exception
                Console.WriteLine(e.Message)
            End Try

ContinueWhile1:
        End While


        Return retCode
    End Function 'UnionDemo

    ' Intersect creates and returns a new permission that is the intersection
 of the 
    ' current permission and the permission specified.
    Private Function IntersectDemo() As
 Boolean

        Dim retCode As Boolean
 = True

        Dim publisher1, publisher2 As [String]
        Dim pubIdPerm1, pubIdPerm2, p3 As PublisherIdentityPermission

        Dim pubGen1 As New
 PublisherGenerator()
        Dim pubGen2 As New
 PublisherGenerator()

        pubGen1.ResetIndex()
        While pubGen1.CreatePublisher(pubIdPerm1, publisher1)
            If pubIdPerm1 Is Nothing
 Or pubIdPerm1.Certificate Is Nothing
 Then
                GoTo ContinueWhile1
            End If
            pubGen2.ResetIndex()
            While pubGen2.CreatePublisher(pubIdPerm2, publisher2)
                If pubIdPerm2 Is Nothing
 Or pubIdPerm2.Certificate Is Nothing
 Then
                    GoTo ContinueWhile2
                End If
                p3 = CType(pubIdPerm1.Intersect(pubIdPerm2), PublisherIdentityPermission)
                If Not (p3 Is
 Nothing) AndAlso Not (p3.Certificate
 Is Nothing) Then

                    Console.WriteLine(("The intersection of "
 & pubIdPerm1.Certificate.GetName() & " and  "
 & pubIdPerm2.Certificate.GetName() & " = " & CType(p3, PublisherIdentityPermission).Certificate.GetName()))
                Else
                    Console.WriteLine(("The intersection of "
 & pubIdPerm1.Certificate.GetName() & " and "
 & pubIdPerm2.Certificate.GetName() & " is null."))
                End If
ContinueWhile2:
            End While
ContinueWhile1:
        End While


        Return retCode
    End Function 'IntersectDemo

    '//Copy creates and returns an identical copy of the current permission.
    Private Function CopyDemo() As
 Boolean

        Dim retCode As Boolean
 = True

        Dim publisher1 As [String]
        Dim pubIdPerm1, pubIdPerm2 As PublisherIdentityPermission

        Dim pubGen1 As New
 PublisherGenerator()
        Dim pubGen2 As New
 PublisherGenerator()

        pubGen1.ResetIndex()
        While pubGen1.CreatePublisher(pubIdPerm1, publisher1)
            If pubIdPerm1 Is Nothing
 Then
                GoTo ContinueWhile1
            End If
            pubGen2.ResetIndex()
            Try
                pubIdPerm2 = CType(pubIdPerm1.Copy(), PublisherIdentityPermission)
                If Not (pubIdPerm2 Is
 Nothing) Then
                    Console.WriteLine(("Result of copy = "
 & pubIdPerm2.ToString() & ControlChars.Lf))
                Else
                    Console.WriteLine("Result of copy is null.
 " & ControlChars.Lf)
                End If


            Catch e As Exception
                Console.WriteLine(("Copy failed :"
 & pubIdPerm1.ToString() & e.ToString()))
                GoTo ContinueWhile1
            End Try
ContinueWhile1:
        End While


        Return retCode
    End Function 'CopyDemo

    ' ToXml creates an XML encoding of the permission and its current
 state; FromXml
    ' reconstructs a permission with the specified state from the XML
 encoding. 
    Private Function ToFromXmlDemo() As
 Boolean

        Dim retCode As Boolean
 = True

        Dim publisher1 As [String]
        Dim pubIdPerm1, pubIdPerm2 As PublisherIdentityPermission

        Dim pubGen1 As New
 PublisherGenerator()
        Dim pubGen2 As New
 PublisherGenerator()

        pubGen1.ResetIndex()
        While pubGen1.CreatePublisher(pubIdPerm1, publisher1)
            If pubIdPerm1 Is Nothing
 Then
                GoTo ContinueWhile1
            End If
            pubGen2.ResetIndex()
            Try
                pubIdPerm2 = New PublisherIdentityPermission(PermissionState.None)
                pubIdPerm2.FromXml(pubIdPerm1.ToXml())
                Console.WriteLine(("Result of ToFromXml = "
 & pubIdPerm2.ToString() & ControlChars.Lf))
            Catch e As Exception
                Console.WriteLine(("ToFromXml failed :"
 & pubIdPerm1.ToString() & e.ToString()))
                GoTo ContinueWhile1
            End Try
ContinueWhile1:
        End While


        Return retCode
    End Function 'ToFromXmlDemo

    ' Invoke all demos.
    Public Function RunDemo() As
 Boolean

        Dim ret As Boolean
 = True
        Dim retTmp As Boolean

        ' Call the IsSubsetOf demo.
        retTmp = IsSubsetOfDemo()
        If retTmp Then
            Console.Out.WriteLine("IsSubsetOf demo completed successfully.")
        Else
            Console.Out.WriteLine("IsSubsetOf demo failed.")
        End If
        ret = retTmp AndAlso ret
        Console.WriteLine("************************************************************************")

        ' Call the Union demo.
        retTmp = UnionDemo()
        If retTmp Then
            Console.Out.WriteLine("Union demo completed successfully.")
        Else
            Console.Out.WriteLine("Union demo failed.")
        End If
        ret = retTmp AndAlso ret
        Console.WriteLine("************************************************************************")

        ' Call the Intersect demo.    
        retTmp = IntersectDemo()
        If retTmp Then
            Console.Out.WriteLine("Intersect demo completed successfully.")
        Else
            Console.Out.WriteLine("Intersect demo failed.")
        End If
        ret = retTmp AndAlso ret
        Console.WriteLine("************************************************************************")


        ' Call the Copy demo.    
        retTmp = CopyDemo()
        If retTmp Then
            Console.Out.WriteLine("Copy demo completed successfully.
 ")
        Else
            Console.Out.WriteLine("Copy demo failed.")
        End If
        ret = retTmp AndAlso ret
        Console.WriteLine("************************************************************************")

        ' Call the ToFromXml demo    
        retTmp = ToFromXmlDemo()
        If retTmp Then
            Console.Out.WriteLine("ToFromXml demo completed successfully.")
        Else
            Console.Out.WriteLine("ToFromXml demo failed.")
        End If
        ret = retTmp AndAlso ret
        Console.WriteLine("************************************************************************")

        Return ret
    End Function 'RunDemo


    ' Test harness.
    Public Overloads Shared
 Sub Main(ByVal args() As
 [String])

        Try
            Dim democase As New
 PublisherIdentityDemo()
            Dim ret As Boolean
 = democase.RunDemo()
            If ret Then
                Console.Out.WriteLine("The PublisherIdentityPermission
 demo completed successfully.")
                Console.Out.WriteLine("Press the Enter key to
 exit.")
                Dim consoleInput As String
 = Console.ReadLine()
                System.Environment.ExitCode = 100
            Else
                Console.Out.WriteLine("The PublisherIdentityPermission
 demo failed.")
                Console.Out.WriteLine("Press the Enter key to
 exit.")
                Dim consoleInput As String
 = Console.ReadLine()
                System.Environment.ExitCode = 101
            End If
        Catch e As Exception
            Console.Out.WriteLine("The PublisherIdentityPermission
 demo failed.")
            Console.WriteLine(e.ToString())
            Console.Out.WriteLine("Press the Enter key to exit.")
            Dim consoleInput As String
 = Console.ReadLine()
            System.Environment.ExitCode = 101
        End Try
    End Sub 'Main
End Class 'PublisherIdentityDemo


' This class generates PublisherIdentityPermission objects.

Friend Class PublisherGenerator
    Private publisherCertificate(1) As X509Certificate
    Private publisherIndex As Integer
 = 0


    Public Sub New()

        Try
            Dim fs1 As New
 FileStream("MyCert1.cer", FileMode.Open)
            Dim certSBytes1(Fix(fs1.Length)) As
 [Byte]
            fs1.Read(certSBytes1, 0, Fix(fs1.Length))
            publisherCertificate(0) = New X509Certificate(certSBytes1)
            fs1.Close()
            Dim fs2 As New
 FileStream("MyCert2.cer", FileMode.Open)
            Dim certSBytes2(Fix(fs2.Length)) As
 [Byte]
            fs2.Read(certSBytes2, 0, Fix(fs2.Length))
            publisherCertificate(1) = New X509Certificate(certSBytes2)

            fs2.Close()

            ResetIndex()

        Catch e As Exception

            Console.WriteLine(("Cannot create certificate : "
 & e.ToString()))
            Console.Out.WriteLine("PublisherIdentityPermission
 demo failed.")
            System.Environment.ExitCode = 101
        End Try
    End Sub 'New


    Public Sub ResetIndex()

        publisherIndex = 0
    End Sub 'ResetIndex

    ' CreatePublisher creates a PublisherIdentityPermission.
    Public Function CreatePublisher(ByRef
 publisherPerm As PublisherIdentityPermission, ByRef
 publisher As [String]) As Boolean

        If publisherIndex >= publisherCertificate.Length &
 1 Then
            publisherPerm = Nothing
            publisher = "null"
            Return False
        End If

        If publisherIndex >= publisherCertificate.Length Then
            publisherPerm = New PublisherIdentityPermission(PermissionState.None)
            publisher = "null"
            publisherIndex &= 1
            Return True
        End If

        Dim cert As X509Certificate = publisherCertificate(publisherIndex)
        publisherIndex = publisherIndex + 1
        publisher = cert.ToString()
        Try
            publisherPerm = New PublisherIdentityPermission(cert)
            Return True
        Catch e As Exception
            Console.WriteLine(("Cannot create PublisherIdentityPermission:
 " & publisher & " " & e.ToString()))
            publisherPerm = New PublisherIdentityPermission(PermissionState.None)
            publisher = "null"
            Return True
        End Try
    End Function 'CreatePublisher
 
End Class 'PublisherGenerator
' End of PublisherGenerator.
using System;
using System.Security;
using System.Security.Permissions;
using System.Security.Cryptography.X509Certificates;
using System.IO;

[assembly: CLSCompliant(true)]

public class PublisherIdentityDemo
{

    // IsSubsetOf determines whether the current permission is a subset
 of the specified permission.
    private bool IsSubsetOfDemo()
    {

        bool retCode = true;

        String publisher1, publisher2;
        PublisherIdentityPermission pubIdPerm1, pubIdPerm2;

        PublisherGenerator pubGen1 = new PublisherGenerator();
        PublisherGenerator pubGen2 = new PublisherGenerator();

        pubGen1.ResetIndex();
        while (pubGen1.CreatePublisher(out pubIdPerm1, out publisher1))
        {
            if (pubIdPerm1 == null) continue;
            pubGen2.ResetIndex();
            while (pubGen2.CreatePublisher(out pubIdPerm2, out
 publisher2))
            {
                if (pubIdPerm2 == null) continue;

                try
                {
                    // Check for whether either of the publishers is
 null.
                    // An exception will be thrown if either is null.
                    if (publisher1 != "null"
 && publisher2 != "null")
                    {
                        if (pubIdPerm1.IsSubsetOf(pubIdPerm2))
                        {
                            Console.WriteLine(pubIdPerm1.Certificate.GetName() +
                                " is a subset of " + pubIdPerm2.Certificate.GetName()
 + "\n");
                        }
                        else
                        {
                            Console.WriteLine(pubIdPerm1.Certificate.GetName() +
                                " is not a subset of " + pubIdPerm2.Certificate.GetName()
 + "\n");
                        }
                    }

                }
                catch
                {
                    Console.WriteLine("An exception was thrown for
 " + publisher1 + " is a subset of " +
                        publisher2 + "\n.");
                    retCode = false;
                }

            }
        }


        return retCode;
    }
    // Union creates a new permission that is the union of the current
 permission and the specified permission.
    private bool UnionDemo()
    {

        bool retCode = true;

        String publisher1, publisher2;
        PublisherIdentityPermission pubIdPerm1, pubIdPerm2;
        IPermission p3;

        PublisherGenerator pubGen1 = new PublisherGenerator();
        PublisherGenerator pubGen2 = new PublisherGenerator();

        pubGen1.ResetIndex();
        while (pubGen1.CreatePublisher(out pubIdPerm1, out publisher1))
        {
            if (pubIdPerm1 == null | pubIdPerm1.Certificate
 == null) continue;
            pubGen2.ResetIndex();
            while (pubGen2.CreatePublisher(out pubIdPerm2, out
 publisher2))
            {
                if (pubIdPerm2 == null | pubIdPerm2.Certificate
 == null) continue;
                try
                {
                    p3 = pubIdPerm1.Union(pubIdPerm2);

                    if (p3 != null)
                    {
                        Console.WriteLine("The union of " + pubIdPerm1.Certificate.GetName()
 + " and "
                            + pubIdPerm2.Certificate.GetName() + " = "
                            + ((PublisherIdentityPermission)p3).Certificate.GetName());
                    }
                    else
                    {
                        Console.WriteLine("The union of " + pubIdPerm1.Certificate.GetName()
 + " and "
                            + pubIdPerm2.Certificate.GetName() + " = null.");
                    }
                }
                catch (Exception e)
                {
                    // Expected exception.
                    Console.WriteLine("An exception was thrown for
 union :" + e.Message + "\n");
                }


            }
        }


        return retCode;

    }
    // Intersect creates and returns a new permission that is the intersection
 of the
    // current permission and the permission specified.
    private bool IntersectDemo()
    {

        bool retCode = true;

        String publisher1, publisher2;
        PublisherIdentityPermission pubIdPerm1, pubIdPerm2, p3;

        PublisherGenerator pubGen1 = new PublisherGenerator();
        PublisherGenerator pubGen2 = new PublisherGenerator();

        pubGen1.ResetIndex();
        while (pubGen1.CreatePublisher(out pubIdPerm1, out publisher1))
        {
            if (pubIdPerm1 == null | pubIdPerm1.Certificate
 == null) continue;
            pubGen2.ResetIndex();
            while (pubGen2.CreatePublisher(out pubIdPerm2, out
 publisher2))
            {
                if (pubIdPerm2 == null | pubIdPerm2.Certificate
 == null) continue;
                p3 = (PublisherIdentityPermission)pubIdPerm1.Intersect(pubIdPerm2);
                if (p3 != null && p3.Certificate
 != null)
                {

                    Console.WriteLine("The intersection of " + pubIdPerm1.Certificate.GetName()
 + " and " +
                        pubIdPerm2.Certificate.GetName() + " = " +
                        ((PublisherIdentityPermission)p3).Certificate.GetName());
                }
                else
                {
                    Console.WriteLine("The intersection of " + pubIdPerm1.Certificate.GetName()
 + " and " +
                        pubIdPerm2.Certificate.GetName() + " is null.");
                }

            }
        }


        return retCode;

    }
    ////Copy creates and returns an identical copy of the current permission.
    private bool CopyDemo()
    {

        bool retCode = true;

        String publisher1;
        PublisherIdentityPermission pubIdPerm1, pubIdPerm2;

        PublisherGenerator pubGen1 = new PublisherGenerator();
        PublisherGenerator pubGen2 = new PublisherGenerator();

        pubGen1.ResetIndex();
        while (pubGen1.CreatePublisher(out pubIdPerm1, out publisher1))
        {
            if (pubIdPerm1 == null) continue;
            pubGen2.ResetIndex();
            try
            {
                pubIdPerm2 = (PublisherIdentityPermission)pubIdPerm1.Copy();
                if (pubIdPerm2 != null)
                {
                    Console.WriteLine("Result of copy = " + pubIdPerm2.ToString()
 + "\n");
                }
                else
                {
                    Console.WriteLine("Result of copy is null.
 \n");
                }


            }
            catch (Exception e)
            {
                Console.WriteLine("Copy failed :" + pubIdPerm1.ToString()
 + e);
                continue;
            }

        }


        return retCode;

    }
    // ToXml creates an XML encoding of the permission and its current
 state; FromXml
    // reconstructs a permission with the specified state from the XML
 encoding.
    private bool ToFromXmlDemo()
    {

        bool retCode = true;

        String publisher1;
        PublisherIdentityPermission pubIdPerm1, pubIdPerm2;

        PublisherGenerator pubGen1 = new PublisherGenerator();
        PublisherGenerator pubGen2 = new PublisherGenerator();

        pubGen1.ResetIndex();
        while (pubGen1.CreatePublisher(out pubIdPerm1, out publisher1))
        {
            if (pubIdPerm1 == null) continue;
            pubGen2.ResetIndex();
            try
            {
                pubIdPerm2 = new PublisherIdentityPermission(PermissionState.None);
                pubIdPerm2.FromXml(pubIdPerm1.ToXml());
                Console.WriteLine("Result of ToFromXml = " + pubIdPerm2.ToString()
 + "\n");
            }
            catch (Exception e)
            {
                Console.WriteLine("ToFromXml failed :" + pubIdPerm1.ToString()
 + e);
                continue;
            }


        }

        return retCode;

    }

    // Invoke all demos.
    public bool RunDemo()
    {

        bool ret = true;
        bool retTmp;

        // Call the IsSubsetOf demo.
        if (retTmp = IsSubsetOfDemo()) Console.Out.WriteLine("IsSubsetOf
 demo completed successfully.");
        else
            Console.Out.WriteLine("IsSubsetOf demo failed.");
        ret = retTmp && ret;
        Console.WriteLine("************************************************************************");

        // Call the Union demo.
        if (retTmp = UnionDemo()) Console.Out.WriteLine("Union
 demo completed successfully.");
        else
            Console.Out.WriteLine("Union demo failed.");
        ret = retTmp && ret;
        Console.WriteLine("************************************************************************");

        // Call the Intersect demo.
        if (retTmp = IntersectDemo()) Console.Out.WriteLine("Intersect
 demo completed successfully.");
        else
            Console.Out.WriteLine("Intersect demo failed.");
        ret = retTmp && ret;
        Console.WriteLine("************************************************************************");


        // Call the Copy demo.
        if (retTmp = CopyDemo()) Console.Out.WriteLine("Copy
 demo completed successfully. ");
        else
            Console.Out.WriteLine("Copy demo failed.");
        ret = retTmp && ret;
        Console.WriteLine("************************************************************************");

        // Call the ToFromXml demo
        if (retTmp = ToFromXmlDemo()) Console.Out.WriteLine("ToFromXml
 demo completed successfully.");
        else
            Console.Out.WriteLine("ToFromXml demo failed.");
        ret = retTmp && ret;
        Console.WriteLine("************************************************************************");

        return ret;
    }
    // Test harness.
    public static void Main(String[]
 args)
    {

        try
        {
            PublisherIdentityDemo democase = new PublisherIdentityDemo();
            bool ret = democase.RunDemo();
            if (ret)
            {
                Console.Out.WriteLine("The PublisherIdentityPermission demo
 completed successfully.");
                Console.Out.WriteLine("Press the Enter key to exit.");
                string consoleInput = Console.ReadLine();
                System.Environment.ExitCode = 100;
            }
            else
            {
                Console.Out.WriteLine("The PublisherIdentityPermission demo
 failed.");
                Console.Out.WriteLine("Press the Enter key to exit.");
                string consoleInput = Console.ReadLine();
                System.Environment.ExitCode = 101;
            }
        }
        catch (Exception e)
        {
            Console.Out.WriteLine("The PublisherIdentityPermission demo failed.");
            Console.WriteLine(e.ToString());
            Console.Out.WriteLine("Press the Enter key to exit.");
            string consoleInput = Console.ReadLine();
            System.Environment.ExitCode = 101;
        }
    }
}


// This class generates PublisherIdentityPermission objects.

internal class PublisherGenerator
{
    private X509Certificate[] publisherCertificate = new
 X509Certificate[2];
    private int publisherIndex = 0;

    public PublisherGenerator()
    {

        try
        {
            FileStream fs1 = new FileStream("MyCert1.cer",
 FileMode.Open);
            Byte[] certSBytes1 = new Byte[(int)fs1.Length];
            fs1.Read(certSBytes1, 0, (int)fs1.Length);
            publisherCertificate[0] = new X509Certificate(certSBytes1);
            fs1.Close();
            FileStream fs2 = new FileStream("MyCert2.cer",
 FileMode.Open);
            Byte[] certSBytes2 = new Byte[(int)fs2.Length];
            fs2.Read(certSBytes2, 0, (int)fs2.Length);
            publisherCertificate[1] = new X509Certificate(certSBytes2);

            fs2.Close();

            ResetIndex();

        }
        catch (Exception e)
        {

            Console.WriteLine("Cannot create certificate : " + e);
            Console.Out.WriteLine("PublisherIdentityPermission demo failed.");
            System.Environment.ExitCode = 101;

        }
    }

    public void ResetIndex()
    {

        publisherIndex = 0;

    }
    // CreatePublisher creates a PublisherIdentityPermission.
    public bool CreatePublisher(out PublisherIdentityPermission
 publisherPerm, out String publisher)
    {

        if (publisherIndex >= publisherCertificate.Length +
 1)
        {
            publisherPerm = null;
            publisher = "null";
            return false;
        }

        if (publisherIndex >= publisherCertificate.Length)
        {
            publisherPerm = new PublisherIdentityPermission(PermissionState.None);
            publisher = "null";
            publisherIndex++;
            return true;

        }

        X509Certificate cert = publisherCertificate[publisherIndex++];
        publisher = cert.ToString();
        try
        {
            publisherPerm = new PublisherIdentityPermission(cert);
            return true;
        }
        catch (Exception e)
        {
            Console.WriteLine("Cannot create PublisherIdentityPermission: "
 + publisher + " " + e);
            publisherPerm = new PublisherIdentityPermission(PermissionState.None);
            publisher = "null";
            return true;
        }

    }

} // End of PublisherGenerator.

using namespace System::Runtime::InteropServices;
using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::Security::Cryptography::X509Certificates;
using namespace System::IO;

// This class generates PublisherIdentityPermission objects.

[assembly:CLSCompliant(true)];
private ref class PublisherGenerator
{
private:
   array<X509Certificate^>^publisherCertificate;
   int publisherIndex;

public:
   PublisherGenerator()
   {
      publisherCertificate = gcnew array<X509Certificate^>(2);
      try
      {
         FileStream^ fs1 = gcnew FileStream( "MyCert1.cer",FileMode::Open
 );
         array<Byte>^certSBytes1 = gcnew array<Byte>((int)fs1->Length);
         fs1->Read( certSBytes1, 0, (int)fs1->Length );
         publisherCertificate[ 0 ] = gcnew X509Certificate( certSBytes1 );
         fs1->Close();
         FileStream^ fs2 = gcnew FileStream( "MyCert2.cer",FileMode::Open
 );
         array<Byte>^certSBytes2 = gcnew array<Byte>((int)fs2->Length);
         fs2->Read( certSBytes2, 0, (int)fs2->Length );
         publisherCertificate[ 1 ] = gcnew X509Certificate( certSBytes2 );
         fs2->Close();
         ResetIndex();
      }
      catch ( Exception^ e ) 
      {
         Console::WriteLine( "Cannot create certificate : {0}", e );
         Console::WriteLine( "PublisherIdentityPermission demo failed."
 );
         System::Environment::ExitCode = 101;
      }

   }

   void ResetIndex()
   {
      publisherIndex = 0;
   }


   // CreatePublisher creates a PublisherIdentityPermission.
   bool CreatePublisher( [Out]interior_ptr<PublisherIdentityPermission^>
 publisherPerm, [Out]interior_ptr<String^> publisher )
   {
      if ( publisherIndex >= publisherCertificate->Length
 + 1 )
      {
          *publisherPerm = nullptr;
          *publisher = "null";
         return false;
      }

      if ( publisherIndex >= publisherCertificate->Length
 )
      {
         
          *publisherPerm = gcnew PublisherIdentityPermission( PermissionState::None
 );
         
          *publisher = "null";
         publisherIndex++;
         return true;
      }

      X509Certificate^ cert = publisherCertificate[ publisherIndex++ ];
       *publisher = cert->ToString();
      try
      {
          *publisherPerm = gcnew PublisherIdentityPermission( cert );
         return true;
      }
      catch ( Exception^ e ) 
      {
         Console::WriteLine( "Cannot create PublisherIdentityPermission: {0}
 {1}",  *publisher, e );
          *publisherPerm = gcnew PublisherIdentityPermission( PermissionState::None
 );
          *publisher = "null";
         return true;
      }

   }

};


// End of PublisherGenerator.
// IsSubsetOf determines whether the current permission is a subset
 of the specified permission.
bool IsSubsetOfDemo()
{
   bool retCode = true;
   String^ publisher1;
   String^ publisher2;
   PublisherIdentityPermission^ pubIdPerm1;
   PublisherIdentityPermission^ pubIdPerm2;
   PublisherGenerator^ pubGen1 = gcnew PublisherGenerator;
   PublisherGenerator^ pubGen2 = gcnew PublisherGenerator;
   pubGen1->ResetIndex();
   while ( pubGen1->CreatePublisher(  &pubIdPerm1,  &publisher1
 ) )
   {
      if ( pubIdPerm1 == nullptr )
            continue;

      pubGen2->ResetIndex();
      while ( pubGen2->CreatePublisher(  &pubIdPerm2, 
 &publisher2 ) )
      {
         if ( pubIdPerm2 == nullptr )
                  continue;
         try
         {
            
            // Check for whether either of the publishers is null.
            // An exception will be thrown if either is null.
            if (  !publisher1->Equals( "null"
 ) &&  !publisher2->Equals( "null" ) )
            {
               if ( pubIdPerm1->IsSubsetOf( pubIdPerm2 ) )
               {
                  Console::WriteLine( "{0} is a subset of {1}\n", pubIdPerm1->Certificate->GetName(),
 pubIdPerm2->Certificate->GetName() );
               }
               else
               {
                  Console::WriteLine( "{0} is not a subset of {1}\n", pubIdPerm1->Certificate->GetName(),
 pubIdPerm2->Certificate->GetName() );
               }
            }
         }
         catch ( Exception^ ) 
         {
            Console::WriteLine( "An exception was thrown for
 {0} is a subset of {1}\n.", publisher1, publisher2 );
            retCode = false;
         }

      }
   }

   return retCode;
}


// Union creates a new permission that is the union of the current permission
 and the specified permission.
bool UnionDemo()
{
   bool retCode = true;
   String^ publisher1;
   String^ publisher2;
   PublisherIdentityPermission^ pubIdPerm1;
   PublisherIdentityPermission^ pubIdPerm2;
   IPermission^ p3;
   PublisherGenerator^ pubGen1 = gcnew PublisherGenerator;
   PublisherGenerator^ pubGen2 = gcnew PublisherGenerator;
   pubGen1->ResetIndex();
   while ( pubGen1->CreatePublisher(  &pubIdPerm1,  &publisher1
 ) )
   {
      if ( pubIdPerm1 == nullptr || pubIdPerm1->Certificate
 == nullptr )
            continue;

      pubGen2->ResetIndex();
      while ( pubGen2->CreatePublisher(  &pubIdPerm2, 
 &publisher2 ) )
      {
         if ( pubIdPerm2 == nullptr || pubIdPerm2->Certificate
 == nullptr )
                  continue;
         p3 = pubIdPerm1->Union( pubIdPerm2 );
         if ( p3 != nullptr )
         {
            Console::WriteLine( "The union of {0} and {1} = {2}", pubIdPerm1->Certificate->GetName(),
 pubIdPerm2->Certificate->GetName(), (dynamic_cast<PublisherIdentityPermission^>(p3))->Certificate->GetName()
 );
         }
         else
         {
            Console::WriteLine( "The union of {0} and {1} = null.",
 pubIdPerm1->Certificate->GetName(), pubIdPerm2->Certificate->GetName()
 );
         }
      }
   }

   return retCode;
}


// Intersect creates and returns a new permission that is the intersection
 of the 
// current permission and the permission specified.
bool IntersectDemo()
{
   bool retCode = true;
   String^ publisher1;
   String^ publisher2;
   PublisherIdentityPermission^ pubIdPerm1;
   PublisherIdentityPermission^ pubIdPerm2;
   PublisherIdentityPermission^ p3;
   PublisherGenerator^ pubGen1 = gcnew PublisherGenerator;
   PublisherGenerator^ pubGen2 = gcnew PublisherGenerator;
   pubGen1->ResetIndex();
   while ( pubGen1->CreatePublisher(  &pubIdPerm1,  &publisher1
 ) )
   {
      if ( pubIdPerm1 == nullptr || pubIdPerm1->Certificate
 == nullptr )
            continue;

      pubGen2->ResetIndex();
      while ( pubGen2->CreatePublisher(  &pubIdPerm2, 
 &publisher2 ) )
      {
         if ( pubIdPerm2 == nullptr || pubIdPerm2->Certificate
 == nullptr )
                  continue;
         p3 = dynamic_cast<PublisherIdentityPermission^>(pubIdPerm1->Intersect(
 pubIdPerm2 ));
         if ( p3 != nullptr && p3->Certificate != nullptr
 )
         {
            Console::WriteLine( "The intersection of {0} and  {1} = {2}",
 pubIdPerm1->Certificate->GetName(), pubIdPerm2->Certificate->GetName(),
 (dynamic_cast<PublisherIdentityPermission^>(p3))->Certificate->GetName() );
         }
         else
         {
            Console::WriteLine( "The intersection of {0} and {1} is null.",
 pubIdPerm1->Certificate->GetName(), pubIdPerm2->Certificate->GetName()
 );
         }
      }
   }

   return retCode;
}


////Copy creates and returns an identical copy of the current permission.
bool CopyDemo()
{
   bool retCode = true;
   String^ publisher1;
   PublisherIdentityPermission^ pubIdPerm1;
   PublisherIdentityPermission^ pubIdPerm2;
   PublisherGenerator^ pubGen1 = gcnew PublisherGenerator;
   PublisherGenerator^ pubGen2 = gcnew PublisherGenerator;
   pubGen1->ResetIndex();
   while ( pubGen1->CreatePublisher(  &pubIdPerm1,  &publisher1
 ) )
   {
      if ( pubIdPerm1 == nullptr )
            continue;

      pubGen2->ResetIndex();
      try
      {
         pubIdPerm2 = dynamic_cast<PublisherIdentityPermission^>(pubIdPerm1->Copy());
         if ( pubIdPerm2 != nullptr )
         {
            Console::WriteLine( "Result of copy = {0}\n", pubIdPerm2 );
         }
         else
         {
            Console::WriteLine( "Result of copy is null.
 \n" );
         }
      }
      catch ( Exception^ e ) 
      {
         Console::WriteLine( "Copy failed :{0}{1}", pubIdPerm1, e );
         continue;
      }

   }

   return retCode;
}


// ToXml creates an XML encoding of the permission and its current state;
 FromXml
// reconstructs a permission with the specified state from the XML encoding.
 
bool ToFromXmlDemo()
{
   bool retCode = true;
   String^ publisher1;
   PublisherIdentityPermission^ pubIdPerm1;
   PublisherIdentityPermission^ pubIdPerm2;
   PublisherGenerator^ pubGen1 = gcnew PublisherGenerator;
   PublisherGenerator^ pubGen2 = gcnew PublisherGenerator;
   pubGen1->ResetIndex();
   while ( pubGen1->CreatePublisher(  &pubIdPerm1,  &publisher1
 ) )
   {
      if ( pubIdPerm1 == nullptr )
            continue;

      pubGen2->ResetIndex();
      try
      {
         pubIdPerm2 = gcnew PublisherIdentityPermission( PermissionState::None );
         pubIdPerm2->FromXml( pubIdPerm1->ToXml() );
         Console::WriteLine( "Result of ToFromXml = {0}\n", pubIdPerm2
 );
      }
      catch ( Exception^ e ) 
      {
         Console::WriteLine( "ToFromXml failed :{0}{1}", pubIdPerm1, e
 );
         continue;
      }

   }

   return retCode;
}


// Invoke all demos.
bool RunDemo()
{
   bool ret = true;
   bool retTmp;
   
   // Call the IsSubsetOf demo.
   if ( retTmp = IsSubsetOfDemo() )
      Console::WriteLine( "IsSubsetOf demo completed successfully." );
   else
      Console::WriteLine( "IsSubsetOf demo failed." );

   ret = retTmp && ret;
   Console::WriteLine( "************************************************************************"
 );
   
   // Call the Union demo.
   if ( retTmp = UnionDemo() )
      Console::WriteLine( "Union demo completed successfully." );
   else
      Console::WriteLine( "Union demo failed." );

   ret = retTmp && ret;
   Console::WriteLine( "************************************************************************"
 );
   
   // Call the Intersect demo. 
   if ( retTmp = IntersectDemo() )
      Console::WriteLine( "Intersect demo completed successfully." );
   else
      Console::WriteLine( "Intersect demo failed." );

   ret = retTmp && ret;
   Console::WriteLine( "************************************************************************"
 );
   
   // Call the Copy demo. 
   if ( retTmp = CopyDemo() )
      Console::WriteLine( "Copy demo completed successfully. " );
   else
      Console::WriteLine( "Copy demo failed." );

   ret = retTmp && ret;
   Console::WriteLine( "************************************************************************"
 );
   
   // Call the ToFromXml demo 
   if ( retTmp = ToFromXmlDemo() )
      Console::WriteLine( "ToFromXml demo completed successfully." );
   else
      Console::WriteLine( "ToFromXml demo failed." );

   ret = retTmp && ret;
   Console::WriteLine( "************************************************************************"
 );
   return ret;
}


// Test harness.
int main()
{
   try
   {
      bool ret = RunDemo();
      if ( ret )
      {
         Console::WriteLine( "The PublisherIdentityPermission demo completed
 successfully." );
         Console::WriteLine( "Press the Enter key to exit." );
         Console::ReadLine();
         System::Environment::ExitCode = 100;
      }
      else
      {
         Console::WriteLine( "The PublisherIdentityPermission demo failed."
 );
         Console::WriteLine( "Press the Enter key to exit." );
         Console::ReadLine();
         System::Environment::ExitCode = 101;
      }
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The PublisherIdentityPermission demo failed."
 );
      Console::WriteLine( e );
      Console::WriteLine( "Press the Enter key to exit." );
      Console::ReadLine();
      System::Environment::ExitCode = 101;
   }

}

import System.*;
import System.Security.*;
import System.Security.Permissions.*;
import System.Security.Cryptography.X509Certificates.*;
import System.IO.*;

/** @assembly CLSCompliant(true)
 */

public class PublisherIdentityDemo
{
    // IsSubsetOf determines whether the current permission is a subset
 
    // of the specified permission.
    private boolean IsSubsetOfDemo() 
    {
        boolean retCode = true;
        String publisher1 = null;
        String publisher2 = null;
        PublisherIdentityPermission pubIdPerm1 = null; 
        PublisherIdentityPermission pubIdPerm2 = null;
        
        PublisherGenerator pubGen1 =  new PublisherGenerator();
        PublisherGenerator pubGen2 =  new PublisherGenerator();
        
        pubGen1.ResetIndex();
        while(pubGen1.CreatePublisher(pubIdPerm1, publisher1))
 {
            if (pubIdPerm1 == null) {
                continue ;
            }
            pubGen2.ResetIndex();
            while(pubGen2.CreatePublisher(pubIdPerm2, publisher2))
 {
                if (pubIdPerm2 == null) {
                    continue ;
                }
                
                try {
                    // Check for whether either of the publishers is
 null.
                    // An exception will be thrown if either is null.
                    if (publisher1 != "null"
 && publisher2 != "null") {
                        if ( pubIdPerm1.IsSubsetOf(pubIdPerm2)
  ) {
                            Console.WriteLine((pubIdPerm1.get_Certificate().
                            GetName() + " is a subset of " 
                                + pubIdPerm2.get_Certificate().GetName() 
                                + "\n"));
                        }
                        else {
                            Console.WriteLine((pubIdPerm1.get_Certificate().
                            GetName() + " is not a subset of " 
                                + pubIdPerm2.get_Certificate().GetName() 
                                + "\n"));
                        }
                    }
                }
                catch(System.Exception exp){
                        Console.WriteLine(("An exception was thrown for
 " 
                            + publisher1 + " is a subset of " + publisher2
 
                            + "\n."));
                        retCode = false;
                }
            }
        }
        return retCode ;
    } //IsSubsetOfDemo   

    // Union creates a new permission that is the union of the current
 
    // permission and the specified permission.
    private boolean UnionDemo() 
    {
        boolean retCode = true;
        String publisher1 = null;
        String publisher2 = null;
        PublisherIdentityPermission pubIdPerm1 = null;
        PublisherIdentityPermission pubIdPerm2 = null;
        IPermission p3;
        
        PublisherGenerator pubGen1 =  new PublisherGenerator();
        PublisherGenerator pubGen2 =  new PublisherGenerator();
        
        pubGen1.ResetIndex();
        while(pubGen1.CreatePublisher(pubIdPerm1, publisher1))
 {
                if (pubIdPerm1 == null | pubIdPerm1.get_Certificate()
                    == null) {
                    continue;
                }
                pubGen2.ResetIndex();
                while(pubGen2.CreatePublisher(pubIdPerm2, publisher2))
 {
                if (pubIdPerm2 == null | pubIdPerm2.get_Certificate()
 
                    == null) {
                    continue;
                }
                p3 = pubIdPerm1.Union(pubIdPerm2);
                
                if (p3 != null) {
                    Console.WriteLine(("The union of " 
                        + pubIdPerm1.get_Certificate().GetName() + " and "
 
                        + pubIdPerm2.get_Certificate().GetName() + " = "
 
                        + ((PublisherIdentityPermission)(p3)).get_Certificate().
                        GetName()));
                }
                else {
                    Console.WriteLine(("The union of " 
                        + pubIdPerm1.get_Certificate().GetName() 
                        + " and " + pubIdPerm2.get_Certificate().GetName()
 
                        + " = null."));
                }
            }
        } 
        return retCode ;
    } //UnionDemo    

    // Intersect creates and returns a new permission that is the 
    // intersection of the current permission and the permission specified.
    private boolean IntersectDemo() 
    {
        boolean retCode = true;
        String publisher1 = null;
        String publisher2 = null;
        PublisherIdentityPermission pubIdPerm1 = null;
        PublisherIdentityPermission pubIdPerm2 = null;
        PublisherIdentityPermission p3;
        
        PublisherGenerator pubGen1 =  new PublisherGenerator();
        PublisherGenerator pubGen2 =  new PublisherGenerator();
        
        pubGen1.ResetIndex();
        while(pubGen1.CreatePublisher(pubIdPerm1, publisher1))
 {
                if (pubIdPerm1 == null | pubIdPerm1.get_Certificate()
 
                    == null) {
                    continue;
                }
                pubGen2.ResetIndex();
                while(pubGen2.CreatePublisher(pubIdPerm2, publisher2))
 {
                if (pubIdPerm2 == null | pubIdPerm2.get_Certificate()
 
                    == null) {
                    continue;
                }
                p3 =((PublisherIdentityPermission)(
                pubIdPerm1.Intersect(pubIdPerm2)));
                if (p3 != null && p3.get_Certificate()
 != null) {
                    Console.WriteLine(("The intersection of " 
                        + pubIdPerm1.get_Certificate().GetName() 
                        + " and " + pubIdPerm2.get_Certificate().GetName()
 
                        + " = " + ((PublisherIdentityPermission)(p3)).
                        get_Certificate().GetName()));
                }
                else {
                    Console.WriteLine(("The intersection of " 
                        + pubIdPerm1.get_Certificate().GetName() 
                        + " and " + pubIdPerm2.get_Certificate().GetName()
 
                        + " is null."));
                }
            }
        } 
        return retCode ;
    } //IntersectDemo    

    //Copy creates and returns an identical copy of the current permission.
    private boolean CopyDemo() 
    {
        boolean retCode = true;
        String publisher1 = null;
        PublisherIdentityPermission pubIdPerm1 = null;
        PublisherIdentityPermission pubIdPerm2 = null;
        
        PublisherGenerator pubGen1 =  new PublisherGenerator();
        PublisherGenerator pubGen2 =  new PublisherGenerator();
        
        pubGen1.ResetIndex();
        while(pubGen1.CreatePublisher(pubIdPerm1, publisher1))
 {
            if (pubIdPerm1 == null) {
                continue ;
            }
            pubGen2.ResetIndex();
            try {
                pubIdPerm2 =((PublisherIdentityPermission)(pubIdPerm1.Copy()));
                if ( pubIdPerm2  != null  )
 {
                    Console.WriteLine(("Result of copy = " + 
                    pubIdPerm2.ToString() + "\n"));
                }
                else {
                    Console.WriteLine("Result of copy is null.
 \n");
                }
            } 
            catch(System.Exception e) {
                Console.WriteLine(("Copy failed :" 
                    + pubIdPerm1.ToString() + e));
                continue ;
            }
        }
        return retCode ;
    } //CopyDemo

    // ToXml creates an XML encoding of the permission and its 
    // current state; FromXml reconstructs a permission with the specified
 
    // state from the XML encoding.
    private boolean ToFromXmlDemo() 
    {
        boolean retCode = true;
        String publisher1 = null;
        PublisherIdentityPermission pubIdPerm1 = null;
        PublisherIdentityPermission pubIdPerm2 = null;
        
        PublisherGenerator pubGen1 =  new PublisherGenerator();
        PublisherGenerator pubGen2 =  new PublisherGenerator();
        
        pubGen1.ResetIndex();
        while(pubGen1.CreatePublisher(pubIdPerm1, publisher1))
 {
            if (pubIdPerm1 == null) {
                continue ;
            }
            pubGen2.ResetIndex();
            try {
                pubIdPerm2 = 
                    new PublisherIdentityPermission(PermissionState.None);
                pubIdPerm2.FromXml(pubIdPerm1.ToXml());
                Console.WriteLine(("Result of ToFromXml = " 
                    + pubIdPerm2.ToString() + "\n"));
            }
            catch(System.Exception e) {
                Console.WriteLine(("ToFromXml failed :" 
                    + pubIdPerm1.ToString() + e));
                continue ;
            }
        }
        return retCode ;
    } //ToFromXmlDemo

    // Invoke all demos.
    public boolean RunDemo() 
    {
        boolean ret = true;
        boolean retTmp;
        
        // Call the IsSubsetOf demo.
        if (retTmp = IsSubsetOfDemo()) {
            Console.get_Out().WriteLine("IsSubsetOf demo " 
                + "completed successfully.");
        }
        else {
            Console.get_Out().WriteLine("IsSubsetOf demo failed.");
        }
        ret = retTmp && ret;
        Console.WriteLine("******************************" 
            + "******************************************");
        
        // Call the Union demo.
        if (retTmp = UnionDemo()) {
            Console.get_Out().WriteLine("Union demo completed successfully.");
        }
        else {
            Console.get_Out().WriteLine("Union demo failed.");
        }
        ret = retTmp && ret;
        Console.WriteLine("************************************" 
            + "************************************");
        
        // Call the Intersect demo.
        if (retTmp = IntersectDemo()) {
            Console.get_Out().WriteLine("Intersect demo " 
                + "completed successfully.");
        }
        else {
            Console.get_Out().WriteLine("Intersect demo failed.");
        }
        ret = retTmp && ret;
        Console.WriteLine("*****************************************" 
            + "*******************************");
        
        // Call the Copy demo.
        if (retTmp = CopyDemo()) {
            Console.get_Out().WriteLine("Copy demo completed successfully. ");
        }
        else {
            Console.get_Out().WriteLine("Copy demo failed.");
        }
        ret = retTmp && ret;
        Console.WriteLine("*********************************************"
 
            + "***************************");
        
        // Call the ToFromXml demo
        if (retTmp = ToFromXmlDemo()) {
            Console.get_Out().WriteLine("ToFromXml demo " 
                + "completed successfully.");
        }
        else {
            Console.get_Out().WriteLine("ToFromXml demo failed.");
        }
        ret = retTmp && ret;
        Console.WriteLine("**********************************" 
            + "**************************************");
        return ret ;
    } //RunDemo

    // Test harness.
    public static void main(String[]
 args)
    {
        try {
            PublisherIdentityDemo democase =  new PublisherIdentityDemo();
            boolean ret = democase.RunDemo();
            if (ret) {
                Console.get_Out().WriteLine("The " 
                    + "PublisherIdentityPermission demo completed "
                    + "successfully.");
                Console.get_Out().WriteLine("Press the Enter key to exit.");
                String consoleInput = Console.ReadLine();
                System.Environment.set_ExitCode(100);
            }
            else {
                Console.get_Out().WriteLine("The " 
                    + "PublisherIdentityPermission demo failed.");
                Console.get_Out().WriteLine("Press the Enter key to exit.");
                String consoleInput = Console.ReadLine();
                System.Environment.set_ExitCode(101);
            }
        }
        catch(System.Exception e) {
            Console.get_Out().WriteLine("The " 
                + "PublisherIdentityPermission demo failed.");
            Console.WriteLine(e.ToString());
            Console.get_Out().WriteLine("Press the Enter key to exit.");
            String consoleInput = Console.ReadLine();
            System.Environment.set_ExitCode(101);
        }
    } 
} //PublisherIdentityDemo

// This class generates PublisherIdentityPermission objects.
class PublisherGenerator
{
    private X509Certificate publisherCertificate[] = new
 X509Certificate[2];
    private int publisherIndex = 0;
    public PublisherGenerator() 
    {
        try {
            FileStream fs1 =  new FileStream("MyCert1.cer",
 FileMode.Open);
            System.Byte certSBytes1[] = 
                new System.Byte[(int)(fs1.get_Length())];
            fs1.Read((ubyte[])certSBytes1, 0, (int)(fs1.get_Length()));
            publisherCertificate .set_Item( 0 , 
                new X509Certificate((ubyte[])certSBytes1) );
            fs1.Close();
            FileStream fs2 =  new FileStream("MyCert2.cer",
 FileMode.Open);
            System.Byte certSBytes2[] = 
                new System.Byte[(int)(fs2.get_Length())];
            fs2.Read((ubyte[])certSBytes2, 0, (int)(fs2.get_Length()));
            publisherCertificate .set_Item( 1 , 
                new X509Certificate((ubyte[])certSBytes2) );
            fs2.Close();
            ResetIndex();
        } 
        catch(System.Exception e) {
            Console.WriteLine(("Cannot create certificate : " + e));
            Console.get_Out().WriteLine("PublisherIdentityPermission "
 
                + "demo failed.");
            System.Environment.set_ExitCode(101);
        }
    } //PublisherGenerator  

    public void ResetIndex()
    {
        publisherIndex = 0;
    } //ResetIndex

    // CreatePublisher creates a PublisherIdentityPermission.
    public boolean CreatePublisher(
        PublisherIdentityPermission publisherPerm, String publisher) 
    {
        if (publisherIndex >= publisherCertificate.length +
 1) {
            publisherPerm = null;
            publisher = "null";
            return false ;
        }
        if (publisherIndex >= publisherCertificate.length)
 {
            publisherPerm = 
                new PublisherIdentityPermission(PermissionState.None);

            publisher = "null";
            publisherIndex++;
            return true ;
        }
        X509Certificate cert = publisherCertificate[publisherIndex++];
        publisher = cert.ToString();
        try {
            publisherPerm = new PublisherIdentityPermission(cert);
            return true ;
        }
        catch(System.Exception e) {
            Console.WriteLine(("Cannot create PublisherIdentityPermission: "
 
                + publisher + " " + e));
            publisherPerm = 
                new PublisherIdentityPermission(PermissionState.None);
            publisher = "null";
            return true ;
        }
    } //CreatePublisher
} //PublisherGenerator 
継承階層継承階層
System.Object
   System.Security.CodeAccessPermission
    System.Security.Permissions.PublisherIdentityPermission
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
PublisherIdentityPermission メンバ
System.Security.Permissions 名前空間
PublisherIdentityPermissionAttribute
Publisher
PublisherMembershipCondition
その他の技術情報
アクセス許可
アクセス許可要求

PublisherIdentityPermission コンストラクタ (PermissionState)

PermissionState指定して、PublisherIdentityPermission クラス新しインスタンス初期化します。

名前空間: System.Security.Permissions
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Sub New ( _
    state As PermissionState _
)
Dim state As PermissionState

Dim instance As New PublisherIdentityPermission(state)
public PublisherIdentityPermission (
    PermissionState state
)
public:
PublisherIdentityPermission (
    PermissionState state
)
public PublisherIdentityPermission (
    PermissionState state
)
public function PublisherIdentityPermission
 (
    state : PermissionState
)

パラメータ

state

PermissionState 値の 1 つ

例外例外
例外種類条件

ArgumentException

state パラメータが、PermissionState の有効値ではありません。

解説解説
使用例使用例
publisherPerm = New PublisherIdentityPermission(PermissionState.None)
publisherPerm = new PublisherIdentityPermission(PermissionState.None);
*publisherPerm = gcnew PublisherIdentityPermission( PermissionState::None );
         
publisherPerm = 
    new PublisherIdentityPermission(PermissionState.None);
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
PublisherIdentityPermission クラス
PublisherIdentityPermission メンバ
System.Security.Permissions 名前空間

PublisherIdentityPermission コンストラクタ (X509Certificate)

Authenticode X.509v3 証明書指定して、PublisherIdentityPermission クラス新しインスタンス初期化します。

名前空間: System.Security.Permissions
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

例外例外
例外種類条件

ArgumentNullException

certificate パラメータnull 参照 (Visual Basic では Nothing) です。

ArgumentException

certificate パラメータ有効な証明書ではありません。

解説解説
使用例使用例

PublisherIdentityPermission コンストラクタ使用する方法次のコード例示します。このコード例は、下記例の一部です。

Dim certPath = ("Publisher.cer")

' Create evidence for the Publisher.cer certificate.
Dim publisher As New Publisher(
 _
    X509Certificate.CreateFromCertFile(certPath))

Dim evidence As New Evidence
evidence.AddHost(publisher)

' Create an identity permission based on publisher evidence.
Dim x509Permission As New
 PublisherIdentityPermission( _
PermissionState.None)
x509Permission = publisher.CreateIdentityPermission(evidence)

' Verify that callers higher in the stack have been granted 
' permission.
x509Permission.Demand()
string certPath = ("Publisher.cer");

// Create evidence for the Publisher.cer certificate.
Publisher publisher =
    new Publisher(X509Certificate.CreateFromCertFile(certPath));
Evidence evidence = new Evidence();
evidence.AddHost(publisher);

// Create an identity permission based on publisher evidence.
PublisherIdentityPermission x509Permission =
    (PublisherIdentityPermission)publisher.
    CreateIdentityPermission(evidence);

// Verify that callers higher in the stack have been granted 
// permission.
x509Permission.Demand();
String^ certPath = "Publisher.cer";

// Create evidence for the Publisher.cer certificate.
Publisher^ publisher =
    gcnew Publisher(X509Certificate::CreateFromCertFile(certPath));
Evidence^ evidence = gcnew Evidence();
evidence->AddHost(publisher);

// Create an identity permission based on publisher evidence.
PublisherIdentityPermission^ x509Permission =
    (PublisherIdentityPermission^)
    publisher->CreateIdentityPermission(evidence);

// Verify that callers higher in the stack have been granted 
// permission.
x509Permission->Demand();
String certPath = "Publisher.cer";
// Create evidence for the Publisher.cer certificate.
Publisher publisher = new Publisher(X509Certificate.
    CreateFromCertFile(certPath));
Evidence evidence = new Evidence();
evidence.AddHost(publisher);
// Create an identity permission based on publisher evidence.
PublisherIdentityPermission x509Permission 
    = (PublisherIdentityPermission)(
    publisher.CreateIdentityPermission(evidence));
// Verify that callers higher in the stack have been granted 
// permission.
x509Permission.Demand();

PublisherIdentityPermission クラスの宣言形式および強制形式使用しアセンブリ特定の証明書署名するよう要求する完全なコード例次に示します

Imports System
Imports System.Security
Imports System.Security.Policy
Imports System.Security.Permissions
Imports System.Security.Cryptography.X509Certificates

' Declarative security requesting evidence of the Publisher.cer 
' X509 certificate.
<Assembly: PublisherIdentityPermissionAttribute( _
    SecurityAction.RequestMinimum, _
    CertFile:="Publisher.cer")> 
Public Class Form1
    Inherits System.Windows.Forms.Form

    ' Event handler for Run button.
    Private Sub Button1_Click( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles
 Button1.Click

        tbxOutput.Cursor = Cursors.WaitCursor
        tbxOutput.Text = ""

        ' Create a new publisherIdentity passing in the Form for output.
        Dim publisherIdentity As New
 PublisherIdentity(sender.parent.parent)

        If (publisherIdentity.DemandCertificate()) Then
            tbxOutput.AppendText("PublisherIdentity successfully
 verified" + _
                " the certificate." + vbCrLf)
        Else
            tbxOutput.AppendText("PublisherIdentity was unable
 to verify " + _
                "the certificate." + vbCrLf)
        End If

        ' Align interface and conclude application.
        tbxOutput.AppendText(vbCrLf + "This sample completed "
 + _
            "successfully; press Exit to continue.")

        tbxOutput.Cursor = Cursors.Default
    End Sub
    ' Event handler for Exit button.
    Private Sub Button2_Click( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles
 Button2.Click

        Application.Exit()
    End Sub
#Region " Windows Form Designer generated code "

    Public Sub New()
        MyBase.New()

        'This call is required by the Windows Form Designer.
        InitializeComponent()

        'Add any initialization after the InitializeComponent() call.

    End Sub

    'Form overrides dispose to clean up the component list.
    Protected Overloads Overrides
 Sub Dispose(ByVal disposing As
 Boolean)
        If disposing Then
            If Not (components Is
 Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer

    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.  
    'Do not modify it using the code editor.
    Friend WithEvents Panel2 As
 System.Windows.Forms.Panel
    Friend WithEvents Panel1 As
 System.Windows.Forms.Panel
    Friend WithEvents Button1 As
 System.Windows.Forms.Button
    Friend WithEvents Button2 As
 System.Windows.Forms.Button
    Friend WithEvents tbxOutput As
 System.Windows.Forms.RichTextBox
    <System.Diagnostics.DebuggerStepThrough()> _
    Private Sub InitializeComponent()
        Me.Panel2 = New System.Windows.Forms.Panel
        Me.Button1 = New System.Windows.Forms.Button
        Me.Button2 = New System.Windows.Forms.Button
        Me.Panel1 = New System.Windows.Forms.Panel
        Me.tbxOutput = New System.Windows.Forms.RichTextBox
        Me.Panel2.SuspendLayout()
        Me.Panel1.SuspendLayout()
        Me.SuspendLayout()
        '
        'Panel2
        '
        Me.Panel2.Controls.Add(Me.Button1)
        Me.Panel2.Controls.Add(Me.Button2)
        Me.Panel2.Dock = System.Windows.Forms.DockStyle.Bottom
        Me.Panel2.DockPadding.All = 20
        Me.Panel2.Location = New System.Drawing.Point(0,
 320)
        Me.Panel2.Name = "Panel2"
        Me.Panel2.Size = New System.Drawing.Size(616,
 64)
        Me.Panel2.TabIndex = 1
        '
        'Button1
        '
        Me.Button1.Dock = System.Windows.Forms.DockStyle.Right
        Me.Button1.Font = New System.Drawing.Font(
 _
            "Microsoft Sans Serif", _
            9.0!, _
            System.Drawing.FontStyle.Regular, _
            System.Drawing.GraphicsUnit.Point, _
            CType(0, Byte))
        Me.Button1.Location = New System.Drawing.Point(446,
 20)
        Me.Button1.Name = "Button1"
        Me.Button1.Size = New System.Drawing.Size(75,
 24)
        Me.Button1.TabIndex = 2
        Me.Button1.Text = "&Run"
        '
        'Button2
        '
        Me.Button2.Dock = System.Windows.Forms.DockStyle.Right
        Me.Button2.Font = New System.Drawing.Font(
 _
            "Microsoft Sans Serif", _
            9.0!, _
            System.Drawing.FontStyle.Regular, _
            System.Drawing.GraphicsUnit.Point, _
            CType(0, Byte))
        Me.Button2.Location = New System.Drawing.Point(521,
 20)
        Me.Button2.Name = "Button2"
        Me.Button2.Size = New System.Drawing.Size(75,
 24)
        Me.Button2.TabIndex = 3
        Me.Button2.Text = "E&xit"
        '
        'Panel1
        '
        Me.Panel1.Controls.Add(Me.tbxOutput)
        Me.Panel1.Dock = System.Windows.Forms.DockStyle.Fill
        Me.Panel1.DockPadding.All = 20
        Me.Panel1.Location = New System.Drawing.Point(0,
 0)
        Me.Panel1.Name = "Panel1"
        Me.Panel1.Size = New System.Drawing.Size(616,
 320)
        Me.Panel1.TabIndex = 2
        '
        'tbxOutput
        '
        Me.tbxOutput.AccessibleDescription = _
            "Displays output from application."
        Me.tbxOutput.AccessibleName = "Output
 textbox."
        Me.tbxOutput.Dock = System.Windows.Forms.DockStyle.Fill
        Me.tbxOutput.Location = New System.Drawing.Point(20,
 20)
        Me.tbxOutput.Name = "tbxOutput"
        Me.tbxOutput.Size = New System.Drawing.Size(576,
 280)
        Me.tbxOutput.TabIndex = 1
        Me.tbxOutput.Text = "Click the Run
 button to run the application."
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(6,
 15)
        Me.ClientSize = New System.Drawing.Size(616,
 384)
        Me.Controls.Add(Me.Panel1)
        Me.Controls.Add(Me.Panel2)
        Me.Name = "Form1"
        Me.Text = "PublisherIdentity"
        Me.Panel2.ResumeLayout(False)
        Me.Panel1.ResumeLayout(False)
        Me.ResumeLayout(False)

    End Sub

#End Region
End Class

Class PublisherIdentity

    Private outputControl

    Public Sub New(ByVal
 form As Form1)
        outputControl = form.tbxOutput
    End Sub
    Public Function DemandCertificate() As
 Boolean
        Dim blRetVal = False

        Try
            Dim certPath = ("Publisher.cer")

            ' Create evidence for the Publisher.cer certificate.
            Dim publisher As New Publisher(
 _
                X509Certificate.CreateFromCertFile(certPath))

            Dim evidence As New
 Evidence
            evidence.AddHost(publisher)

            ' Create an identity permission based on publisher evidence.
            Dim x509Permission As New
 PublisherIdentityPermission( _
            PermissionState.None)
            x509Permission = publisher.CreateIdentityPermission(evidence)

            ' Verify that callers higher in the stack have been granted
 
            ' permission.
            x509Permission.Demand()

            blRetVal = True

        Catch ex As System.IO.FileNotFoundException
            outputControl.AppendText("Unable to load the certificate
 file.")
            outputControl.AppendText(ex.ToString() + vbCrLf)

        Catch ex As SecurityException
            outputControl.AppendText("An exception was thrown:")
            outputControl.AppendText(ex.ToString() + vbCrLf)
        End Try

        Return blRetVal
    End Function
End Class
'
' This sample produces the following output:
'
' An exception was thrown:System.Security.SecurityException: Request
 for the
' permission of type System.Security.Permissions.PublisherIdentityPermission,
 
' mscorlib, Version=1.0.5000.0, Culture=neutral, 
' PublicKeyToken=b77a5c561934e089 failed.
'  at System.Security.CodeAccessSecurityEngine.CheckHelper(PermissionSet
 
' grantedSet, PermissionSet deniedSet, CodeAccessPermission demand,
' PermissionToken permToken)
'  at System.Security.CodeAccessSecurityEngine.Check(PermissionToken
' permToken, CodeAccessPermission demand, StackCrawlMark& stackMark,
 Int32
' checkFrames, Int32 unrestrictedOverride)
'  at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission
 cap,
' StackCrawlMark& stackMark)
'  at System.Security.CodeAccessPermission.Demand()
'  at WindowsApplication1.PublisherIdentity.DemandCertificate()

' The state of the failed permission was: 
' <IPermission class="System.Security.Permissions.PublisherIdentityPermission
,
'  mscorlib, Version=1.0.5000.0, Culture=neutral, 
'  PublicKeyToken=b77a5c561934e089"
'            version="1"
'            X509v3Certificate="3082020E30820177A0030201020210491BB8DBE6EBC991
' 4A5ACF0698CC0E18300D06092A864886F70D0101040500301C311A3018060355040313115075
' 626C69736865724964656E74697479301E170D3034303232343031303233365A170D33393132
' 33313233353935395A301C311A3018060355040313115075626C69736865724964656E746974
' 7930819F300D06092A864886F70D010101050003818D0030818902818100BF589FB7CD2D6DB8
' 9EEF6B394A4012B7727AD71EC1E342234DF15391296B5A5667F90E4B36D0C39AE4418612300F
' 8DC1435E6390468DC055D5759D1C772D9221188B6EC93AE59783F33644B5FA9952D1F079BA4E
' 6AF253E3EA1505E10DFD1ABEEF74D9D216E690C9CF3A3AF01138B7D69AD0E7155D56630A34A0
' 3014FEFBC7750203010001A351304F304D0603551D01044630448010BFB7A1D6CD5289C1A206
' 2A691D4E325EA11E301C311A3018060355040313115075626C69736865724964656E74697479
' 8210491BB8DBE6EBC9914A5ACF0698CC0E18300D06092A864886F70D01010405000381810061
' 476417D94228CAA1003D3A68BF4265DB607A5806BBB48A31AD7726DC73F7BB2504171C5C11BC
' 6903C5D649A05C27640007C7CCF0C32D66E7BB640E353F86CBAC2E74777B3794222F82333933
' A80F9269EB4AB2319EA519F7F78922066F2C7A47F99286C8B898A5145F0C056FB82FBD136347
' 2CD8C38E9225FD5CB7CD4520A8"/>
'
' PublisherIdentity was unable to verify the certificate.
'
' This sample completed successfully; press Exit to continue.
using System;
using System.Security;
using System.Security.Policy;
using System.Security.Permissions;
using System.Security.Cryptography.X509Certificates;

// Declarative security requesting evidence of the Publisher.cer 
// X509 certificate.
[assembly:PublisherIdentityPermissionAttribute(SecurityAction.RequestMinimum,
    CertFile="Publisher.cer")]
class PublisherIdentity
{
    [STAThread]
    static void Main(string[]
 args)
    {
        if (new PublisherIdentity().DemandCertificate())
        {
            Console.WriteLine("PublisherIdentity successfully verified "
 + 
                "the certificate.");
        }
        else
        {
            Console.WriteLine("PublisherIdentity was unable to verify the "
 +
                "certificate.");
        }
    }

    private bool DemandCertificate()
    {
        bool blRetVal = false;
        try 
        {
            string certPath = ("Publisher.cer");

            // Create evidence for the Publisher.cer certificate.
            Publisher publisher =
                new Publisher(X509Certificate.CreateFromCertFile(certPath));
            Evidence evidence = new Evidence();
            evidence.AddHost(publisher);

            // Create an identity permission based on publisher evidence.
            PublisherIdentityPermission x509Permission =
                (PublisherIdentityPermission)publisher.
                CreateIdentityPermission(evidence);

            // Verify that callers higher in the stack have been granted
 
            // permission.
            x509Permission.Demand();

            blRetVal = true;
        }
        catch (SecurityException ex)
        {
            Console.WriteLine("An exception was thrown:" + ex.ToString());
        }

        return blRetVal;
    }
}
//
// This sample produces the following output:
//
// An exception was thrown:System.Security.SecurityException: Request
 for the
// permission of type System.Security.Permissions.PublisherIdentityPermission
,
// mscorlib, Version=1.0.5000.0, Culture=neutral, 
// PublicKeyToken=b77a5c561934e089 failed.
//  at System.Security.CodeAccessSecurityEngine.CheckHelper(PermissionSet
 
// grantedSet, PermissionSet deniedSet, CodeAccessPermission demand
,
// PermissionToken permToken)
//  at System.Security.CodeAccessSecurityEngine.Check(PermissionToken
// permToken, CodeAccessPermission demand, StackCrawlMark& stackMark,
 Int32
// checkFrames, Int32 unrestrictedOverride)
//  at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission
 
// cap, StackCrawlMark& stackMark)
//  at System.Security.CodeAccessPermission.Demand()
//  at WindowsApplication1.PublisherIdentity.DemandCertificate()

// The state of the failed permission was: 
// <IPermission class="System.Security.Permissions.PublisherIdentityPermission
// ,mscorlib, Version=1.0.5000.0, Culture=neutral, 
//  PublicKeyToken=b77a5c561934e089"
//            version="1"
//            X509v3Certificate="3082020E30820177A0030201020210491BB8DBE6EBC99
// 14A5ACF0698CC0E18300D06092A864886F70D0101040500301C311A30180603550403131150
// 75626C69736865724964656E74697479301E170D3034303232343031303233365A170D33393
// 13233313233353935395A301C311A3018060355040313115075626C69736865724964656E74
// 69747930819F300D06092A864886F70D010101050003818D0030818902818100BF589FB7CD2
// D6DB89EEF6B394A4012B7727AD71EC1E342234DF15391296B5A5667F90E4B36D0C39AE44186
// 12300F8DC1435E6390468DC055D5759D1C772D9221188B6EC93AE59783F33644B5FA9952D1F
// 079BA4E6AF253E3EA1505E10DFD1ABEEF74D9D216E690C9CF3A3AF01138B7D69AD0E7155D56
// 630A34A03014FEFBC7750203010001A351304F304D0603551D01044630448010BFB7A1D6CD5
// 289C1A2062A691D4E325EA11E301C311A3018060355040313115075626C6973686572496465
// 6E746974798210491BB8DBE6EBC9914A5ACF0698CC0E18300D06092A864886F70D010104050
// 00381810061476417D94228CAA1003D3A68BF4265DB607A5806BBB48A31AD7726DC73F7BB25
// 04171C5C11BC6903C5D649A05C27640007C7CCF0C32D66E7BB640E353F86CBAC2E74777B379
// 4222F82333933A80F9269EB4AB2319EA519F7F78922066F2C7A47F99286C8B898A5145F0C05
// 6FB82FBD1363472CD8C38E9225FD5CB7CD4520A8"/>
//
// PublisherIdentity was unable to verify the certificate.
//
// This sample completed successfully; press Exit to continue.
#using <System.dll>

using namespace System;
using namespace System::Security;
using namespace System::Security::Policy;
using namespace System::Security::Permissions;
using namespace System::Security::Cryptography::X509Certificates;

// Declarative security requesting evidence of the Publisher.cer 
// X509 certificate.
[assembly: PublisherIdentityPermissionAttribute(
    SecurityAction::RequestMinimum, 
    CertFile = "Publisher.cer")];
public ref class PublisherIdentity
{
public:
    bool DemandCertificate()
    {
        try
        {
            String^ certPath = "Publisher.cer";

            // Create evidence for the Publisher.cer certificate.
            Publisher^ publisher =
                gcnew Publisher(X509Certificate::CreateFromCertFile(certPath));
            Evidence^ evidence = gcnew Evidence();
            evidence->AddHost(publisher);

            // Create an identity permission based on publisher evidence.
            PublisherIdentityPermission^ x509Permission =
                (PublisherIdentityPermission^)
                publisher->CreateIdentityPermission(evidence);

            // Verify that callers higher in the stack have been granted
 
            // permission.
            x509Permission->Demand();

            return true;
        }
        catch (SecurityException^ ex)
        {
            Console::WriteLine("An exception was thrown:" + ex->ToString());
        }

        return false;
    }
};

int main()
{
    if ((gcnew PublisherIdentity())->DemandCertificate())
    {
        Console::WriteLine("PublisherIdentity successfully verified " +
            "the certificate.");
    }
    else
    {
        Console::WriteLine("PublisherIdentity was unable to verify the "
 +
            "certificate.");
    }
}
//
// This sample produces the following output:
//
// An exception was thrown:System.Security.SecurityException: Request
 for the
// permission of type System.Security.Permissions.PublisherIdentityPermission
,
// mscorlib, Version=1.0.5000.0, Culture=neutral, 
// PublicKeyToken=b77a5c561934e089 failed.
//  at System.Security.CodeAccessSecurityEngine.CheckHelper(PermissionSet
 
// grantedSet, PermissionSet deniedSet, CodeAccessPermission demand
,
// PermissionToken permToken)
//  at System.Security.CodeAccessSecurityEngine.Check(PermissionToken
// permToken, CodeAccessPermission demand, StackCrawlMark& stackMark,
 Int32
// checkFrames, Int32 unrestrictedOverride)
//  at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission
 
// cap, StackCrawlMark& stackMark)
//  at System.Security.CodeAccessPermission.Demand()
//  at WindowsApplication1.PublisherIdentity.DemandCertificate()

// The state of the failed permission was: 
// <IPermission class="System.Security.Permissions.PublisherIdentityPermission
// ,mscorlib, Version=1.0.5000.0, Culture=neutral, 
//  PublicKeyToken=b77a5c561934e089"
//            version="1"
//            X509v3Certificate="3082020E30820177A0030201020210491BB8DBE6EBC99
// 14A5ACF0698CC0E18300D06092A864886F70D0101040500301C311A30180603550403131150
// 75626C69736865724964656E74697479301E170D3034303232343031303233365A170D33393
// 13233313233353935395A301C311A3018060355040313115075626C69736865724964656E74
// 69747930819F300D06092A864886F70D010101050003818D0030818902818100BF589FB7CD2
// D6DB89EEF6B394A4012B7727AD71EC1E342234DF15391296B5A5667F90E4B36D0C39AE44186
// 12300F8DC1435E6390468DC055D5759D1C772D9221188B6EC93AE59783F33644B5FA9952D1F
// 079BA4E6AF253E3EA1505E10DFD1ABEEF74D9D216E690C9CF3A3AF01138B7D69AD0E7155D56
// 630A34A03014FEFBC7750203010001A351304F304D0603551D01044630448010BFB7A1D6CD5
// 289C1A2062A691D4E325EA11E301C311A3018060355040313115075626C6973686572496465
// 6E746974798210491BB8DBE6EBC9914A5ACF0698CC0E18300D06092A864886F70D010104050
// 00381810061476417D94228CAA1003D3A68BF4265DB607A5806BBB48A31AD7726DC73F7BB25
// 04171C5C11BC6903C5D649A05C27640007C7CCF0C32D66E7BB640E353F86CBAC2E74777B379
// 4222F82333933A80F9269EB4AB2319EA519F7F78922066F2C7A47F99286C8B898A5145F0C05
// 6FB82FBD1363472CD8C38E9225FD5CB7CD4520A8"/>
//
// PublisherIdentity was unable to verify the certificate.
//
// This sample completed successfully; press Exit to continue.
import System.*;
import System.Security.*;
import System.Security.Policy.*;
import System.Security.Permissions.*;
import System.Security.Cryptography.X509Certificates.*;

// Declarative security requesting evidence of the Publisher.cer 
// X509 certificate.
/** @assembly PublisherIdentityPermissionAttribute(SecurityAction.
    RequestMinimum, CertFile = "Publisher.cer")
 */
class PublisherIdentity
{

    /** @attribute STAThread()
     */
    public static void main(String[]
 args)
    {
        if ((new PublisherIdentity()).DemandCertificate())
 {
            Console.WriteLine("PublisherIdentity successfully verified "
 
                + "the certificate.");
        }
        else {
            Console.WriteLine("PublisherIdentity was unable to verify the "
 
                + "certificate.");
        }
    } //main

    private boolean DemandCertificate()
    {
        boolean blRetVal = false;
        try {
            String certPath = "Publisher.cer";
            // Create evidence for the Publisher.cer certificate.
            Publisher publisher = new Publisher(X509Certificate.
                CreateFromCertFile(certPath));
            Evidence evidence = new Evidence();
            evidence.AddHost(publisher);
            // Create an identity permission based on publisher evidence.
            PublisherIdentityPermission x509Permission 
                = (PublisherIdentityPermission)(
                publisher.CreateIdentityPermission(evidence));
            // Verify that callers higher in the stack have been granted
 
            // permission.
            x509Permission.Demand();
            blRetVal = true;
        }
        catch (SecurityException ex) {
            Console.WriteLine("An exception was thrown:" + ex.ToString());
        }
        return blRetVal;
    } //DemandCertificate
} //PublisherIdentity
//
// This sample produces the following output:
//
// An exception was thrown:System.Security.SecurityException: Request
 for the
// permission of type System.Security.Permissions.PublisherIdentityPermission
,
// mscorlib, Version=1.0.5000.0, Culture=neutral, 
// PublicKeyToken=b77a5c561934e089 failed.
// at System.Security.CodeAccessSecurityEngine.CheckHelper(PermissionSet
 
// grantedSet, PermissionSet deniedSet, CodeAccessPermission demand
,
// PermissionToken permToken)
// at System.Security.CodeAccessSecurityEngine.Check(PermissionToken
// permToken, CodeAccessPermission demand, StackCrawlMark& stackMark,
 Int32
// checkFrames, Int32 unrestrictedOverride)
// at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission
 
// cap, StackCrawlMark& stackMark)
// at System.Security.CodeAccessPermission.Demand()
// at WindowsApplication1.PublisherIdentity.DemandCertificate()
// The state of the failed permission was: 
// <IPermission class="System.Security.Permissions.PublisherIdentityPermission
// ,mscorlib, Version=1.0.5000.0, Culture=neutral, 
// PublicKeyToken=b77a5c561934e089"
// version="1"
// X509v3Certificate="3082020E30820177A0030201020210491BB8DBE6EBC99
// 14A5ACF0698CC0E18300D06092A864886F70D0101040500301C311A30180603550403131150
// 75626C69736865724964656E74697479301E170D3034303232343031303233365A170D33393
// 13233313233353935395A301C311A3018060355040313115075626C69736865724964656E74
// 69747930819F300D06092A864886F70D010101050003818D0030818902818100BF589FB7CD2
// D6DB89EEF6B394A4012B7727AD71EC1E342234DF15391296B5A5667F90E4B36D0C39AE44186
// 12300F8DC1435E6390468DC055D5759D1C772D9221188B6EC93AE59783F33644B5FA9952D1F
// 079BA4E6AF253E3EA1505E10DFD1ABEEF74D9D216E690C9CF3A3AF01138B7D69AD0E7155D56
// 630A34A03014FEFBC7750203010001A351304F304D0603551D01044630448010BFB7A1D6CD5
// 289C1A2062A691D4E325EA11E301C311A3018060355040313115075626C6973686572496465
// 6E746974798210491BB8DBE6EBC9914A5ACF0698CC0E18300D06092A864886F70D010104050
// 00381810061476417D94228CAA1003D3A68BF4265DB607A5806BBB48A31AD7726DC73F7BB25
// 04171C5C11BC6903C5D649A05C27640007C7CCF0C32D66E7BB640E353F86CBAC2E74777B379
// 4222F82333933A80F9269EB4AB2319EA519F7F78922066F2C7A47F99286C8B898A5145F0C05
// 6FB82FBD1363472CD8C38E9225FD5CB7CD4520A8"/>
//
// PublisherIdentity was unable to verify the certificate.
//
// This sample completed successfully; press Exit to continue.
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
PublisherIdentityPermission クラス
PublisherIdentityPermission メンバ
System.Security.Permissions 名前空間

PublisherIdentityPermission コンストラクタ

PublisherIdentityPermission クラス新しインスタンス初期化します。
オーバーロードの一覧オーバーロードの一覧

名前 説明
PublisherIdentityPermission (PermissionState) PermissionState を指定してPublisherIdentityPermission クラス新しインスタンス初期化します。
PublisherIdentityPermission (X509Certificate) Authenticode X.509v3 証明書指定してPublisherIdentityPermission クラス新しインスタンス初期化します。
参照参照

関連項目

PublisherIdentityPermission クラス
PublisherIdentityPermission メンバ
System.Security.Permissions 名前空間

PublisherIdentityPermission プロパティ


パブリック プロパティパブリック プロパティ

参照参照

関連項目

PublisherIdentityPermission クラス
System.Security.Permissions 名前空間
PublisherIdentityPermissionAttribute
Publisher
PublisherMembershipCondition

その他の技術情報

アクセス許可
アクセス許可要求

PublisherIdentityPermission メソッド


パブリック メソッドパブリック メソッド

  名前 説明
パブリック メソッド Assert  アクセス許可要求によって保護されているリソースへのアクセス許可が、スタックの上位にある呼び出し元に与えられていない場合でも、呼び出しコードが、このメソッド呼び出すコード通じてリソースアクセスできるように宣言しますAssert使用すると、セキュリティ上の問題発生することがあります。 ( CodeAccessPermission から継承されます。)
パブリック メソッド Copy オーバーライドされます現在のアクセス許可コピー作成して返します
パブリック メソッド Demand  コール スタック内の上位にあるすべての呼び出し元に現在のインスタンスによって指定されているアクセス許可与えられていない場合は、実行時SecurityException強制します。 ( CodeAccessPermission から継承されます。)
パブリック メソッド Deny  コール スタックの上位の呼び出し元が、このメソッド呼び出すコード使用して現在のインスタンスによって指定されるリソースアクセスできないようにします。 ( CodeAccessPermission から継承されます。)
パブリック メソッド Equals  オーバーロードされます。 ( CodeAccessPermission から継承されます。)
パブリック メソッド FromXml オーバーライドされますXML エンコーディングから、指定した状態のアクセス許可再構築ます。
パブリック メソッド GetHashCode  ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用適した CodeAccessPermission オブジェクトハッシュ コード取得します。 ( CodeAccessPermission から継承されます。)
パブリック メソッド GetType  現在のインスタンスType取得します。 ( Object から継承されます。)
パブリック メソッド Intersect オーバーライドされます現在のアクセス許可指定したアクセス許可積集合を表すアクセス許可作成して返します
パブリック メソッド IsSubsetOf オーバーライドされます現在のアクセス許可が、指定したアクセス許可サブセットかどうか判断します
パブリック メソッド PermitOnly  コール スタックの上位の呼び出し元が、このメソッド呼び出すコード使用して現在のインスタンスによって指定されるリソース以外のすべてのリソースアクセスできないようにします。 ( CodeAccessPermission から継承されます。)
パブリック メソッド ReferenceEquals  指定した複数Object インスタンス同一かどうか判断します。 ( Object から継承されます。)
パブリック メソッド RevertAll  現在のフレーム対す以前オーバーライドをすべて削除し無効にます。 ( CodeAccessPermission から継承されます。)
パブリック メソッド RevertAssert  現在のフレーム対す以前Assert をすべて削除し無効にます。 ( CodeAccessPermission から継承されます。)
パブリック メソッド RevertDeny  現在のフレーム対す以前Deny をすべて削除し無効にます。 ( CodeAccessPermission から継承されます。)
パブリック メソッド RevertPermitOnly  現在のフレーム対す以前の PermitOnly をすべて削除し無効にます。 ( CodeAccessPermission から継承されます。)
パブリック メソッド ToString  現在のアクセス許可オブジェクト文字列形式作成して返します。 ( CodeAccessPermission から継承されます。)
パブリック メソッド ToXml オーバーライドされますアクセス許可とその現在の状態を表す XML エンコーディング作成します
パブリック メソッド Union オーバーライドされます現在のアクセス許可指定したアクセス許可和集合を表すアクセス許可作成します
参照参照

関連項目

PublisherIdentityPermission クラス
System.Security.Permissions 名前空間
PublisherIdentityPermissionAttribute
Publisher
PublisherMembershipCondition

その他の技術情報

アクセス許可
アクセス許可要求

PublisherIdentityPermission メンバ

ソフトウェア発行元ID表します。このクラス継承できません。

PublisherIdentityPermission データ型公開されるメンバを以下の表に示します


パブリック コンストラクタパブリック コンストラクタ
  名前 説明
パブリック メソッド PublisherIdentityPermission オーバーロードされます。 PublisherIdentityPermission クラス新しインスタンス初期化します。
パブリック プロパティパブリック プロパティ
パブリック メソッドパブリック メソッド
  名前 説明
パブリック メソッド Assert  アクセス許可要求によって保護されているリソースへのアクセス許可が、スタックの上位にある呼び出し元に与えられていない場合でも、呼び出しコードが、このメソッド呼び出すコード通じてリソースアクセスできるように宣言しますAssert使用すると、セキュリティ上の問題発生することがあります。 (CodeAccessPermission から継承されます。)
パブリック メソッド Copy オーバーライドされます現在のアクセス許可コピー作成して返します
パブリック メソッド Demand  コール スタック内の上位にあるすべての呼び出し元に現在のインスタンスによって指定されているアクセス許可与えられていない場合は、実行時SecurityException強制します。 (CodeAccessPermission から継承されます。)
パブリック メソッド Deny  コール スタックの上位の呼び出し元が、このメソッド呼び出すコード使用して現在のインスタンスによって指定されるリソースアクセスできないようにします。 (CodeAccessPermission から継承されます。)
パブリック メソッド Equals  オーバーロードされます。 ( CodeAccessPermission から継承されます。)
パブリック メソッド FromXml オーバーライドされますXML エンコーディングから、指定した状態のアクセス許可再構築ます。
パブリック メソッド GetHashCode  ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用適した CodeAccessPermission オブジェクトハッシュ コード取得します。 (CodeAccessPermission から継承されます。)
パブリック メソッド GetType  現在のインスタンスType取得します。 (Object から継承されます。)
パブリック メソッド Intersect オーバーライドされます現在のアクセス許可指定したアクセス許可積集合を表すアクセス許可作成して返します
パブリック メソッド IsSubsetOf オーバーライドされます現在のアクセス許可が、指定したアクセス許可サブセットかどうか判断します
パブリック メソッド PermitOnly  コール スタックの上位の呼び出し元が、このメソッド呼び出すコード使用して現在のインスタンスによって指定されるリソース以外のすべてのリソースアクセスできないようにします。 (CodeAccessPermission から継承されます。)
パブリック メソッド ReferenceEquals  指定した複数Object インスタンス同一かどうか判断します。 (Object から継承されます。)
パブリック メソッド RevertAll  現在のフレーム対す以前オーバーライドをすべて削除し無効にます。 (CodeAccessPermission から継承されます。)
パブリック メソッド RevertAssert  現在のフレーム対す以前Assert をすべて削除し無効にます。 (CodeAccessPermission から継承されます。)
パブリック メソッド RevertDeny  現在のフレーム対す以前Deny をすべて削除し無効にます。 (CodeAccessPermission から継承されます。)
パブリック メソッド RevertPermitOnly  現在のフレーム対す以前の PermitOnly をすべて削除し無効にます。 (CodeAccessPermission から継承されます。)
パブリック メソッド ToString  現在のアクセス許可オブジェクト文字列形式作成して返します。 (CodeAccessPermission から継承されます。)
パブリック メソッド ToXml オーバーライドされますアクセス許可とその現在の状態を表す XML エンコーディング作成します
パブリック メソッド Union オーバーライドされます現在のアクセス許可指定したアクセス許可和集合を表すアクセス許可作成します
参照参照

関連項目

PublisherIdentityPermission クラス
System.Security.Permissions 名前空間
PublisherIdentityPermissionAttribute
Publisher
PublisherMembershipCondition

その他の技術情報

アクセス許可
アクセス許可要求



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「PublisherIdentityPermission」の関連用語

PublisherIdentityPermissionのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



PublisherIdentityPermissionのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS