with SPARKNaCl; use SPARKNaCl; with SPARKNaCl.Debug; use SPARKNaCl.Debug; with SPARKNaCl.Scalar; use SPARKNaCl.Scalar; with Interfaces; use Interfaces; with Ada.Real_Time; use Ada.Real_Time; with Ada.Text_IO; use Ada.Text_IO; procedure Scalarspeed is AliceSK : constant Bytes_32 := (16#77#, 16#07#, 16#6d#, 16#0a#, 16#73#, 16#18#, 16#a5#, 16#7d#, 16#3c#, 16#16#, 16#c1#, 16#72#, 16#51#, 16#b2#, 16#66#, 16#45#, 16#df#, 16#4c#, 16#2f#, 16#87#, 16#eb#, 16#c0#, 16#99#, 16#2a#, 16#b1#, 16#77#, 16#fb#, 16#a5#, 16#1d#, 16#b9#, 16#2c#, 16#2a#); BobPK : Bytes_32 := (16#de#, 16#9e#, 16#db#, 16#7d#, 16#7b#, 16#7d#, 16#c1#, 16#b4#, 16#d3#, 16#5b#, 16#61#, 16#c2#, 16#ec#, 16#e4#, 16#35#, 16#37#, 16#3f#, 16#83#, 16#43#, 16#c8#, 16#5b#, 16#78#, 16#67#, 16#4d#, 16#ad#, 16#fc#, 16#7e#, 16#14#, 16#6f#, 16#88#, 16#2b#, 16#4f#); K : Bytes_32; T1, T2 : Time; TE : Time_Span; D : Duration; C : constant := 10_000; Ops_Per_Sec : Duration; begin Put_Line ("Bytes_32'Alignment is" & Bytes_32'Alignment'Img); Put_Line ("Normal_GF'Alignment is" & Normal_GF'Alignment'Img); Put_Line ("GF32'Alignment is" & GF32'Alignment'Img); T1 := Clock; for I in 1 .. C loop K := Mult (AliceSK, BobPK); BobPK (0) := BobPK (0) + 1; end loop; T2 := Clock; TE := T2 - T1; D := To_Duration (TE); Put_Line ("Elapsed: " & D'Img & " seconds"); Ops_Per_Sec := Duration (C) / D; Put_Line ("or " & Ops_Per_Sec'Img & " ops per sec"); end Scalarspeed;