2 // X509ChainStatus.cs - System.Security.Cryptography.X509Certificates.X509ChainStatus
5 // Sebastien Pouliot <sebastien@ximian.com>
7 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
8 // Copyright (C) 2006 Novell Inc. (http://www.novell.com)
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 #if NET_2_0 && SECURITY_DEP
32 namespace System
.Security
.Cryptography
.X509Certificates
{
34 public struct X509ChainStatus
{
36 private X509ChainStatusFlags status
;
39 internal X509ChainStatus (X509ChainStatusFlags flag
)
42 info
= GetInformation (flag
);
47 public X509ChainStatusFlags Status
{
48 get { return status; }
49 set { status = value; }
52 public string StatusInformation
{
59 // note: flags isn't a flag (i.e. multiple values) when used here
60 static internal string GetInformation (X509ChainStatusFlags flags
)
63 case X509ChainStatusFlags
.NotTimeValid
:
64 case X509ChainStatusFlags
.NotTimeNested
:
65 case X509ChainStatusFlags
.Revoked
:
66 case X509ChainStatusFlags
.NotSignatureValid
:
67 case X509ChainStatusFlags
.NotValidForUsage
:
68 case X509ChainStatusFlags
.UntrustedRoot
:
69 case X509ChainStatusFlags
.RevocationStatusUnknown
:
70 case X509ChainStatusFlags
.Cyclic
:
71 case X509ChainStatusFlags
.InvalidExtension
:
72 case X509ChainStatusFlags
.InvalidPolicyConstraints
:
73 case X509ChainStatusFlags
.InvalidBasicConstraints
:
74 case X509ChainStatusFlags
.InvalidNameConstraints
:
75 case X509ChainStatusFlags
.HasNotSupportedNameConstraint
:
76 case X509ChainStatusFlags
.HasNotDefinedNameConstraint
:
77 case X509ChainStatusFlags
.HasNotPermittedNameConstraint
:
78 case X509ChainStatusFlags
.HasExcludedNameConstraint
:
79 case X509ChainStatusFlags
.PartialChain
:
80 case X509ChainStatusFlags
.CtlNotTimeValid
:
81 case X509ChainStatusFlags
.CtlNotSignatureValid
:
82 case X509ChainStatusFlags
.CtlNotValidForUsage
:
83 case X509ChainStatusFlags
.OfflineRevocation
:
84 case X509ChainStatusFlags
.NoIssuanceChainPolicy
:
85 return Locale
.GetText (flags
.ToString ()); // FIXME - add a better description
86 case X509ChainStatusFlags
.NoError
:
88 // should never happen