public void Initialize() { ThrowIfDisposed(); if (_state.TryChange(State.Initial, State.Open)) { var stopwatch = Stopwatch.StartNew(); _openingEventHandler?.Invoke(new ClusterOpeningEvent(ClusterId, Settings)); if (_settings.KmsProviders != null || _settings.SchemaMap != null) { _cryptClient = CryptClientCreator.CreateCryptClient(_settings.KmsProviders, _settings.SchemaMap); } var endPoint = _settings.EndPoints.Single(); if (_settings.Scheme != ConnectionStringScheme.MongoDBPlusSrv) { _server = _serverFactory.CreateServer(_clusterType, _clusterId, _clusterClock, endPoint); InitializeServer(_server); } else { // _server will be created after srv resolving var dnsEndPoint = (DnsEndPoint)endPoint; var lookupDomainName = dnsEndPoint.Host; var monitor = _dnsMonitorFactory.CreateDnsMonitor(this, lookupDomainName, _dnsMonitorCancellationTokenSource.Token); _dnsMonitorThread = monitor.Start(); } _openedEventHandler?.Invoke(new ClusterOpenedEvent(ClusterId, Settings, stopwatch.Elapsed)); } }
// constructors public ExplicitEncryptionLibMongoCryptController( CryptClient cryptClient, ClientEncryptionOptions clientEncryptionOptions) : base( Ensure.IsNotNull(cryptClient, nameof(cryptClient)), Ensure.IsNotNull(Ensure.IsNotNull(clientEncryptionOptions, nameof(clientEncryptionOptions)).KeyVaultClient, nameof(clientEncryptionOptions.KeyVaultClient)), Ensure.IsNotNull(Ensure.IsNotNull(clientEncryptionOptions, nameof(clientEncryptionOptions)).KeyVaultNamespace, nameof(clientEncryptionOptions.KeyVaultNamespace))) { }
// constructors /// <summary> /// [Beta] Initializes a new instance of the <see cref="ClientEncryption"/> class. /// </summary> /// <param name="clientEncryptionOptions">The client encryption options.</param> public ClientEncryption(ClientEncryptionOptions clientEncryptionOptions) { _cryptClient = CryptClientCreator.CreateCryptClient( kmsProviders: clientEncryptionOptions.KmsProviders, schemaMap: null); _libMongoCryptController = new ExplicitEncryptionLibMongoCryptController( _cryptClient, clientEncryptionOptions); }
// constructors protected LibMongoCryptControllerBase( CryptClient cryptClient, IMongoClient keyVaultClient, CollectionNamespace keyVaultNamespace) { _cryptClient = cryptClient; _keyVaultClient = keyVaultClient; // _keyVaultClient might not be fully constructed at this point, don't call any instance methods on it yet _keyVaultNamespace = keyVaultNamespace; _keyVaultCollection = new Lazy <IMongoCollection <BsonDocument> >(GetKeyVaultCollection); // delay use _keyVaultClient }
public virtual void Initialize() { ThrowIfDisposed(); if (_state.TryChange(State.Initial, State.Open)) { if (_settings.KmsProviders != null || _settings.SchemaMap != null) { _cryptClient = CryptClientCreator.CreateCryptClient(_settings.KmsProviders, _settings.SchemaMap); } } }
// constructors public AutoEncryptionLibMongoCryptController( IMongoClient client, CryptClient cryptClient, AutoEncryptionOptions autoEncryptionOptions) : base( Ensure.IsNotNull(cryptClient, nameof(cryptClient)), Ensure.IsNotNull(autoEncryptionOptions, nameof(autoEncryptionOptions)).KeyVaultClient ?? client, Ensure.IsNotNull(Ensure.IsNotNull(autoEncryptionOptions, nameof(autoEncryptionOptions)).KeyVaultNamespace, nameof(autoEncryptionOptions.KeyVaultNamespace))) { _client = Ensure.IsNotNull(client, nameof(client)); // _client might not be fully constructed at this point, don't call any instance methods on it yet _mongocryptdFactory = new MongocryptdFactory(autoEncryptionOptions.ExtraOptions); _mongocryptdClient = _mongocryptdFactory.CreateMongocryptdClient(); }
// constructors protected LibMongoCryptControllerBase( CryptClient cryptClient, IMongoClient keyVaultClient, CollectionNamespace keyVaultNamespace, IReadOnlyDictionary <string, SslSettings> tlsOptions) { _cryptClient = cryptClient; _keyVaultClient = keyVaultClient; // _keyVaultClient might not be fully constructed at this point, don't call any instance methods on it yet _keyVaultNamespace = keyVaultNamespace; _keyVaultCollection = new Lazy <IMongoCollection <BsonDocument> >(GetKeyVaultCollection); // delay use _keyVaultClient _networkStreamFactory = new NetworkStreamFactory(); _tlsOptions = Ensure.IsNotNull(tlsOptions, nameof(tlsOptions)); }
// constructors private AutoEncryptionLibMongoCryptController( IMongoClient internalClient, IMongoClient keyVaultClient, IMongoClient metadataClient, CryptClient cryptClient, AutoEncryptionOptions autoEncryptionOptions) : base( Ensure.IsNotNull(cryptClient, nameof(cryptClient)), Ensure.IsNotNull(keyVaultClient, nameof(keyVaultClient)), Ensure.IsNotNull(Ensure.IsNotNull(autoEncryptionOptions, nameof(autoEncryptionOptions)).KeyVaultNamespace, nameof(autoEncryptionOptions.KeyVaultNamespace))) { _internalClient = internalClient; // can be null _metadataClient = metadataClient; // can be null _mongocryptdFactory = new MongocryptdFactory(autoEncryptionOptions.ExtraOptions); _mongocryptdClient = _mongocryptdFactory.CreateMongocryptdClient(); }
public static AutoEncryptionLibMongoCryptController Create(IMongoClient client, CryptClient cryptClient, AutoEncryptionOptions autoEncryptionOptions) { var lazyInternalClient = new Lazy <IMongoClient>(() => CreateInternalClient()); var keyVaultClient = autoEncryptionOptions.KeyVaultClient ?? lazyInternalClient.Value; var metadataClient = autoEncryptionOptions.BypassAutoEncryption ? null : lazyInternalClient.Value; var internalClient = lazyInternalClient.IsValueCreated ? lazyInternalClient.Value : null; return(new AutoEncryptionLibMongoCryptController( internalClient, keyVaultClient, metadataClient, cryptClient, autoEncryptionOptions)); IMongoClient CreateInternalClient() { var internalClientSettings = client.Settings.Clone(); internalClientSettings.AutoEncryptionOptions = null; internalClientSettings.MinConnectionPoolSize = 0; return(new MongoClient(internalClientSettings)); } }