Finite Field Arithmetic

ffa_rng.ads


   1 ------------------------------------------------------------------------------
   2 ------------------------------------------------------------------------------
   3 -- This file is part of 'Finite Field Arithmetic', aka 'FFA'.               --
   4 --                                                                          --
   5 -- (C) 2019 Stanislav Datskovskiy ( www.loper-os.org )                      --
   6 -- http://wot.deedbot.org/17215D118B7239507FAFED98B98228A001ABFFC7.html     --
   7 --                                                                          --
   8 -- You do not have, nor can you ever acquire the right to use, copy or      --
   9 -- distribute this software ; Should you use this software for any purpose, --
  10 -- or copy and distribute it to anyone or in any manner, you are breaking   --
  11 -- the laws of whatever soi-disant jurisdiction, and you promise to         --
  12 -- continue doing so for the indefinite future. In any case, please         --
  13 -- always : read and understand any software ; verify any PGP signatures    --
  14 -- that you use - for any purpose.                                          --
  15 --                                                                          --
  16 -- See also http://trilema.com/2015/a-new-software-licensing-paradigm .     --
  17 ------------------------------------------------------------------------------
  18 ------------------------------------------------------------------------------
  19 
  20 with Ada.Sequential_IO;
  21 
  22 with FFA; use FFA;
  23 use type FFA.Word;
  24 
  25 
  26 package FFA_RNG is
  27    
  28    Default_RNG_Path : constant String := "/dev/random";
  29    
  30    -- For reading from RNGs:
  31    package Word_IO is new Ada.Sequential_IO(Element_Type => Word);
  32    
  33    -- Represents an RNG Device:
  34    type RNG_Device is record
  35       F : Word_IO.File_Type;
  36    end record;
  37    
  38    -- Prepare an RNG for use; at given path, or will use default
  39    procedure Init_RNG(RNG           : out RNG_Device;
  40                       RNG_Unix_Path : in  String := Default_RNG_Path);
  41    
  42    -- Fill a FZ from RNG
  43    procedure FZ_Random(RNG : in RNG_Device;
  44                        N   : out FZ);
  45    
  46 end FFA_RNG;