From 853c8d21f7c57c09ec1fec10c08b3043b7e4ca76 Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Thu, 9 Jan 2020 00:42:09 -0800 Subject: [PATCH] Adds Xoshiro256** RNG (#67) --- Projects/Scripts/Accounting/Accounts.cs | 2 +- Projects/Scripts/Gumps/ResurrectGump.cs | 4 +- .../Halloween/2012/Engines/PlayerZombies.cs | 2 +- Projects/Scripts/Items/Weapons/BaseWeapon.cs | 4 +- Projects/Scripts/Spells/Base/Spell.cs | 6 +- Projects/Scripts/Spells/Base/SpellHelper.cs | 2 +- Projects/Server/Assemblies/libdrng.dll | Bin 0 -> 9728 bytes Projects/Server/Assemblies/libuv.linux.so | Bin 165720 -> 0 bytes Projects/Server/Assemblies/libuv.osx.so | Bin 185132 -> 0 bytes Projects/Server/Assemblies/rdrand.dll | Bin 9800 -> 0 bytes Projects/Server/Assemblies/rdrand.so | Bin 9708 -> 0 bytes Projects/Server/Collections/ArraySet.cs | 20 ++ Projects/Server/Main.cs | 4 +- Projects/Server/Network/SendQueue.cs | 44 --- Projects/Server/Random.cs | 260 ----------------- Projects/Server/Server.csproj | 15 +- Projects/Server/Utilities/DRng64.cs | 107 +++++++ .../Random.cs} | 60 ++-- Projects/Server/{ => Utilities}/Utility.cs | 32 +-- .../Server/Utilities/Xoshiro256PlusPlus.cs | 265 ++++++++++++++++++ README.md | 15 +- 21 files changed, 471 insertions(+), 371 deletions(-) create mode 100644 Projects/Server/Assemblies/libdrng.dll delete mode 100755 Projects/Server/Assemblies/libuv.linux.so delete mode 100755 Projects/Server/Assemblies/libuv.osx.so delete mode 100644 Projects/Server/Assemblies/rdrand.dll delete mode 100755 Projects/Server/Assemblies/rdrand.so delete mode 100644 Projects/Server/Network/SendQueue.cs delete mode 100644 Projects/Server/Random.cs create mode 100644 Projects/Server/Utilities/DRng64.cs rename Projects/Server/{Network/SocketExtensions.cs => Utilities/Random.cs} (51%) rename Projects/Server/{ => Utilities}/Utility.cs (93%) create mode 100644 Projects/Server/Utilities/Xoshiro256PlusPlus.cs diff --git a/Projects/Scripts/Accounting/Accounts.cs b/Projects/Scripts/Accounting/Accounts.cs index 8bf7e5446..d5d01b165 100644 --- a/Projects/Scripts/Accounting/Accounts.cs +++ b/Projects/Scripts/Accounting/Accounts.cs @@ -90,4 +90,4 @@ namespace Server.Accounting xml.Close(); } } -} \ No newline at end of file +} diff --git a/Projects/Scripts/Gumps/ResurrectGump.cs b/Projects/Scripts/Gumps/ResurrectGump.cs index 71b3ecac6..0a13fc88d 100644 --- a/Projects/Scripts/Gumps/ResurrectGump.cs +++ b/Projects/Scripts/Gumps/ResurrectGump.cs @@ -182,7 +182,7 @@ namespace Server.Gumps { List items = new List( corpse.Items ); - for( int i = 0; i < items.Count; ++i ) + for ( int i = 0; i < items.Count; ++i ) { Item item = items[i]; @@ -215,7 +215,7 @@ namespace Server.Gumps if ( from.RawDex * loss > 10 ) from.RawDex = (int)(from.RawDex * loss); - for( int s = 0; s < from.Skills.Length; s++ ) + for ( int s = 0; s < from.Skills.Length; s++ ) if ( from.Skills[s].Base * loss > 35 ) from.Skills[s].Base *= loss; } diff --git a/Projects/Scripts/Holiday Stuff/Halloween/2012/Engines/PlayerZombies.cs b/Projects/Scripts/Holiday Stuff/Halloween/2012/Engines/PlayerZombies.cs index 699edc9e9..871f21c20 100644 --- a/Projects/Scripts/Holiday Stuff/Halloween/2012/Engines/PlayerZombies.cs +++ b/Projects/Scripts/Holiday Stuff/Halloween/2012/Engines/PlayerZombies.cs @@ -85,7 +85,7 @@ namespace Server.Engines.Events if ( DateTime.UtcNow <= HolidaySettings.FinishHalloween ) { - for( int index = 0; m_DeathQueue.Count > 0 && index < m_DeathQueue.Count; index++ ) + for ( int index = 0; m_DeathQueue.Count > 0 && index < m_DeathQueue.Count; index++ ) if ( !ReAnimated.ContainsKey( m_DeathQueue[ index ] ) ) { player = m_DeathQueue[ index ]; diff --git a/Projects/Scripts/Items/Weapons/BaseWeapon.cs b/Projects/Scripts/Items/Weapons/BaseWeapon.cs index c3a156618..eeb7197c6 100644 --- a/Projects/Scripts/Items/Weapons/BaseWeapon.cs +++ b/Projects/Scripts/Items/Weapons/BaseWeapon.cs @@ -1420,7 +1420,7 @@ namespace Server.Items } } - public virtual double GetAosDamage(Mobile attacker, int bonus, int dice, int sides) + public virtual double GetAosDamage(Mobile attacker, int bonus, uint dice, uint sides) { int damage = Utility.Dice(dice, sides, bonus) * 100; int damageBonus = 0; @@ -1449,7 +1449,7 @@ namespace Server.Items damage = AOS.Scale(damage, 100 + damageBonus); - return damage / 100; + return damage / 100.0; } public virtual CheckSlayerResult CheckSlayers(Mobile attacker, Mobile defender) diff --git a/Projects/Scripts/Spells/Base/Spell.cs b/Projects/Scripts/Spells/Base/Spell.cs index 035f8a3ec..b012411b8 100644 --- a/Projects/Scripts/Spells/Base/Spell.cs +++ b/Projects/Scripts/Spells/Base/Spell.cs @@ -150,7 +150,7 @@ namespace Server.Spells (m as BaseCreature)?.OnHarmfulSpell(Caster); } - public virtual int GetNewAosDamage(int bonus, int dice, int sides, Mobile singleTarget) + public virtual int GetNewAosDamage(int bonus, uint dice, uint sides, Mobile singleTarget) { if (singleTarget != null) return GetNewAosDamage(bonus, dice, sides, Caster.Player && singleTarget.Player, @@ -159,9 +159,9 @@ namespace Server.Spells return GetNewAosDamage(bonus, dice, sides, false); } - public virtual int GetNewAosDamage(int bonus, int dice, int sides, bool playerVsPlayer) => GetNewAosDamage(bonus, dice, sides, playerVsPlayer, 1.0); + public virtual int GetNewAosDamage(int bonus, uint dice, uint sides, bool playerVsPlayer) => GetNewAosDamage(bonus, dice, sides, playerVsPlayer, 1.0); - public virtual int GetNewAosDamage(int bonus, int dice, int sides, bool playerVsPlayer, double scalar) + public virtual int GetNewAosDamage(int bonus, uint dice, uint sides, bool playerVsPlayer, double scalar) { int damage = Utility.Dice(dice, sides, bonus) * 100; int damageBonus = 0; diff --git a/Projects/Scripts/Spells/Base/SpellHelper.cs b/Projects/Scripts/Spells/Base/SpellHelper.cs index a197a62c8..3283b17f1 100644 --- a/Projects/Scripts/Spells/Base/SpellHelper.cs +++ b/Projects/Scripts/Spells/Base/SpellHelper.cs @@ -498,7 +498,7 @@ namespace Server.Spells /* int offset = Utility.Random( 8 ) * 2; - for( int i = 0; i < m_Offsets.Length; i += 2 ) + for ( int i = 0; i < m_Offsets.Length; i += 2 ) { int x = caster.X + m_Offsets[(offset + i) % m_Offsets.Length]; int y = caster.Y + m_Offsets[(offset + i + 1) % m_Offsets.Length]; diff --git a/Projects/Server/Assemblies/libdrng.dll b/Projects/Server/Assemblies/libdrng.dll new file mode 100644 index 0000000000000000000000000000000000000000..1fa4d7477f8fd8ea38e1dbf8d0176c7aac4769af GIT binary patch literal 9728 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 Izj+b(FWb;AasU7T literal 0 HcmV?d00001 diff --git a/Projects/Server/Assemblies/libuv.linux.so b/Projects/Server/Assemblies/libuv.linux.so deleted file mode 100755 index d9caeba12e1ff1526afe473cf3a5c8a98fabf5a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165720 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 diff --git a/Projects/Server/Assemblies/rdrand.dll b/Projects/Server/Assemblies/rdrand.dll deleted file mode 100644 index 0c6723f7eb455fb64bb6a6a5633004d8d83d2971..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9800 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 diff --git a/Projects/Server/Assemblies/rdrand.so b/Projects/Server/Assemblies/rdrand.so deleted file mode 100755 index 8205f7af2550643084945f1d1fac390bd12cf445..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9708 zcmeHNZ){sv6~E7M8m}y~D@|3(R_cy+q-Z2@Q>wLmAa9G+XRV#OC1FKbcsQ}0M0M=c zeotE}3NDVpZzdw3A_NjrU`TvGNaLT>6$u=LZW%&bk&rqxA%d2+?wX}3g)C)V%K8~=WHwSh6Ijxn|gr4ePt%~+24pfR=$o!f5FIKm88^?&r>Up6?Rn?-;YouA?jOX`Q_Ro?dgfP-r7dOkS1B#c{^#1gk z$rQFR38cm^>Gu{x7_fZ~!uxl+El&bs&(pqXbG06Kk z<9(IK;}sKFgsg}SqpIqO=Y|szbvO}Anz(X3&hS7(JOE*53=x}ZTGza}uAOqXY-U9@;BnZB#W8SJPu7{mHmGs-=+U#_>cr+E(N*g!s3wi>eMLZQGvYso_r$M84_pA z&j;Y~7{?2As34S=oi{qS%_vO{dn%F&Cn7Cr+A|~%F_vi~#m^XV=t2D`Y9SqdE5k5vb}?4Oz#oBr6oq6rFZZBsL9z1(SRqaD=ToS#KLAAI?EAsF-<=!! zbneF!bywy$r&rM3x``S$<8s=}J}EG2l6z4ofAXbV-FxRjy~JAebgDHz+)t%zEUiUH zS{`eOi~*q&uuSrDPYHltTR+E*+)76eGA4SPm2e zuX%rD1m}#tdE-dQ=vg@Z{-J0>*IQ4YS{P15L;Ay~Pn8l{G_G$yiwlF9-CySpIyp=) zek^-gLg26Sz@G^&>Gv2*O7{0ny?ryKBHkPdjVIBVy>(lEfKn;N%jI%*MS6La>c23f zu@}vKfnxU7s`pHBW|BI|pQDU@#?6qiT4+4T{kN9doW48IboK+X!aH{vN#@@2j=zRF z=6!X^`|aTMm~3pyoVw1;8F+IuR?`jMbRRW&b3fbA`rQq!r#GUy@U4`i=VmM4u0N1(>gyF;ZFSg2DQS+4^?cZUt29ELm|P?)JDca zwNXEbpmtY%*l9TCG#qjo_B#!`VKBFlm8o>i%MFXB!AX_1f1bgKI~p?Hla1A2Zdq#% zycHAt{g#gYVWV97rL~!KUnu*kr##bn;AZM=^HgCodaxN~wQt6|!{YmH;ysRYi_K}q zbANa|xkv7%TcNpQ`IQFm_ylD&@nugadu2s7mgVg0E3&kD#P}ez=U+kNpYrrVot(Yg z;5`$(_}GN|5_+@4(h6?Av%%cE-th-9E5*=@%EYNzbB3iqTj_Xn@1yBuTq)(lJFj}j zZ^BV2^vo&~a#_w^YEZH(4e8FnvSM5~f4L(%EwrSMah@=qtu-`!#=mdtPgo6yu^YecjiQ|5Cfl(wj)Hvvfb{ZcA?_z24H> zNZ+JPzw>CmyB)c{;!zIVIETTQ{u89DJ){(l6cy=4=)J#+_03DlbjhQXr$goQ`aiC@ z0!1V|+xf!C#b9n;+l!rG%G!Ba+Yc{VhsT@y1Hy|v@pkHO=AHa~R#)-n{H~80)p| zdAZ(U+@yK(GAJ9F^@!cv+$%pT_gOo7vb_5jNRu|(_V1yRyUM!_)RRMGym}e?gx)k6 zyeAuq`siH883VM_B7{x=SA&O{TPH zgzc+iQ$Bo$F|`Fx2LtIxQ>Ogp4D9XNrA1hqgg5H_?$z?0P zHHCji={e?kln8I5 zYRQ3b0mtej_V>Btz0^)$p0waa{BGe9=(}u~+IOL3P)Gv|>GuaD-$cQ1YZ?B~fq&(|^c=qp1=2ye5%x2cpJ(d`3uHgZDnIBr z#6rbM6e>=pQ0Zh_N7imhsJ7nJC864UD(``c3(LHADlFC&R&{%|_N1e!bnEf(NGh4= z4{IagL~CdAxkNk}j-=_=0+Cc=@Kb@7wpPY}J2AlS-iNy+|JO`a&|vZ6AgYqfN~UNP GA^!o}bF%pW diff --git a/Projects/Server/Collections/ArraySet.cs b/Projects/Server/Collections/ArraySet.cs index bd044bd18..7a3eb5729 100644 --- a/Projects/Server/Collections/ArraySet.cs +++ b/Projects/Server/Collections/ArraySet.cs @@ -1,3 +1,23 @@ +/************************************************************************* + * ModernUO * + * Copyright (C) 2019 - ModernUO Development Team * + * Email: hi@modernuo.com * + * File: ArraySet.cs - Created: 2019/10/04 - Updated: 2019/12/30 * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + *************************************************************************/ + using System; using System.Collections; using System.Collections.Generic; diff --git a/Projects/Server/Main.cs b/Projects/Server/Main.cs index bb1b29bc9..1f394a095 100644 --- a/Projects/Server/Main.cs +++ b/Projects/Server/Main.cs @@ -431,8 +431,8 @@ namespace Server Console.WriteLine("Core: Requested high resolution timing ({0})", UsingHighResolutionTiming ? "Supported" : "Unsupported"); - Console.WriteLine("RandomImpl: {0} ({1})", RandomImpl.Type.Name, - RandomImpl.IsHardwareRNG ? "Hardware" : "Software"); + Console.WriteLine("SecureRandomImpl: {0} ({1})", SecureRandomImpl.Name, + SecureRandomImpl.IsHardwareRNG ? "Hardware" : "Software"); // Load Assembly Scripts.CS.dll AssemblyHandler.LoadScripts(); diff --git a/Projects/Server/Network/SendQueue.cs b/Projects/Server/Network/SendQueue.cs deleted file mode 100644 index c074de17e..000000000 --- a/Projects/Server/Network/SendQueue.cs +++ /dev/null @@ -1,44 +0,0 @@ -/*************************************************************************** - * SendQueue.cs - * ------------------- - * begin : May 1, 2002 - * copyright : (C) The RunUO Software Team - * email : info@runuo.com - * - * $Id$ - * - ***************************************************************************/ - -/*************************************************************************** - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - ***************************************************************************/ - -using System.Collections.Concurrent; -using System.Threading.Tasks; - -namespace Server.Network -{ - public class SendQueue - { - private BlockingCollection m_Queue = new BlockingCollection(new ConcurrentQueue()); - - public void Enqueue(T t) - { - m_Queue.Add(t); - } - - public Task DequeueAsync() - { - TaskCompletionSource taskCompletion = new TaskCompletionSource(); - Task.Run(() => taskCompletion.SetResult(Dequeue())); - return taskCompletion.Task; - } - - public T Dequeue() => m_Queue.Take(); - } -} diff --git a/Projects/Server/Random.cs b/Projects/Server/Random.cs deleted file mode 100644 index 80409a56e..000000000 --- a/Projects/Server/Random.cs +++ /dev/null @@ -1,260 +0,0 @@ -/*************************************************************************** - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - ***************************************************************************/ - -using System; -using System.IO; -using System.Runtime.InteropServices; -using System.Security.Cryptography; -using System.Threading; -using System.Threading.Tasks; - -namespace Server -{ - /// - /// Handles random number generation. - /// - public static class RandomImpl - { - private static readonly IRandomImpl _Random; - - static RandomImpl() - { - if (Core.Unix && File.Exists("rdrand.so")) - _Random = new RDRandUnix(); - else if (File.Exists("rdrand.dll")) - _Random = new RDRand64(); - - if (_Random == null || _Random is IHardwareRNG rng && !rng.IsSupported()) - _Random = new CSPRandom(); - } - - public static bool IsHardwareRNG => _Random is IHardwareRNG; - - public static Type Type => _Random.GetType(); - - public static int Next(int c) => _Random.Next(c); - - public static bool NextBool() => _Random.NextBool(); - - public static void NextBytes(Span b) => _Random.NextBytes(b); - - public static double NextDouble() => _Random.NextDouble(); - } - - public interface IRandomImpl - { - int Next(int c); - bool NextBool(); - void NextBytes(Span b); - double NextDouble(); - } - - public interface IHardwareRNG - { - bool IsSupported(); - } - - public abstract class BaseRandom : IRandomImpl - { - internal abstract void GetBytes(Span b); - internal abstract void GetBytes(byte[] b, int offset, int count); - - public virtual void NextBytes(Span b) => GetBytes(b); - public virtual int Next(int c) => (int)(c * NextDouble()); - public virtual bool NextBool() => (NextByte() & 1) == 1; - - public virtual byte NextByte() - { - byte[] b = new byte[1]; - GetBytes(b, 0, 1); - return b[0]; - } - - public virtual unsafe double NextDouble() - { - byte[] b = new byte[8]; - - if (BitConverter.IsLittleEndian) - { - b[7] = 0; - GetBytes(b, 0, 7); - } - else - { - b[0] = 0; - GetBytes(b, 1, 7); - } - - ulong r; - fixed (byte* buf = b) - { - r = *(ulong*)&buf[0] >> 3; - } - - /* double: 53 bits of significand precision - * ulong.MaxValue >> 11 = 9007199254740991 - * 2^53 = 9007199254740992 - */ - - return (double)r / 9007199254740992; - } - } - - public sealed class CSPRandom : BaseRandom - { - private static int BUFFER_SIZE = 0x4000; - private static int LARGE_REQUEST = 0x40; - private byte[] _Buffer = new byte[BUFFER_SIZE]; - private RNGCryptoServiceProvider _CSP = new RNGCryptoServiceProvider(); - - private ManualResetEvent _filled = new ManualResetEvent(false); - - private int _Index; - - private object _sync = new object(); - - private byte[] _Working = new byte[BUFFER_SIZE]; - - public CSPRandom() - { - _CSP.GetBytes(_Working); - Task.Run(Fill); - } - - public override void NextBytes(Span b) - { - int c = b.Length; - - if (c >= LARGE_REQUEST) - { - lock (_sync) - { - _CSP.GetBytes(b); - } - - return; - } - - GetBytes(b); - } - - private void CheckSwap(int c) - { - if (_Index + c < BUFFER_SIZE) - return; - - _filled.WaitOne(); - - byte[] b = _Working; - _Working = _Buffer; - _Buffer = b; - _Index = 0; - - _filled.Reset(); - - Task.Run(Fill); - } - - private void Fill() - { - _CSP.GetBytes(_Buffer); - _filled.Set(); - } - - internal override void GetBytes(Span b) - { - int c = b.Length; - - lock (_sync) - { - CheckSwap(c); - _Working.AsSpan(0, c).CopyTo(b); - _Index += c; - } - } - - internal override void GetBytes(byte[] b, int offset, int count) - { - GetBytes(b.AsSpan(offset, count)); - } - - public override byte NextByte() - { - lock (_sync) - { - CheckSwap(1); - return _Working[_Index++]; - } - } - } - - public sealed class RDRandUnix : BaseRandom, IHardwareRNG - { - [DllImport("rdrand.so")] - internal static extern RDRandError rdrand_32(ref uint rand, bool retry); - - [DllImport("rdrand.so")] - internal static extern unsafe RDRandError rdrand_get_bytes(int n, byte* buffer); - - public bool IsSupported() - { - uint r = 0; - return rdrand_32(ref r, true) == RDRandError.Success; - } - - internal override unsafe void GetBytes(Span b) - { - fixed(byte* ptr = b) - rdrand_get_bytes(b.Length, ptr); - } - - internal override void GetBytes(byte[] b, int offset, int count) - { - GetBytes(b.AsSpan().Slice(offset, count)); - } - } - - public sealed class RDRand64 : BaseRandom, IHardwareRNG - { - [DllImport("rdrand")] - internal static extern RDRandError rdrand_64(ref ulong rand, bool retry); - - [DllImport("rdrand")] - internal static extern unsafe RDRandError rdrand_get_bytes(int n, byte* buffer); - - public bool IsSupported() - { - ulong r = 0; - return rdrand_64(ref r, true) == RDRandError.Success; - } - - internal override unsafe void GetBytes(Span b) - { - fixed (byte* ptr = b) - rdrand_get_bytes(b.Length, ptr); - } - - internal override void GetBytes(byte[] b, int offset, int count) - { - GetBytes(b.AsSpan(offset, count)); - } - } - - public enum RDRandError - { - Unknown = -4, - Unsupported = -3, - Supported = -2, - NotReady = -1, - - Failure = 0, - - Success = 1 - } -} diff --git a/Projects/Server/Server.csproj b/Projects/Server/Server.csproj index 94457e180..7ce476529 100644 --- a/Projects/Server/Server.csproj +++ b/Projects/Server/Server.csproj @@ -43,27 +43,14 @@ libuv.dll Always - - libuv.so - Always - - - libuv.so - libuv.so - Always - zlib.dll Always - + rdrand.dll Always - - rdrand.so - Always - diff --git a/Projects/Server/Utilities/DRng64.cs b/Projects/Server/Utilities/DRng64.cs new file mode 100644 index 000000000..551dbe145 --- /dev/null +++ b/Projects/Server/Utilities/DRng64.cs @@ -0,0 +1,107 @@ +/************************************************************************* + * ModernUO * + * Copyright (C) 2019 - ModernUO Development Team * + * Email: hi@modernuo.com * + * File: DRng64.cs - Created: 2019/12/30 - Updated: 2019/12/30 * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + *************************************************************************/ + +using System; +using System.Runtime.InteropServices; +using System.Security.Cryptography; + +namespace Server +{ + public sealed class DRng64 : RandomNumberGenerator, IHardwareRNG + { + public enum RDRandError + { + Unknown = -4, + Unsupported = -3, + Supported = -2, + NotReady = -1, + + Failure = 0, + + Success = 1 + } + + [DllImport("libdrng", CallingConvention = CallingConvention.Cdecl)] + internal static extern RDRandError rdrand_64(ref ulong rand, bool retry); + + [DllImport("libdrng", CallingConvention = CallingConvention.Cdecl)] + internal static extern unsafe RDRandError rdrand_get_bytes(int n, byte* buffer); + + public bool IsSupported() + { + ulong r = 0; + return rdrand_64(ref r, true) == RDRandError.Success; + } + + private static unsafe void GetBytes(byte* pBuffer, int count) + { + rdrand_get_bytes(count, pBuffer); + } + + public override void GetBytes(byte[] data) + { + if (data == null) throw new ArgumentNullException(nameof(data)); + GetBytes(new Span(data)); + } + + public override void GetBytes(byte[] data, int offset, int count) + { + GetBytes(new Span(data, offset, count)); + } + + public override unsafe void GetBytes(Span data) + { + if (data.Length > 0) + fixed (byte* ptr = data) GetBytes(ptr, data.Length); + } + + public override void GetNonZeroBytes(byte[] data) + { + if (data == null) throw new ArgumentNullException(nameof(data)); + GetNonZeroBytes(new Span(data)); + } + + public override void GetNonZeroBytes(Span data) + { + while (data.Length > 0) + { + // Fill the remaining portion of the span with random bytes. + GetBytes(data); + + // Find the first zero in the remaining portion. + int indexOfFirst0Byte = data.Length; + for (int i = 0; i < data.Length; i++) + if (data[i] == 0) + { + indexOfFirst0Byte = i; + break; + } + + // If there were any zeros, shift down all non-zeros. + for (int i = indexOfFirst0Byte + 1; i < data.Length; i++) + if (data[i] != 0) data[indexOfFirst0Byte++] = data[i]; + + // Request new random bytes if necessary; dont re-use + // existing bytes since they were shifted down. + data = data.Slice(indexOfFirst0Byte); + } + } + } +} diff --git a/Projects/Server/Network/SocketExtensions.cs b/Projects/Server/Utilities/Random.cs similarity index 51% rename from Projects/Server/Network/SocketExtensions.cs rename to Projects/Server/Utilities/Random.cs index 3fdf9d3b2..c0af61c83 100644 --- a/Projects/Server/Network/SocketExtensions.cs +++ b/Projects/Server/Utilities/Random.cs @@ -2,7 +2,7 @@ * ModernUO * * Copyright (C) 2019 - ModernUO Development Team * * Email: hi@modernuo.com * - * File: SocketExtensions.cs - Created: 2019/08/02 - Updated: 2019/12/24 * + * File: Random.cs - Created: 2019/12/30 - Updated: 2019/01/05 * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -19,33 +19,53 @@ *************************************************************************/ using System; -using System.Buffers; -using System.Net.Sockets; -using System.Runtime.InteropServices; -using System.Threading.Tasks; +using System.Security.Cryptography; -namespace Server.Network +namespace Server { - public static class SocketExtensions + /// + /// Handles random number generation. + /// + public static class RandomImpl { - public static Task ReceiveAsync(this Socket socket, Memory memory, SocketFlags socketFlags) => SocketTaskExtensions.ReceiveAsync(socket, GetArray(memory), socketFlags); + private static readonly Xoshiro256PlusPlus _Random = new Xoshiro256PlusPlus(); - public static ArraySegment GetArray(this Memory memory) => ((ReadOnlyMemory)memory).GetArray(); + public static uint Next(uint c) => _Random.Next(c); - public static ArraySegment GetArray(this ReadOnlyMemory memory) + public static bool NextBool() => _Random.NextBool(); + + public static void GetBytes(Span b) => _Random.GetBytes(b); + + public static double NextDouble() => _Random.NextDouble(); + } + + public static class SecureRandomImpl + { + public static readonly RandomNumberGenerator _Random; + + static SecureRandomImpl() { - if (MemoryMarshal.TryGetArray(memory, out ArraySegment result)) - return result; - - throw new InvalidOperationException("Buffer backed by array was expected"); + try + { + _Random = new DRng64(); + if (_Random is IHardwareRNG rng && rng?.IsSupported() != true) + _Random = new RNGCryptoServiceProvider(); + } + catch (Exception) + { + _Random = new RNGCryptoServiceProvider(); + } } - public static ArraySegment GetArray(this ReadOnlySequence memory) - { - if (SequenceMarshal.TryGetArray(memory, out ArraySegment result)) - return result; + public static bool IsHardwareRNG => _Random is IHardwareRNG; - throw new InvalidOperationException("Buffer backed by array was expected"); - } + public static string Name => _Random.GetType().Name; + + public static void GetBytes(Span buffer) => _Random.GetBytes(buffer); + } + + public interface IHardwareRNG + { + bool IsSupported(); } } diff --git a/Projects/Server/Utility.cs b/Projects/Server/Utilities/Utility.cs similarity index 93% rename from Projects/Server/Utility.cs rename to Projects/Server/Utilities/Utility.cs index d4c4a1b70..52bd579ee 100644 --- a/Projects/Server/Utility.cs +++ b/Projects/Server/Utilities/Utility.cs @@ -969,15 +969,15 @@ namespace Server #region Random //4d6+8 would be: Utility.Dice( 4, 6, 8 ) - public static int Dice(int numDice, int numSides, int bonus) + public static int Dice(uint numDice, uint numSides, int bonus) { int total = 0; + uint sides = numSides; for (int i = 0; i < numDice; ++i) - total += RandomImpl.Next(numSides) + 1; + total += (int)RandomImpl.Next(sides) + 1; - total += bonus; - return total; + return total + bonus; } public static void Shuffle(IList list) @@ -985,7 +985,7 @@ namespace Server int count = list.Count; for (int i = count - 1; i > 0; i--) { - int r = RandomImpl.Next(count); + int r = (int)RandomImpl.Next((uint)count); T swap = list[r]; list[r] = list[i]; list[i] = swap; @@ -994,7 +994,7 @@ namespace Server public static int RandomList(params int[] list) => RandomList(list); - public static T RandomList(IList list) => list[RandomImpl.Next(list.Count)]; + public static T RandomList(IList list) => list[Random(list.Count)]; public static bool RandomBool() => RandomImpl.NextBool(); @@ -1007,27 +1007,27 @@ namespace Server max = copy; } else if (min == max) - { return min; - } - return min + RandomImpl.Next(max - min + 1); + return min + (int)RandomImpl.Next((uint)(max - min + 1)); } public static int Random(int from, int count) { if (count == 0) return from; - if (count > 0) return from + RandomImpl.Next(count); - return from - RandomImpl.Next(-count); + if (count > 0) return (int)(from + RandomImpl.Next((uint)count)); + + return (int)(from - RandomImpl.Next((uint)-count)); } - public static int Random(int count) => RandomImpl.Next(count); + public static int Random(int count) => (int)RandomImpl.Next((uint)count); - public static void RandomBytes(byte[] buffer) - { - RandomImpl.NextBytes(buffer); - } + public static int Random(uint count) => (int)RandomImpl.Next(count); + + public static void RandomBytes(byte[] buffer) => RandomImpl.GetBytes(buffer); + + public static void RandomBytes(Span buffer) => RandomImpl.GetBytes(buffer); public static double RandomDouble() => RandomImpl.NextDouble(); diff --git a/Projects/Server/Utilities/Xoshiro256PlusPlus.cs b/Projects/Server/Utilities/Xoshiro256PlusPlus.cs new file mode 100644 index 000000000..e436fe314 --- /dev/null +++ b/Projects/Server/Utilities/Xoshiro256PlusPlus.cs @@ -0,0 +1,265 @@ +/************************************************************************* + * ModernUO * + * Copyright (C) 2019 - ModernUO Development Team * + * Email: hi@modernuo.com * + * File: Xoshiro256PlusPlus.cs * + * Created: 2019/12/29 - Updated: 2019/12/30 * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + *************************************************************************/ + +#nullable enable + +using System; +using System.Runtime.CompilerServices; +using System.Security.Cryptography; + +namespace Server +{ + public class Xoshiro256PlusPlus : RandomNumberGenerator + { + private ulong _s0, _s1, _s2, _s3; + + public Xoshiro256PlusPlus() : this((ulong)Environment.TickCount64) + { + } + + public Xoshiro256PlusPlus(ulong seed) + { + var mix = new SplitMix64(seed); + ulong[] state = new ulong[4]; + mix.FillArray(state); + _s0 = state[0]; + _s1 = state[1]; + _s2 = state[2]; + _s3 = state[3]; + } + + private Xoshiro256PlusPlus(ulong s0, ulong s1, ulong s2, ulong s3) + { + _s0 = s0; + _s1 = s1; + _s2 = s2; + _s3 = s3; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint Next(uint max) + { + if (max <= 1u << 12) + { + if (max == 0) throw new ArgumentOutOfRangeException(); + return (uint)(((ulong)NextUInt32() * max) >> 32); + } + + uint r, v, limit = (uint)-(int)max; + do + { + r = NextUInt32(); + v = r % max; + } while (r - v > limit); + + return v; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public uint NextUInt32() => (uint)NextUInt64(); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public ulong NextUInt64() + { + ulong r1 = (_s1 << 2) + _s1; + ulong r2 = (r1 << 7) | (r1 >> 57); + ulong rslt = (r2 << 3) + r2; + + ulong t = _s1 << 17; + + _s2 ^= _s0; + _s3 ^= _s1; + _s1 ^= _s2; + _s0 ^= _s3; + + _s2 ^= t; + + _s3 = (_s3 << 45) | (_s3 >> 19); + + return rslt; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public ulong Next(ulong max) + { + if (max <= uint.MaxValue) return Next((uint)max); + + if (max <= 1ul << 38) return ((NextUInt32() * max >> 32) + (NextUInt32() & ((1u << 26) - 1)) * max) >> 26; + + ulong r, v, limit = (ulong)-(long)max; + do + { + r = NextUInt64(); + v = r % max; + } while (r - v > limit); + + return v; + } + + public bool NextBool() => NextUInt64() < 1ul << 63; + + public override void GetBytes(byte[] data) + { + if (data == null) throw new ArgumentNullException(nameof(data)); + GetBytes(new Span(data)); + } + + public override unsafe void GetBytes(Span b) + { + if (b.Length == 0) return; + + ulong s0 = _s0; + ulong s1 = _s1; + ulong s2 = _s2; + ulong s3 = _s3; + + int i = 0; + + fixed (byte* pBuffer = b) + { + ulong* pULong = (ulong*)pBuffer; + + for (int bound = b.Length / sizeof(ulong); i < bound; i++) + { + ulong r1 = (s1 << 2) + s1; + ulong r2 = (r1 << 7) | (r1 >> 57); + pULong[i] = (r2 << 3) + r2; + + ulong t = s1 << 17; + s2 ^= s0; + s3 ^= s1; + s1 ^= s2; + s0 ^= s3; + + s2 ^= t; + + s3 = (s3 << 45) | (s3 >> 19); + } + } + + i *= 8; + + if (i < b.Length) + { + ulong r1 = (s1 << 2) + s1; + ulong r2 = (r1 << 7) | (r1 >> 57); + ulong rslt = (r2 << 3) + r2; + + ulong t = s1 << 17; + + s2 ^= s0; + s3 ^= s1; + s1 ^= s2; + s0 ^= s3; + + s2 ^= t; + + s3 = (s3 << 45) | (s3 >> 19); + + while (i < b.Length) + { + b[i++] = (byte)rslt; + rslt >>= 8; + } + } + + _s0 = s0; + _s1 = s1; + _s2 = s2; + _s3 = s3; + } + + public double NextDouble() => (NextUInt64() >> 11) * (1.0 / (1ul << 53)); + + private static readonly ulong[] JUMP = + {0x180ec6d33cfd0aba, 0xd5a61266f0c9392c, 0xa9582618e03fc9aa, 0x39abdc4529b1661c}; + + private static readonly ulong[] LONG_JUMP = + {0x76e15d3efefdcbbf, 0xc5004e441c522fb3, 0x77710069854ee241, 0x39109bb02acbe635}; + + public void Jump() => Jump(JUMP); + + public void LongJump() => Jump(LONG_JUMP); + + private void Jump(in ulong[] jumps) + { + ulong s0 = 0; + ulong s1 = 0; + ulong s2 = 0; + ulong s3 = 0; + + for (int i = 0; i < jumps.Length; i++) + for (int b = 0; b < 64; b++) + { + if ((jumps[i] & 1ul << b) != 0) + { + s0 ^= _s0; + s1 ^= _s1; + s2 ^= _s2; + s3 ^= _s3; + } + + NextUInt64(); + } + + _s0 = s0; + _s1 = s1; + _s2 = s2; + _s3 = s3; + } + + public Xoshiro256PlusPlus Split() + { + Xoshiro256PlusPlus rng = new Xoshiro256PlusPlus(_s0, _s1, _s2, _s3); + rng.Jump(); + return rng; + } + + public Xoshiro256PlusPlus LongSplit() + { + Xoshiro256PlusPlus rng = new Xoshiro256PlusPlus(_s0, _s1, _s2, _s3); + rng.LongJump(); + return rng; + } + } + + public class SplitMix64 + { + private ulong x; + + public SplitMix64(ulong seed) => x = seed; + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public ulong Next() + { + ulong z = x += 0x9e3779b97f4a7c15; + z = (z ^ (z >> 30)) * 0xbf58476d1ce4e5b9; + z = (z ^ (z >> 27)) * 0x94d049bb133111eb; + return z ^ (z >> 31); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void FillArray(ulong[] arr) + { + for (int i = 0; i < arr.Length; i++) arr[i] = Next(); + } + } +} diff --git a/README.md b/README.md index ec073ff19..d8812a82f 100644 --- a/README.md +++ b/README.md @@ -4,19 +4,24 @@ ModernUO Ultima Online Server Emulator for the modern era! ### Join and Follow! -[Discord Channel](https://discord.gg/VdyCpjQ) -[Twitter](https://www.twitter.com/modernuo) -[Reddit](https://www.reddit.com/r/modernuo) +[Discord Channel](https://discord.gg/VdyCpjQ) +[Twitter](https://www.twitter.com/modernuo) +[Reddit](https://www.reddit.com/r/modernuo) ### Goals - See [Goals](./GOALS.md) # Requirements to Compile - [.NET Core 3.0 SDK](https://dotnet.microsoft.com/download/dotnet-core/3.0) -- [System.IO.Pipelines 4.6.0](https://www.nuget.org/packages/System.IO.Pipelines/) (Restored automatically during publishing) ### Requirements to Run -- zlib (Linux only) + +#### Linux +- `apt get zlib libuv` or equiv for that distribution +- Optional: compile and install [Intel DRNG](https://github.com/modernuo/libdrng) +#### OSX +- `brew install zlib libuv` +- Optional: compile and install [Intel DRNG](https://github.com/modernuo/libdrng) ### Building with .NET Core 3.0 SDK `dotnet publish /p:PublishProfile=[platform][-SelfContained]`