@@ -86,25 +86,20 @@ public Task<BsonDocument> AddAlternateKeyNameAsync(Guid id, string alternateKeyN
86
86
/// <param name="kmsProvider">The kms provider.</param>
87
87
/// <param name="dataKeyOptions">The datakey options.</param>
88
88
/// <param name="cancellationToken">The cancellation token.</param>
89
- public ( IMongoCollection < TCollection > Collection , BsonDocument EncryptedFields ) CreateEncryptedCollection < TCollection > ( CollectionNamespace collectionNamespace , CreateCollectionOptions createCollectionOptions , string kmsProvider , DataKeyOptions dataKeyOptions , CancellationToken cancellationToken = default )
89
+ /// <remarks>
90
+ /// if EncryptionFields contains a keyId with a null value, a data key will be automatically generated and assigned to keyId value.
91
+ /// </remarks>
92
+ public void CreateEncryptedCollection < TCollection > ( CollectionNamespace collectionNamespace , CreateCollectionOptions createCollectionOptions , string kmsProvider , DataKeyOptions dataKeyOptions , CancellationToken cancellationToken = default )
90
93
{
91
- var effectiveEncryptedFields = createCollectionOptions ? . EncryptedFields ? . DeepClone ( ) ? . AsBsonDocument ;
92
-
93
- foreach ( var fieldDocument in EncryptedCollectionHelper . IterateEmptyKeyIds ( collectionNamespace , effectiveEncryptedFields ) )
94
+ foreach ( var fieldDocument in EncryptedCollectionHelper . IterateEmptyKeyIds ( collectionNamespace , createCollectionOptions . EncryptedFields ) )
94
95
{
95
96
var dataKey = CreateDataKey ( kmsProvider , dataKeyOptions , cancellationToken ) ;
96
97
EncryptedCollectionHelper . ModifyEncryptedFields ( fieldDocument , dataKey ) ;
97
98
}
98
99
99
100
var database = _libMongoCryptController . KeyVaultClient . GetDatabase ( collectionNamespace . DatabaseNamespace . DatabaseName ) ;
100
101
101
- createCollectionOptions . EncryptedFields = effectiveEncryptedFields ;
102
-
103
102
database . CreateCollection ( collectionNamespace . CollectionName , createCollectionOptions , cancellationToken ) ;
104
-
105
- var collection = database . GetCollection < TCollection > ( collectionNamespace . CollectionName ) ;
106
-
107
- return ( collection , effectiveEncryptedFields ) ;
108
103
}
109
104
110
105
/// <summary>
@@ -115,25 +110,20 @@ public Task<BsonDocument> AddAlternateKeyNameAsync(Guid id, string alternateKeyN
115
110
/// <param name="kmsProvider">The kms provider.</param>
116
111
/// <param name="dataKeyOptions">The datakey options.</param>
117
112
/// <param name="cancellationToken">The cancellation token.</param>
118
- public async Task < ( IMongoCollection < TCollection > Collection , BsonDocument EncryptedFields ) > CreateEncryptedCollectionAsync < TCollection > ( CollectionNamespace collectionNamespace , CreateCollectionOptions createCollectionOptions , string kmsProvider , DataKeyOptions dataKeyOptions , CancellationToken cancellationToken = default )
113
+ /// <remarks>
114
+ /// if EncryptionFields contains a keyId with a null value, a data key will be automatically generated and assigned to keyId value.
115
+ /// </remarks>
116
+ public async Task CreateEncryptedCollectionAsync < TCollection > ( CollectionNamespace collectionNamespace , CreateCollectionOptions createCollectionOptions , string kmsProvider , DataKeyOptions dataKeyOptions , CancellationToken cancellationToken = default )
119
117
{
120
- var effectiveEncryptedFields = createCollectionOptions ? . EncryptedFields ? . DeepClone ( ) ? . AsBsonDocument ;
121
-
122
- foreach ( var fieldDocument in EncryptedCollectionHelper . IterateEmptyKeyIds ( collectionNamespace , effectiveEncryptedFields ) )
118
+ foreach ( var fieldDocument in EncryptedCollectionHelper . IterateEmptyKeyIds ( collectionNamespace , createCollectionOptions . EncryptedFields ) )
123
119
{
124
120
var dataKey = await CreateDataKeyAsync ( kmsProvider , dataKeyOptions , cancellationToken ) . ConfigureAwait ( false ) ;
125
121
EncryptedCollectionHelper . ModifyEncryptedFields ( fieldDocument , dataKey ) ;
126
122
}
127
123
128
124
var database = _libMongoCryptController . KeyVaultClient . GetDatabase ( collectionNamespace . DatabaseNamespace . DatabaseName ) ;
129
125
130
- createCollectionOptions . EncryptedFields = effectiveEncryptedFields ;
131
-
132
126
await database . CreateCollectionAsync ( collectionNamespace . CollectionName , createCollectionOptions , cancellationToken ) . ConfigureAwait ( false ) ;
133
-
134
- var collection = database . GetCollection < TCollection > ( collectionNamespace . CollectionName ) ;
135
-
136
- return ( collection , effectiveEncryptedFields ) ;
137
127
}
138
128
139
129
/// <summary>
0 commit comments