with Ada.Numerics.Discrete_Random;
package body Random
with SPARK_Mode => Off
is
pragma Compile_Time_Warning
(True, "This PRNG is not cryptographically secure.");
package PRNG is new Ada.Numerics.Discrete_Random (Interfaces.Unsigned_8);
Gen : PRNG.Generator;
function Random_Byte return Interfaces.Unsigned_8
is
begin
return PRNG.Random (Gen);
end Random_Byte;
procedure Random_Bytes (R : out SPARKNaCl.Byte_Seq)
is
begin
for I in R'Range loop
pragma Loop_Optimize (No_Unroll);
R (I) := Random_Byte;
end loop;
end Random_Bytes;
begin
PRNG.Reset (Gen); -- time dependent
end Random;