File: System\Security\Cryptography\PinAndClear.cs
Web Access
Project: src\src\libraries\System.Security.Cryptography\src\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.
 
using System.Runtime.InteropServices;
 
namespace System.Security.Cryptography
{
    internal struct PinAndClear : IDisposable
    {
        private byte[] _data;
        private PinnedGCHandle<byte[]> _gcHandle;
 
        internal static PinAndClear Track(byte[] data)
        {
            return new PinAndClear
            {
                _gcHandle = new PinnedGCHandle<byte[]>(data),
                _data = data,
            };
        }
 
        public void Dispose()
        {
            Array.Clear(_data);
            _gcHandle.Dispose();
        }
    }
}