-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2004 Ada Core Technologies, Inc. --
+-- Copyright (C) 2002-2006, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
procedure Transform
(C : in out Context;
Block : String);
- -- Process one block of 64 characters.
+ -- Process one block of 64 characters
------------
-- Decode --
(Block : String;
X : out Sixteen_Words)
is
- Cur : Positive := Block'First;
+ Cur : Positive := Block'First;
begin
pragma Assert (Block'Length = 64);
Result : Message_Digest;
Cur : Natural := 1;
- -- Index in Result where the next character will be placed.
+ -- Index in Result where the next character will be placed
Last_Block : String (1 .. 64);
procedure Convert (X : Unsigned_32) is
Y : Unsigned_32 := X;
-
begin
for J in 1 .. 4 loop
Result (Cur + 1) := Hex_Digit (Y and Unsigned_32'(16#0F#));
Last_Block (1 .. C.Last) := C.Buffer (1 .. C.Last);
- if C.Last > 56 then
+ -- Too many magic literals below, should be defined as constants ???
+
+ if C.Last > 55 then
Last_Block (C.Last + 1 .. 64) := Padding (1 .. 64 - C.Last);
Transform (C1, Last_Block);
Last_Block := (others => ASCII.NUL);
function Wide_Digest (W : Wide_String) return Message_Digest is
C : Context;
-
begin
Wide_Update (C, W);
return Digest (C);
(C : in out Context;
Input : Wide_String)
is
-
String_Input : String (1 .. 2 * Input'Length);
Cur : Positive := 1;