internal static X500DistinguishedName LoadX500Name(SafeSharedX509NameHandle namePtr) { CheckValidOpenSslHandle(namePtr); byte[] buf = GetDynamicBuffer((ptr, buf1, i) => GetX509NameRawBytes(ptr, buf1, i), namePtr); return(new X500DistinguishedName(buf)); }
// // 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); } }
internal static SafeSharedX509NameHandle GetX509NameStackField(SafeSharedX509NameStackHandle sk, int loc) { CheckValidOpenSslHandle(sk); SafeSharedX509NameHandle handle = GetX509NameStackField_private(sk, loc); if (!handle.IsInvalid) { handle.SetParent(sk); } return(handle); }
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); } }
private static extern int GetX509NameRawBytes(SafeSharedX509NameHandle x509Name, byte[] buf, int cBuf);
private static partial int GetX509NameRawBytes(SafeSharedX509NameHandle x509Name, byte[]?buf, int cBuf);