with LSC.SHA512, LSC.Types; use type LSC.Types.Word64;
package LSC.HMAC_SHA384 is
Context_Type
Context_Finalize
Context_Init
Context_Update
Get_Auth
Get_Prf
Null_Auth : constant Auth_Type;
type Context_Type is private;
subtype Auth_Index is Types.Index range 0 .. 2;
subtype Auth_Type is Types.Word64_Array_Type (Auth_Index);
function Context_Init (Key : SHA512.Block_Type) return Context_Type;
Key
procedure Context_Update (Context : in out Context_Type; Block : in SHA512.Block_Type);
Context
Block
derives Context from *, Block;
procedure Context_Finalize (Context : in out Context_Type; Block : in SHA512.Block_Type; Length : in SHA512.Block_Length_Type);
Length
derives Context from *, Block, Length;
function Get_Prf (Context : in Context_Type) return SHA512.SHA384_Hash_Type;
function Get_Auth (Context : in Context_Type) return Auth_Type;
function Authenticate (Key : SHA512.Block_Type; Message : SHA512.Message_Type; Length : Types.Word64) return Auth_Type;
Message
pre Message'First + (Length / SHA512.Block_Size) in Message'Range;
private -- Implementation-defined ...
end LSC.HMAC_SHA384;