コード例 #1
0
ファイル: Config.cs プロジェクト: zhijia1122/rdkafka-dotnet
 /// <summary>
 /// Get or set a configuration value directly.
 ///
 /// See <see href="https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md">CONFIGURATION.md</see> for the full list of supported properties.
 /// </summary>
 /// <param name="name">The configuration property name.</param>
 /// <returns>The configuration property value.</returns>
 /// <exception cref="System.ArgumentException"><paramref name="value" /> is invalid.</exception>
 /// <exception cref="System.InvalidOperationException">Configuration property <paramref name="name" /> does not exist.</exception>
 public string this[string name]
 {
     set
     {
         handle.Set(name, value);
     }
     get
     {
         return(handle.Get(name));
     }
 }
        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);
        }