public static void ProcessConfigSettings(
     SafeConfigHandle configHandle,
     IntPtr configPtr,
     ManualConfigSettings ManualConfigSettings)
 {
     ProcessInMemoryCertificatesIfConfigured(
         configHandle,
         configPtr,
         ManualConfigSettings);
 }
        private static void ProcessInMemoryCertificatesIfConfigured(
            SafeConfigHandle configHandle,
            IntPtr configPtr,
            ManualConfigSettings ManualConfigSettings)
        {
            if (ManualConfigSettings.X509Certificate == null)
            {
                return;
            }

            X509Certificate2 caCertificate = ManualConfigSettings.CAX509Certificate;

            if (caCertificate == null)
            {
                caCertificate = AttemptToResolveCACertificateFromUserCertificate(ManualConfigSettings.X509Certificate);
            }

            if (caCertificate == null)
            {
                throw new InvalidOperationException("An accompanying in-memory CA certificate must be provided");
            }

            PrivateKeyAlgorithmAndBytes privateKeyAlgorithmAndBytes = ManualConfigSettings.PrivateKeyAlgorithmAndBytes;

            if (privateKeyAlgorithmAndBytes == null)
            {
                privateKeyAlgorithmAndBytes = AttemptToResolvePrivateKeyFromUserCertificate(ManualConfigSettings.X509Certificate);
            }

            if (privateKeyAlgorithmAndBytes == null)
            {
                throw new InvalidOperationException("A private key must accompany the in-memory certificate");
            }

            LibRdKafka.conf_set_bytes(
                configPtr,
                ManualConfigSettings.SettingNameSslCertificateLocationInMemory,
                ManualConfigSettings.X509Certificate.RawData);

            LibRdKafka.conf_set_bytes(
                configPtr,
                ManualConfigSettings.SettingNameSslCALocationInMemory,
                caCertificate.RawData);

            LibRdKafka.conf_set_bytes(
                configPtr,
                ManualConfigSettings.SettingNameSslKeyInMemory,
                privateKeyAlgorithmAndBytes.RawData);

            configHandle.Set(
                ManualConfigSettings.SettingNameSslKeyInMemoryType,
                privateKeyAlgorithmAndBytes.PrivateKeyAlgorithmInUse);
        }