From 5805a2c59706bee2dc02998ef3babb5d5c577ae2 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Mon, 13 May 2013 11:09:35 -0400 Subject: [PATCH] Allow compiling SSL/TLS and NTLM support directly into System.dll to avoid a dependency (on Mono.Security assembly) and avoid code duplication (with mscorlib.dll) --- .../Mono.Security.Authenticode/PrivateKey.cs | 7 +++- .../Mono.Security.Cryptography/ARC4Managed.cs | 7 +++- .../Mono.Security.Cryptography/MD4.cs | 14 ++++++-- .../Mono.Security.Cryptography/MD4Managed.cs | 7 +++- .../Mono.Security.Cryptography/RC4.cs | 14 ++++++-- .../ChallengeResponse.cs | 7 +++- .../ChallengeResponse2.cs | 7 +++- .../Mono.Security.Protocol.Ntlm/MessageBase.cs | 7 +++- .../Mono.Security.Protocol.Ntlm/NtlmAuthLevel.cs | 7 +++- .../Mono.Security.Protocol.Ntlm/NtlmFlags.cs | 7 +++- .../Mono.Security.Protocol.Ntlm/Type1Message.cs | 7 +++- .../Mono.Security.Protocol.Ntlm/Type2Message.cs | 7 +++- .../Mono.Security.Protocol.Ntlm/Type3Message.cs | 7 +++- .../CipherAlgorithmType.cs | 7 +++- .../ExchangeAlgorithmType.cs | 7 +++- .../HashAlgorithmType.cs | 7 +++- .../SecurityCompressionType.cs | 7 +++- .../SecurityProtocolType.cs | 7 +++- .../Mono.Security.Protocol.Tls/SslClientStream.cs | 39 +++++++++++++++++++--- .../Mono.Security.Protocol.Tls/SslServerStream.cs | 7 +++- .../Mono.Security.Protocol.Tls/SslStreamBase.cs | 7 +++- .../AuthorityKeyIdentifierExtension.cs | 7 +++- .../ExtendedKeyUsageExtension.cs | 6 +++- .../NetscapeCertTypeExtension.cs | 6 +++- .../SubjectAltNameExtension.cs | 6 +++- 25 files changed, 187 insertions(+), 31 deletions(-) diff --git a/mcs/class/Mono.Security/Mono.Security.Authenticode/PrivateKey.cs b/mcs/class/Mono.Security/Mono.Security.Authenticode/PrivateKey.cs index a5646d80402..94c87b6ee30 100644 --- a/mcs/class/Mono.Security/Mono.Security.Authenticode/PrivateKey.cs +++ b/mcs/class/Mono.Security/Mono.Security.Authenticode/PrivateKey.cs @@ -40,7 +40,12 @@ namespace Mono.Security.Authenticode { // References: // a. http://www.drh-consultancy.demon.co.uk/pvk.html - public class PrivateKey { +#if INSIDE_SYSTEM + internal +#else + public +#endif + class PrivateKey { private const uint magic = 0xb0b5f11e; diff --git a/mcs/class/Mono.Security/Mono.Security.Cryptography/ARC4Managed.cs b/mcs/class/Mono.Security/Mono.Security.Cryptography/ARC4Managed.cs index 2a54a7e4ae9..4739a3df822 100644 --- a/mcs/class/Mono.Security/Mono.Security.Cryptography/ARC4Managed.cs +++ b/mcs/class/Mono.Security/Mono.Security.Cryptography/ARC4Managed.cs @@ -34,7 +34,12 @@ namespace Mono.Security.Cryptography { // a. Usenet 1994 - RC4 Algorithm revealed // http://www.qrst.de/html/dsds/rc4.htm - public class ARC4Managed : RC4, ICryptoTransform { +#if INSIDE_SYSTEM + internal +#else + public +#endif + class ARC4Managed : RC4, ICryptoTransform { private byte[] key; private byte[] state; diff --git a/mcs/class/Mono.Security/Mono.Security.Cryptography/MD4.cs b/mcs/class/Mono.Security/Mono.Security.Cryptography/MD4.cs index e35cdfcaee2..d6aca9ba224 100644 --- a/mcs/class/Mono.Security/Mono.Security.Cryptography/MD4.cs +++ b/mcs/class/Mono.Security/Mono.Security.Cryptography/MD4.cs @@ -2,9 +2,10 @@ // MD4.cs - Message Digest 4 Abstract class // // Author: -// Sebastien Pouliot (spouliot@motus.com) +// Sebastien Pouliot (sebastien@xamarin.com) // // (C) 2003 Motus Technologies Inc. (http://www.motus.com) +// Copyright 2013 Xamarin Inc. (http://www.xamarin.com) // // @@ -33,7 +34,12 @@ using System.Security.Cryptography; namespace Mono.Security.Cryptography { - public abstract class MD4 : HashAlgorithm { +#if INSIDE_SYSTEM + internal +#else + public +#endif + abstract class MD4 : HashAlgorithm { protected MD4 () { @@ -43,8 +49,12 @@ namespace Mono.Security.Cryptography { public static new MD4 Create () { +#if FULL_AOT_RUNTIME + return new MD4Managed (); +#else // for this to work we must register ourself with CryptoConfig return Create ("MD4"); +#endif } public static new MD4 Create (string hashName) diff --git a/mcs/class/Mono.Security/Mono.Security.Cryptography/MD4Managed.cs b/mcs/class/Mono.Security/Mono.Security.Cryptography/MD4Managed.cs index a365fb5bcb5..a3059957449 100644 --- a/mcs/class/Mono.Security/Mono.Security.Cryptography/MD4Managed.cs +++ b/mcs/class/Mono.Security/Mono.Security.Cryptography/MD4Managed.cs @@ -35,7 +35,12 @@ namespace Mono.Security.Cryptography { // a. RFC1320: The MD4 Message-Digest Algorithm // http://www.ietf.org/rfc/rfc1320.txt - public class MD4Managed : MD4 { +#if INSIDE_SYSTEM + internal +#else + public +#endif + class MD4Managed : MD4 { private uint[] state; private byte[] buffer; diff --git a/mcs/class/Mono.Security/Mono.Security.Cryptography/RC4.cs b/mcs/class/Mono.Security/Mono.Security.Cryptography/RC4.cs index ce5bd081827..49a93e64a20 100644 --- a/mcs/class/Mono.Security/Mono.Security.Cryptography/RC4.cs +++ b/mcs/class/Mono.Security/Mono.Security.Cryptography/RC4.cs @@ -3,9 +3,10 @@ // RC4 is a trademark of RSA Security // // Author: -// Sebastien Pouliot (spouliot@motus.com) +// Sebastien Pouliot (sebastien@xamarin.com) // // (C) 2003 Motus Technologies Inc. (http://www.motus.com) +// Copyright 2013 Xamarin Inc. (http://www.xamarin.com) // // @@ -34,7 +35,12 @@ using System.Security.Cryptography; namespace Mono.Security.Cryptography { -public abstract class RC4 : SymmetricAlgorithm { +#if INSIDE_SYSTEM + internal +#else + public +#endif + abstract class RC4 : SymmetricAlgorithm { private static KeySizes[] s_legalBlockSizes = { new KeySizes (64, 64, 0) @@ -61,7 +67,11 @@ public abstract class RC4 : SymmetricAlgorithm { new static public RC4 Create() { +#if FULL_AOT_RUNTIME + return new ARC4Managed (); +#else return Create ("RC4"); +#endif } new static public RC4 Create (string algName) diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse.cs index eb60c6bd086..5b5e74e48c1 100644 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse.cs +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse.cs @@ -46,7 +46,12 @@ using Mono.Security.Cryptography; namespace Mono.Security.Protocol.Ntlm { [Obsolete (Type3Message.LegacyAPIWarning)] - public class ChallengeResponse : IDisposable { +#if INSIDE_SYSTEM + internal +#else + public +#endif + class ChallengeResponse : IDisposable { static private byte[] magic = { 0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25 }; diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse2.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse2.cs index abaef0e259b..747ab89c15b 100644 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse2.cs +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse2.cs @@ -49,7 +49,12 @@ using Mono.Security.Cryptography; namespace Mono.Security.Protocol.Ntlm { - public static class ChallengeResponse2 { +#if INSIDE_SYSTEM + internal +#else + public +#endif + static class ChallengeResponse2 { static private byte[] magic = { 0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25 }; diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/MessageBase.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/MessageBase.cs index d62ed40c973..0e6e571bb4e 100644 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/MessageBase.cs +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/MessageBase.cs @@ -39,7 +39,12 @@ using System.Globalization; namespace Mono.Security.Protocol.Ntlm { - public abstract class MessageBase { +#if INSIDE_SYSTEM + internal +#else + public +#endif + abstract class MessageBase { static private byte[] header = { 0x4e, 0x54, 0x4c, 0x4d, 0x53, 0x53, 0x50, 0x00 }; diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/NtlmAuthLevel.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/NtlmAuthLevel.cs index e66d5901b5b..2dc12129b5d 100644 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/NtlmAuthLevel.cs +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/NtlmAuthLevel.cs @@ -36,7 +36,12 @@ namespace Mono.Security.Protocol.Ntlm { * is LM_and_NTLM_and_try_NTLMv2_Session. */ - public enum NtlmAuthLevel { +#if INSIDE_SYSTEM + internal +#else + public +#endif + enum NtlmAuthLevel { /* Use LM and NTLM, never use NTLMv2 session security. */ LM_and_NTLM, diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/NtlmFlags.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/NtlmFlags.cs index 5b5db641a4a..f835bd8b145 100644 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/NtlmFlags.cs +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/NtlmFlags.cs @@ -40,7 +40,12 @@ using System; namespace Mono.Security.Protocol.Ntlm { [Flags] - public enum NtlmFlags : int { +#if INSIDE_SYSTEM + internal +#else + public +#endif + enum NtlmFlags : int { // The client sets this flag to indicate that it supports Unicode strings. NegotiateUnicode = 0x00000001, // This is set to indicate that the client supports OEM strings. diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type1Message.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type1Message.cs index 531fce02622..b9ef8559360 100644 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type1Message.cs +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type1Message.cs @@ -39,7 +39,12 @@ using System.Text; namespace Mono.Security.Protocol.Ntlm { - public class Type1Message : MessageBase { +#if INSIDE_SYSTEM + internal +#else + public +#endif + class Type1Message : MessageBase { private string _host; private string _domain; diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type2Message.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type2Message.cs index a2f65e3e584..e6a89936a90 100644 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type2Message.cs +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type2Message.cs @@ -39,7 +39,12 @@ using System.Security.Cryptography; namespace Mono.Security.Protocol.Ntlm { - public class Type2Message : MessageBase { +#if INSIDE_SYSTEM + internal +#else + public +#endif + class Type2Message : MessageBase { private byte[] _nonce; private string _targetName; diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type3Message.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type3Message.cs index 50010bffe61..d80a50be699 100644 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type3Message.cs +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type3Message.cs @@ -39,7 +39,12 @@ using System.Text; namespace Mono.Security.Protocol.Ntlm { - public class Type3Message : MessageBase { +#if INSIDE_SYSTEM + internal +#else + public +#endif + class Type3Message : MessageBase { private NtlmAuthLevel _level; private byte[] _challenge; diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/CipherAlgorithmType.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/CipherAlgorithmType.cs index e8e61714368..b58cc2c785e 100644 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/CipherAlgorithmType.cs +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/CipherAlgorithmType.cs @@ -26,8 +26,13 @@ using System; namespace Mono.Security.Protocol.Tls { +#if INSIDE_SYSTEM + internal +#else [Serializable] - public enum CipherAlgorithmType + public +#endif + enum CipherAlgorithmType { Des, None, diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs index a244b2ea3a5..3f5156ea93a 100644 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs @@ -26,8 +26,13 @@ using System; namespace Mono.Security.Protocol.Tls { +#if INSIDE_SYSTEM + internal +#else [Serializable] - public enum ExchangeAlgorithmType + public +#endif + enum ExchangeAlgorithmType { DiffieHellman, Fortezza, diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/HashAlgorithmType.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/HashAlgorithmType.cs index 092d7adcfd0..3f6a60cd7cf 100644 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/HashAlgorithmType.cs +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/HashAlgorithmType.cs @@ -26,8 +26,13 @@ using System; namespace Mono.Security.Protocol.Tls { +#if INSIDE_SYSTEM + internal +#else [Serializable] - public enum HashAlgorithmType + public +#endif + enum HashAlgorithmType { Md5, None, diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SecurityCompressionType.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SecurityCompressionType.cs index 730a8074696..07f5c49a38a 100644 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SecurityCompressionType.cs +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SecurityCompressionType.cs @@ -29,7 +29,12 @@ namespace Mono.Security.Protocol.Tls // Information about compression methods allowed by TLS // can be found in: // draft-ietf-tls-compression-05.txt (http://www.ietf.org/internet-drafts/draft-ietf-tls-compression-05.txt) - public enum SecurityCompressionType +#if INSIDE_SYSTEM + internal +#else + public +#endif + enum SecurityCompressionType { None = 0, Zlib = 1 diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SecurityProtocolType.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SecurityProtocolType.cs index a914afc1377..d0693e89d78 100644 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SecurityProtocolType.cs +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SecurityProtocolType.cs @@ -27,8 +27,13 @@ using System; namespace Mono.Security.Protocol.Tls { [Flags] +#if INSIDE_SYSTEM + internal +#else [Serializable] - public enum SecurityProtocolType + public +#endif + enum SecurityProtocolType { Default = -1073741824, Ssl2 = 12, diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslClientStream.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslClientStream.cs index a50679c058b..4bcc5b9f7f8 100644 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslClientStream.cs +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslClientStream.cs @@ -37,11 +37,21 @@ namespace Mono.Security.Protocol.Tls { #region Delegates - public delegate bool CertificateValidationCallback( +#if INSIDE_SYSTEM + internal +#else + public +#endif + delegate bool CertificateValidationCallback( X509Certificate certificate, int[] certificateErrors); - public class ValidationResult { +#if INSIDE_SYSTEM + internal +#else + public +#endif + class ValidationResult { bool trusted; bool user_denied; int error_code; @@ -66,22 +76,41 @@ namespace Mono.Security.Protocol.Tls } } +#if INSIDE_SYSTEM + internal +#else public +#endif delegate ValidationResult CertificateValidationCallback2 (Mono.Security.X509.X509CertificateCollection collection); - public delegate X509Certificate CertificateSelectionCallback( +#if INSIDE_SYSTEM + internal +#else + public +#endif + delegate X509Certificate CertificateSelectionCallback( X509CertificateCollection clientCertificates, X509Certificate serverCertificate, string targetHost, X509CertificateCollection serverRequestedCertificates); - public delegate AsymmetricAlgorithm PrivateKeySelectionCallback( +#if INSIDE_SYSTEM + internal +#else + public +#endif + delegate AsymmetricAlgorithm PrivateKeySelectionCallback( X509Certificate certificate, string targetHost); #endregion - public class SslClientStream : SslStreamBase +#if INSIDE_SYSTEM + internal +#else + public +#endif + class SslClientStream : SslStreamBase { #region Internal Events diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslServerStream.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslServerStream.cs index 2a9d7623223..02cfccfe952 100644 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslServerStream.cs +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslServerStream.cs @@ -34,7 +34,12 @@ using Mono.Security.Protocol.Tls.Handshake; namespace Mono.Security.Protocol.Tls { - public class SslServerStream : SslStreamBase +#if INSIDE_SYSTEM + internal +#else + public +#endif + class SslServerStream : SslStreamBase { #region Internal Events diff --git a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslStreamBase.cs b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslStreamBase.cs index 24833d14d2e..7462702d9a4 100644 --- a/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslStreamBase.cs +++ b/mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslStreamBase.cs @@ -33,7 +33,12 @@ using System.Threading; namespace Mono.Security.Protocol.Tls { - public abstract class SslStreamBase: Stream, IDisposable +#if INSIDE_SYSTEM + internal +#else + public +#endif + abstract class SslStreamBase: Stream, IDisposable { private delegate void AsyncHandshakeDelegate(InternalAsyncResult asyncResult, bool fromWrite); diff --git a/mcs/class/Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs b/mcs/class/Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs index c42a63343ff..fb6f940a1ec 100644 --- a/mcs/class/Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs +++ b/mcs/class/Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs @@ -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; diff --git a/mcs/class/Mono.Security/Mono.Security.X509.Extensions/ExtendedKeyUsageExtension.cs b/mcs/class/Mono.Security/Mono.Security.X509.Extensions/ExtendedKeyUsageExtension.cs index 46bdaa81d25..888f3a622b3 100644 --- a/mcs/class/Mono.Security/Mono.Security.X509.Extensions/ExtendedKeyUsageExtension.cs +++ b/mcs/class/Mono.Security/Mono.Security.X509.Extensions/ExtendedKeyUsageExtension.cs @@ -44,7 +44,11 @@ namespace Mono.Security.X509.Extensions { * KeyPurposeId ::= OBJECT IDENTIFIER */ - public +#if INSIDE_SYSTEM + internal +#else + public +#endif class ExtendedKeyUsageExtension : X509Extension { private ArrayList keyPurpose; diff --git a/mcs/class/Mono.Security/Mono.Security.X509.Extensions/NetscapeCertTypeExtension.cs b/mcs/class/Mono.Security/Mono.Security.X509.Extensions/NetscapeCertTypeExtension.cs index d7dd0c1930f..3cf55305aab 100644 --- a/mcs/class/Mono.Security/Mono.Security.X509.Extensions/NetscapeCertTypeExtension.cs +++ b/mcs/class/Mono.Security/Mono.Security.X509.Extensions/NetscapeCertTypeExtension.cs @@ -45,7 +45,11 @@ namespace Mono.Security.X509.Extensions { // c. 2.16.840.1.113730.1.1 - Netscape certificate type // http://www.alvestrand.no/objectid/2.16.840.1.113730.1.1.html - public +#if INSIDE_SYSTEM + internal +#else + public +#endif class NetscapeCertTypeExtension : X509Extension { /* diff --git a/mcs/class/Mono.Security/Mono.Security.X509.Extensions/SubjectAltNameExtension.cs b/mcs/class/Mono.Security/Mono.Security.X509.Extensions/SubjectAltNameExtension.cs index ef927bceb7a..23d12c5ab09 100644 --- a/mcs/class/Mono.Security/Mono.Security.X509.Extensions/SubjectAltNameExtension.cs +++ b/mcs/class/Mono.Security/Mono.Security.X509.Extensions/SubjectAltNameExtension.cs @@ -68,7 +68,11 @@ namespace Mono.Security.X509.Extensions { */ // TODO: Directories not supported - public +#if INSIDE_SYSTEM + internal +#else + public +#endif class SubjectAltNameExtension : X509Extension { private GeneralNames _names; -- 2.11.4.GIT