2 // PrivateKeyUsagePeriodExtension.cs: Handles X.509 PrivateKeyUsagePeriod extensions.
5 // Sebastien Pouliot <sebastien@ximian.com>
7 // (C) 2004 Novell (http://www.novell.com)
14 using Mono.Security.X509;
16 namespace Mono.Security.X509.Extensions {
19 * id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::= { id-ce 16 }
21 * PrivateKeyUsagePeriod ::= SEQUENCE {
22 * notBefore [0] GeneralizedTime OPTIONAL,
23 * notAfter [1] GeneralizedTime OPTIONAL
26 public class PrivateKeyUsagePeriodExtension : X509Extension {
28 private DateTime notBefore;
29 private DateTime notAfter;
31 public PrivateKeyUsagePeriodExtension () : base ()
33 extnOid = "2.5.29.16";
36 public PrivateKeyUsagePeriodExtension (ASN1 asn1) : base (asn1) {}
38 public PrivateKeyUsagePeriodExtension (X509Extension extension) : base (extension) {}
40 protected override void Decode ()
42 ASN1 sequence = new ASN1 (extnValue.Value);
43 if (sequence.Tag != 0x30)
44 throw new ArgumentException ("Invalid PrivateKeyUsagePeriod extension");
45 for (int i=0; i < sequence.Count; i++) {
46 switch (sequence [i].Tag) {
48 notBefore = ASN1Convert.ToDateTime (sequence [i]);
51 notAfter = ASN1Convert.ToDateTime (sequence [i]);
54 throw new ArgumentException ("Invalid PrivateKeyUsagePeriod extension");
59 public override string Name {
60 get { return "Private Key Usage Period"; }
63 public override string ToString ()
65 StringBuilder sb = new StringBuilder ();
66 if (notBefore != DateTime.MinValue) {
67 sb.Append ("Not Before: ");
68 sb.Append (notBefore.ToString ());
69 sb.Append (Environment.NewLine);
71 if (notAfter != DateTime.MinValue) {
72 sb.Append ("Not After: ");
73 sb.Append (notAfter.ToString ());
74 sb.Append (Environment.NewLine);
76 return sb.ToString ();