|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System;
using System.Runtime.InteropServices;
using Microsoft.Win32.SafeHandles;
internal static partial class Interop
{
internal static partial class Crypto
{
[LibraryImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_CreateMemoryBio")]
internal static partial SafeBioHandle CreateMemoryBio();
[LibraryImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_BioNewFile", StringMarshalling = StringMarshalling.Utf8)]
internal static partial SafeBioHandle BioNewFile(string filename, string mode);
[LibraryImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_BioDestroy")]
[return: MarshalAs(UnmanagedType.Bool)]
internal static partial bool BioDestroy(IntPtr a);
[LibraryImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_BioGets")]
private static unsafe partial int BioGets(SafeBioHandle b, byte* buf, int size);
internal static unsafe int BioGets(SafeBioHandle b, Span<byte> buf)
{
fixed (byte* pBuf = buf)
{
return BioGets(b, pBuf, buf.Length);
}
}
[LibraryImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_BioRead")]
internal static partial int BioRead(SafeBioHandle b, byte[] data, int len);
[LibraryImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_BioRead")]
private static partial int BioRead(SafeBioHandle b, Span<byte> data, int len);
internal static int BioRead(SafeBioHandle b, Span<byte> data) => BioRead(b, data, data.Length);
[LibraryImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_BioWrite")]
internal static partial int BioWrite(SafeBioHandle b, byte[] data, int len);
internal static int BioWrite(SafeBioHandle b, ReadOnlySpan<byte> data) =>
BioWrite(b, ref MemoryMarshal.GetReference(data), data.Length);
[LibraryImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_BioWrite")]
private static partial int BioWrite(SafeBioHandle b, ref byte data, int len);
[LibraryImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_GetMemoryBioSize")]
internal static partial int GetMemoryBioSize(SafeBioHandle bio);
[LibraryImport(Libraries.CryptoNative, EntryPoint = "CryptoNative_BioCtrlPending")]
internal static partial int BioCtrlPending(SafeBioHandle bio);
}
}
|