raw
vdiff_keccak            1 with Interfaces; use Interfaces;
vdiff_keccak 2 with Interfaces.C; use Interfaces.C;
vtools_fixes_bitr... 3 with Interfaces.C.Strings;
vtools_fixes_bitr... 4 with Interfaces.C.Pointers;
vdiff_keccak 5 with Ada.Unchecked_Deallocation;
vdiff_keccak 6 with SMG_Keccak; use SMG_Keccak;
vdiff_keccak 7 package Keccak_C is
vtools_fixes_bitr... 8 package Char_Ptrs is
vtools_fixes_bitr... 9 new Interfaces.C.Pointers (Index => size_t,
vtools_fixes_bitr... 10 Element => char,
vtools_fixes_bitr... 11 Element_Array => char_array,
vtools_fixes_bitr... 12 Default_Terminator => nul);
vtools_fixes_bitr... 13 use type Char_Ptrs.Pointer;
vtools_fixes_bitr... 14 subtype Char_Star is Char_Ptrs.Pointer;
vdiff_keccak 15 subtype C_Context is Keccak_Context(Block_Len=>Default_Bitrate);
vdiff_keccak 16 type C_Context_Access is access C_Context;
vdiff_keccak 17 procedure C_Get_Size(Size: out Interfaces.C.size_t);
vdiff_keccak 18 pragma Export (C, C_Get_Size, "keccak_get_ctx_byte_size");
vdiff_keccak 19 function C_Begin return C_Context_Access;
vdiff_keccak 20 pragma Export (C, C_Begin, "keccak_begin");
vdiff_keccak 21 procedure C_Hash(Ctx: C_Context_Access;
vtools_fixes_bitr... 22 Input: Char_Star;
vdiff_keccak 23 Len: Interfaces.C.Size_T);
vdiff_keccak 24 pragma Export (C, C_Hash, "keccak_hash");
vdiff_keccak 25 procedure C_End(Ctx: C_Context_Access;
vtools_fixes_bitr... 26 Output: Char_Star;
vdiff_keccak 27 Len: Interfaces.C.Size_T);
vdiff_keccak 28 pragma Export (C, C_End, "keccak_end");
vdiff_keccak 29 procedure C_Deallocate(Ctx: in out C_Context_Access);
vdiff_keccak 30 pragma Export (C, C_Deallocate, "keccak_free");
vdiff_keccak 31 end Keccak_C;