fix slow send speed, new fifo allows get of entire buffer
[lcore.git] / fastmd5.pas
index 6455e5cff31b69b770fa3ad0f55552780224b0c6..ad19876be73d5f05f63e13f9eedd7809f639ad0c 100644 (file)
@@ -39,7 +39,7 @@ type
 {$i uint32.inc}\r
 \r
 type\r
-  dvar=array[0..0] of byte;\r
+  dvar=array[0..65535] of byte;\r
   Tmd5state=record\r
     buf:array[0..63] of byte;\r
     H:array[0..3] of uint32;\r
@@ -57,6 +57,8 @@ procedure getmd5(const data;len:longint;var result);
 \r
 function md5tostr(const md5:tmd5):ansistring;\r
 \r
+function md5selftest:boolean;\r
+\r
 implementation\r
 \r
 function inttohex(val,bits:integer):ansistring;\r
@@ -211,7 +213,7 @@ begin
   b := state.msglen and 63;\r
 \r
   inc(state.msglen,len);\r
-  while (state.msglen > $20000000) do begin\r
+  while (state.msglen >= $20000000) do begin\r
     dec(state.msglen,$20000000);\r
     inc(state.msglenhi);\r
   end;\r
@@ -294,4 +296,18 @@ begin
   md5tostr := s;\r
 end;\r
 \r
+function md5selftest;\r
+const\r
+  teststring:ansistring='The quick brown fox jumps over the lazy dog';\r
+  testresult:array[0..15] of byte=($9e,$10,$7d,$9d,$37,$2b,$b6,$82,$6b,$d8,$1d,$35,$42,$a4,$19,$d6);\r
+var\r
+  h:tmd5;\r
+  a:integer;\r
+begin\r
+  getmd5(teststring[1],length(teststring),h);\r
+  result := true;\r
+  for a := 0 to 15 do if h[a] <> ord(testresult[a]) then result := false;\r
+end;\r
+\r
+\r
 end.\r