You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.142
Former-commit-id: 7467d4b717762eeaf652d77f1486dd11ffb1ff1f
This commit is contained in:
parent
e52655b4dc
commit
0abdbe5a7d
36
mcs/class/corlib/corefx/Interop.GetRandomBytes.Mono.cs
Normal file
36
mcs/class/corlib/corefx/Interop.GetRandomBytes.Mono.cs
Normal file
@ -0,0 +1,36 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Security.Cryptography;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
internal partial class Interop
|
||||
{
|
||||
static class MonoGetRandomBytesFallback
|
||||
{
|
||||
static object _rngAccess = new object ();
|
||||
static RNGCryptoServiceProvider _rng;
|
||||
|
||||
internal static void GetRandomBytes (byte[] buffer)
|
||||
{
|
||||
lock (_rngAccess) {
|
||||
if (_rng == null)
|
||||
_rng = new RNGCryptoServiceProvider ();
|
||||
_rng.GetBytes (buffer);
|
||||
}
|
||||
}
|
||||
|
||||
internal static unsafe void GetRandomBytes (byte* buffer, int length)
|
||||
{
|
||||
lock (_rngAccess) {
|
||||
if (_rng == null)
|
||||
_rng = new RNGCryptoServiceProvider ();
|
||||
_rng.GetBytes (buffer, (IntPtr)length);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal static unsafe void GetRandomBytes (byte* buffer, int length)
|
||||
{
|
||||
MonoGetRandomBytesFallback.GetRandomBytes (buffer, length);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user