File: System\Security\Cryptography\HpkeManagedAesAeadAdapter.cs
Web Access
Project: System.Security.Cryptography.csproj (System.Security.Cryptography)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

namespace System.Security.Cryptography
{
    internal sealed class HpkeManagedAesAeadAdapter : HpkeManagedAeadAdapter
    {
        private readonly AesGcm _aes;

        internal HpkeManagedAesAeadAdapter(HpkeSuite suite, ReadOnlySpan<byte> key)
        {
#pragma warning disable CA1416
            _aes = new AesGcm(key, suite.AeadMetadata.Nt);
#pragma warning restore CA1416
        }

        internal override void Encrypt(
            ReadOnlySpan<byte> plaintext,
            ReadOnlySpan<byte> nonce,
            ReadOnlySpan<byte> associatedData,
            Span<byte> ciphertext,
            Span<byte> tag)
        {
#pragma warning disable CA1416
            _aes.Encrypt(nonce, plaintext, ciphertext, tag, associatedData);
#pragma warning restore CA1416
        }

        internal override void Decrypt(
            ReadOnlySpan<byte> ciphertext,
            ReadOnlySpan<byte> nonce,
            ReadOnlySpan<byte> associatedData,
            ReadOnlySpan<byte> tag,
            Span<byte> plaintext)
        {
#pragma warning disable CA1416
            _aes.Decrypt(nonce, ciphertext, tag, plaintext, associatedData);
#pragma warning restore CA1416
        }


#pragma warning disable CA1416
        public override void Dispose() => _aes.Dispose();
#pragma warning restore CA1416
    }
}