Esempio n. 1
0
        internal static X500DistinguishedName LoadX500Name(SafeSharedX509NameHandle namePtr)
        {
            CheckValidOpenSslHandle(namePtr);

            byte[] buf = GetDynamicBuffer((ptr, buf1, i) => GetX509NameRawBytes(ptr, buf1, i), namePtr);
            return(new X500DistinguishedName(buf));
        }
Esempio n. 2
0
        //
        // Used only by client SSL code, never returns null.
        //
        internal static string[] GetRequestCertificateAuthorities(SafeDeleteContext securityContext)
        {
            using (SafeSharedX509NameStackHandle names = Interop.Ssl.SslGetClientCAList(securityContext.SslContext))
            {
                if (names.IsInvalid)
                {
                    return(Array.Empty <string>());
                }

                int nameCount = Interop.Crypto.GetX509NameStackFieldCount(names);

                if (nameCount == 0)
                {
                    return(Array.Empty <string>());
                }

                string[] clientAuthorityNames = new string[nameCount];

                for (int i = 0; i < nameCount; i++)
                {
                    using (SafeSharedX509NameHandle nameHandle = Interop.Crypto.GetX509NameStackField(names, i))
                    {
                        X500DistinguishedName dn = Interop.Crypto.LoadX500Name(nameHandle);
                        clientAuthorityNames[i] = dn.Name;
                    }
                }

                return(clientAuthorityNames);
            }
        }
            private static ISet <string> GetRequestCertificateAuthorities(SafeSslHandle sslHandle)
            {
                HashSet <string> clientAuthorityNames = new HashSet <string>();

                using (SafeSharedX509NameStackHandle names = Interop.Ssl.SslGetClientCAList(sslHandle))
                {
                    if (names.IsInvalid)
                    {
                        return(clientAuthorityNames);
                    }

                    int nameCount = Interop.Crypto.GetX509NameStackFieldCount(names);

                    if (nameCount == 0)
                    {
                        return(clientAuthorityNames);
                    }

                    for (int i = 0; i < nameCount; i++)
                    {
                        using (SafeSharedX509NameHandle nameHandle = Interop.Crypto.GetX509NameStackField(names, i))
                        {
                            X500DistinguishedName dn = Interop.Crypto.LoadX500Name(nameHandle);
                            clientAuthorityNames.Add(dn.Name);
                        }
                    }

                    return(clientAuthorityNames);
                }
            }
Esempio n. 4
0
        internal static SafeSharedX509NameHandle GetX509NameStackField(SafeSharedX509NameStackHandle sk, int loc)
        {
            CheckValidOpenSslHandle(sk);

            SafeSharedX509NameHandle handle = GetX509NameStackField_private(sk, loc);

            if (!handle.IsInvalid)
            {
                handle.SetParent(sk);
            }

            return(handle);
        }
Esempio n. 5
0
            private static ISet <string> GetRequestCertificateAuthorities(SafeSslHandle sslHandle)
            {
                using (SafeSharedX509NameStackHandle names = Interop.Ssl.SslGetClientCAList(sslHandle))
                {
                    // TODO: When https://github.com/dotnet/corefx/pull/2862 is available for use,
                    // size this appropriately based on nameCount.
                    var clientAuthorityNames = new HashSet <string>();

                    if (!names.IsInvalid)
                    {
                        int nameCount = Interop.Crypto.GetX509NameStackFieldCount(names);
                        for (int i = 0; i < nameCount; i++)
                        {
                            using (SafeSharedX509NameHandle nameHandle = Interop.Crypto.GetX509NameStackField(names, i))
                            {
                                X500DistinguishedName dn = Interop.Crypto.LoadX500Name(nameHandle);
                                clientAuthorityNames.Add(dn.Name);
                            }
                        }
                    }

                    return(clientAuthorityNames);
                }
            }
Esempio n. 6
0
 private static extern int GetX509NameRawBytes(SafeSharedX509NameHandle x509Name, byte[] buf, int cBuf);
Esempio n. 7
0
 private static partial int GetX509NameRawBytes(SafeSharedX509NameHandle x509Name, byte[]?buf, int cBuf);