Merge pull request #1057 from lextm/master
[mono.git] / mcs / class / Mono.Security / Mono.Security.X509.Extensions / AuthorityKeyIdentifierExtension.cs
index c42a63343ffd9307fcebad252fd39ffa861e0932..858ee1e7e59895c7cbe55cee79deb47da343127c 100644 (file)
@@ -46,7 +46,12 @@ namespace Mono.Security.X509.Extensions {
         * KeyIdentifier ::= OCTET STRING
         */
 
-       public class AuthorityKeyIdentifierExtension : X509Extension {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class AuthorityKeyIdentifierExtension : X509Extension {
 
                private byte[] aki;
 
@@ -82,6 +87,18 @@ namespace Mono.Security.X509.Extensions {
                        }
                }
 
+               protected override void Encode ()
+               {
+                       ASN1 seq = new ASN1 (0x30);
+                       if (aki == null) {
+                               throw new InvalidOperationException ("Invalid AuthorityKeyIdentifier extension");
+                       }
+
+                       seq.Add (new ASN1 (0x80, aki));
+                       extnValue = new ASN1 (0x04);
+                       extnValue.Add (seq);
+               }
+
                public override string Name {
                        get { return "Authority Key Identifier"; }
                }
@@ -92,6 +109,7 @@ namespace Mono.Security.X509.Extensions {
                                        return null;
                                return (byte[]) aki.Clone (); 
                        }
+                       set { aki = value; }
                }
 
                public override string ToString ()