| File: AuthenticatedEncryption\ISpanAuthenticatedEncryptor.cs | Web Access |
| Project: src\aspnetcore\src\DataProtection\DataProtection\src\Microsoft.AspNetCore.DataProtection.csproj (Microsoft.AspNetCore.DataProtection) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. #if NET using System; using System.Buffers; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption; /// <summary> /// Provides an authenticated encryption and decryption routine via a span-based API. /// </summary> public interface ISpanAuthenticatedEncryptor : IAuthenticatedEncryptor { /// <summary> /// Encrypts and authenticates a piece of plaintext data and writes the result to a buffer writer. /// </summary> /// <typeparam name="TWriter">The type of buffer writer to write the ciphertext to.</typeparam> /// <param name="plaintext">The plaintext to encrypt. This input may be zero bytes in length.</param> /// <param name="additionalAuthenticatedData"> /// A piece of data which will not be included in the returned ciphertext /// but which will still be covered by the authentication tag. This input may be zero bytes in length. /// The same AAD must be specified in the corresponding call to <see cref="Decrypt{TWriter}"/>. /// </param> /// <param name="destination">The buffer writer to which the ciphertext (including authentication tag) will be written.</param> /// <remarks> /// This method provides an optimized, streaming alternative to <see cref="IAuthenticatedEncryptor.Encrypt(System.ArraySegment{byte}, System.ArraySegment{byte})"/>. /// Rather than allocating an intermediate buffer, the ciphertext is written directly to the provided buffer writer, /// which can improve performance and reduce memory allocation pressure. /// The buffer writer is advanced by the total number of bytes written to it. /// </remarks> void Encrypt<TWriter>(ReadOnlySpan<byte> plaintext, ReadOnlySpan<byte> additionalAuthenticatedData, ref TWriter destination) where TWriter : IBufferWriter<byte>, allows ref struct; /// <summary> /// Validates the authentication tag of and decrypts a blob of encrypted data, writing the result to a buffer writer. /// </summary> /// <typeparam name="TWriter">The type of buffer writer to write the plaintext to.</typeparam> /// <param name="ciphertext">The ciphertext (including authentication tag) to decrypt.</param> /// <param name="additionalAuthenticatedData"> /// Any ancillary data which was used during computation of the authentication tag. /// The same AAD must have been specified in the corresponding call to <see cref="Encrypt{TWriter}"/>. /// </param> /// <param name="destination">The buffer writer to which the decrypted plaintext will be written.</param> /// <remarks> /// This method provides an optimized, streaming alternative to <see cref="IAuthenticatedEncryptor.Decrypt(System.ArraySegment{byte}, System.ArraySegment{byte})"/>. /// Rather than allocating an intermediate buffer, the plaintext is written directly to the provided buffer writer, /// which can improve performance and reduce memory allocation pressure. /// The buffer writer is advanced by the total number of bytes written to it. /// </remarks> void Decrypt<TWriter>(ReadOnlySpan<byte> ciphertext, ReadOnlySpan<byte> additionalAuthenticatedData, ref TWriter destination) where TWriter : IBufferWriter<byte>, allows ref struct; } #endif