g-md5.ads, g-md5.adb (Digest): Fix off-by-one error in padding computation.
2007-04-06 Thomas Quinot <quinot@adacore.com> * g-md5.ads, g-md5.adb (Digest): Fix off-by-one error in padding computation. From-SVN: r123574
This commit is contained in:
parent
0fdc3afe3f
commit
cf6ba14a7b
|
@ -6,7 +6,7 @@
|
||||||
-- --
|
-- --
|
||||||
-- B o d y --
|
-- B o d y --
|
||||||
-- --
|
-- --
|
||||||
-- Copyright (C) 2002-2005, AdaCore --
|
-- Copyright (C) 2002-2006, AdaCore --
|
||||||
-- --
|
-- --
|
||||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
-- 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- --
|
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||||
|
@ -187,7 +187,6 @@ package body GNAT.MD5 is
|
||||||
|
|
||||||
procedure Convert (X : Unsigned_32) is
|
procedure Convert (X : Unsigned_32) is
|
||||||
Y : Unsigned_32 := X;
|
Y : Unsigned_32 := X;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
for J in 1 .. 4 loop
|
for J in 1 .. 4 loop
|
||||||
Result (Cur + 1) := Hex_Digit (Y and Unsigned_32'(16#0F#));
|
Result (Cur + 1) := Hex_Digit (Y and Unsigned_32'(16#0F#));
|
||||||
|
@ -205,7 +204,9 @@ package body GNAT.MD5 is
|
||||||
|
|
||||||
Last_Block (1 .. C.Last) := C.Buffer (1 .. C.Last);
|
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);
|
Last_Block (C.Last + 1 .. 64) := Padding (1 .. 64 - C.Last);
|
||||||
Transform (C1, Last_Block);
|
Transform (C1, Last_Block);
|
||||||
Last_Block := (others => ASCII.NUL);
|
Last_Block := (others => ASCII.NUL);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
-- --
|
-- --
|
||||||
-- S p e c --
|
-- S p e c --
|
||||||
-- --
|
-- --
|
||||||
-- Copyright (C) 2002-2005, AdaCore --
|
-- Copyright (C) 2002-2006, AdaCore --
|
||||||
-- --
|
-- --
|
||||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
-- 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- --
|
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||||
|
@ -46,7 +46,7 @@ package GNAT.MD5 is
|
||||||
|
|
||||||
type Context is private;
|
type Context is private;
|
||||||
-- This type is the four-word (16 byte) MD buffer, as described in
|
-- This type is the four-word (16 byte) MD buffer, as described in
|
||||||
-- RFC 1321 (3.3). It initial value is Initial_Context below.
|
-- RFC 1321 (3.3). Its initial value is Initial_Context below.
|
||||||
|
|
||||||
Initial_Context : constant Context;
|
Initial_Context : constant Context;
|
||||||
-- Initial value of a Context object. May be used to reinitialize
|
-- Initial value of a Context object. May be used to reinitialize
|
||||||
|
|
Loading…
Reference in New Issue