2 // AuthorityKeyIdentifierExtension.cs: Handles X.509 AuthorityKeyIdentifier 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-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 }
21 * AuthorityKeyIdentifier ::= SEQUENCE {
22 * keyIdentifier [0] KeyIdentifier OPTIONAL,
23 * authorityCertIssuer [1] GeneralNames OPTIONAL,
24 * authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL }
26 * KeyIdentifier ::= OCTET STRING
29 public class AuthorityKeyIdentifierExtension : X509Extension {
33 public AuthorityKeyIdentifierExtension () : base ()
35 extnOid = "2.5.29.35";
38 public AuthorityKeyIdentifierExtension (ASN1 asn1) : base (asn1) {}
40 public AuthorityKeyIdentifierExtension (X509Extension extension) : base (extension) {}
42 protected override void Decode ()
44 ASN1 sequence = new ASN1 (extnValue.Value);
45 if (sequence.Tag != 0x30)
46 throw new ArgumentException ("Invalid AuthorityKeyIdentifier extension");
47 for (int i=0; i < sequence.Count; i++) {
48 ASN1 el = sequence [i];
56 throw new ArgumentException ("Invalid AuthorityKeyIdentifier extension");
61 public override string Name {
62 get { return "Authority Key Identifier"; }
65 public override string ToString ()
67 StringBuilder sb = new StringBuilder ();
72 while (x < aki.Length) {
73 sb.Append (aki [x].ToString ("X2"));
80 // [2] CertificateSerialNumber
83 return sb.ToString ();