sparknacl_4.0.0_3bb462a1/tests/src/ada/random.adb

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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;