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); }