PublisherIdentityPermission クラス
アセンブリ: mscorlib (mscorlib.dll 内)

<SerializableAttribute> _ <ComVisibleAttribute(True)> _ Public NotInheritable Class PublisherIdentityPermission Inherits CodeAccessPermission
[SerializableAttribute] [ComVisibleAttribute(true)] public sealed class PublisherIdentityPermission : CodeAccessPermission
[SerializableAttribute] [ComVisibleAttribute(true)] public ref class PublisherIdentityPermission sealed : public 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.Security.CodeAccessPermission
System.Security.Permissions.PublisherIdentityPermission


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


PublisherIdentityPermission コンストラクタ (PermissionState)
アセンブリ: mscorlib (mscorlib.dll 内)



完全に制限した (None) アクセス許可または Unrestricted アクセス許可のいずれかを作成します。
![]() |
---|
.NET Framework Version 1.0 および 1.1 では、アクセス許可状態値 Unrestricted を ID アクセス許可に割り当てることはできません。.NET Framework Version 2.0 では、任意のアクセス許可状態値を ID アクセス許可に割り当てることができます。つまり、バージョン 2.0 では、ID アクセス許可の動作が、IUnrestrictedPermission インターフェイスを実装しているアクセス許可の動作と等しくなります。バージョン 2.0 のアプリケーションをバージョン 1.1 の CAS ポリシーで実行する方法については、「<legacyV1CASPolicy> 要素」を参照してください。 |

publisherPerm = New PublisherIdentityPermission(PermissionState.None)
*publisherPerm = gcnew PublisherIdentityPermission( PermissionState::None );

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


PublisherIdentityPermission コンストラクタ (X509Certificate)
アセンブリ: mscorlib (mscorlib.dll 内)

Public Sub New ( _ certificate As X509Certificate _ )
Dim certificate As X509Certificate Dim instance As New PublisherIdentityPermission(certificate)
public PublisherIdentityPermission ( X509Certificate certificate )
public: PublisherIdentityPermission ( X509Certificate^ certificate )
public PublisherIdentityPermission ( X509Certificate certificate )
public function PublisherIdentityPermission ( certificate : X509Certificate )

例外の種類 | 条件 |
---|---|
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.

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


PublisherIdentityPermission コンストラクタ

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

PublisherIdentityPermission プロパティ
PublisherIdentityPermission メソッド


PublisherIdentityPermission メンバ
ソフトウェアの発行元の ID を表します。このクラスは継承できません。
PublisherIdentityPermission データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | Certificate | ソフトウェア発行元の ID を表す Authenticode X.509v3 証明書を取得または設定します。 |


- PublisherIdentityPermissionのページへのリンク