/// <summary> /// Initializes a new instance of the <see cref="CosmosDataEncryptionKeyProvider"/> class. /// </summary> /// <param name="encryptionKeyWrapProvider">A provider that will be used to wrap (encrypt) and unwrap (decrypt) data encryption keys for envelope based encryption</param> /// <param name="dekPropertiesTimeToLive">Time to live for DEK properties before having to refresh.</param> public CosmosDataEncryptionKeyProvider( EncryptionKeyWrapProvider encryptionKeyWrapProvider, TimeSpan?dekPropertiesTimeToLive = null) { this.EncryptionKeyWrapProvider = encryptionKeyWrapProvider ?? throw new ArgumentNullException(nameof(encryptionKeyWrapProvider)); this.dataEncryptionKeyContainerCore = new DataEncryptionKeyContainerCore(this); this.DekCache = new DekCache(dekPropertiesTimeToLive); }
/// <summary> /// Initializes a new instance of the <see cref="CosmosDataEncryptionKeyProvider"/> class. /// </summary> /// <param name="encryptionKeyStoreProvider"> MDE EncryptionKeyStoreProvider for Wrapping/UnWrapping services. </param> /// <param name="dekPropertiesTimeToLive">Time to live for DEK properties before having to refresh.</param> public CosmosDataEncryptionKeyProvider( EncryptionKeyStoreProvider encryptionKeyStoreProvider, TimeSpan?dekPropertiesTimeToLive = null) { this.EncryptionKeyStoreProvider = encryptionKeyStoreProvider ?? throw new ArgumentNullException(nameof(encryptionKeyStoreProvider)); this.MdeKeyWrapProvider = new MdeKeyWrapProvider(encryptionKeyStoreProvider); this.dataEncryptionKeyContainerCore = new DataEncryptionKeyContainerCore(this); this.DekCache = new DekCache(dekPropertiesTimeToLive); this.PdekCacheTimeToLive = this.EncryptionKeyStoreProvider.DataEncryptionKeyCacheTimeToLive; if (this.PdekCacheTimeToLive.HasValue) { // set the TTL for Protected Data Encryption. ProtectedDataEncryptionKey.TimeToLive = this.PdekCacheTimeToLive.Value; } else { // If null is passed to DataEncryptionKeyCacheTimeToLive it results in forever caching hence setting // arbitrarily large caching period. ProtectedDataEncryptionKey does not seem to handle TimeSpan.MaxValue. ProtectedDataEncryptionKey.TimeToLive = TimeSpan.FromDays(36500); } }
public DataEncryptionKeyContainerInlineCore(DataEncryptionKeyContainerCore dataEncryptionKeyContainerCore) { this.dataEncryptionKeyContainerCore = dataEncryptionKeyContainerCore ?? throw new ArgumentNullException(nameof(dataEncryptionKeyContainerCore)); }