/// <summary> /// Applies client-side encryption to the data for upload. /// </summary> /// <param name="content"> /// Content to encrypt. /// </param> /// <param name="metadata"> /// Metadata to add encryption metadata to. /// </param> /// <param name="async"> /// Whether to perform this operation asynchronously. /// </param> /// <param name="cancellationToken"> /// Cancellation token. /// </param> /// <returns>Transformed content stream and metadata.</returns> public async Task <(Stream NonSeekableCiphertext, Metadata Metadata)> ClientSideEncryptInternal( Stream content, Metadata metadata, bool async, CancellationToken cancellationToken) { (Stream NonSeekableCiphertext, EncryptionData EncryptionData) = await _encryptor.EncryptInternal( content, async, cancellationToken).ConfigureAwait(false); Metadata modifiedMetadata = TransformMetadata(metadata, EncryptionData); return(NonSeekableCiphertext, modifiedMetadata); }
/// <summary> /// Applies client-side encryption to the data for upload. /// </summary> /// <param name="content"> /// Content to encrypt. /// </param> /// <param name="metadata"> /// Metadata to add encryption metadata to. /// </param> /// <param name="async"> /// Whether to perform this operation asynchronously. /// </param> /// <param name="cancellationToken"> /// Cancellation token. /// </param> /// <returns>Transformed content stream and metadata.</returns> public async Task <(Stream, Metadata)> ClientSideEncryptInternal( Stream content, Metadata metadata, bool async, CancellationToken cancellationToken) { (Stream nonSeekableCiphertext, EncryptionData encryptionData) = await _encryptor.EncryptInternal( content, async, cancellationToken).ConfigureAwait(false); metadata ??= new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase); metadata[Constants.ClientSideEncryption.EncryptionDataKey] = EncryptionDataSerializer.Serialize(encryptionData); return(nonSeekableCiphertext, metadata); }