Hallo,

aqbanking-hbci hält sich bei der Hash-Berechnung im Inibrief nicht an
die Vorgaben der HBCI-Spezifikation (geprüft für Version 2.0.1 und
2.1). In VI.3.1.3.2 (S. 16f.) wird gefordert, daß Exponent und Modulus
mit Nullen auf 1024 Bit aufzufüllen und der Hashwert aus den
aneinandergehängten Binärstrings zu bilden ist. Ich schicke einen
Patch mit, der den Fehler behebt.

Ob das Problem auch an anderer Stelle auftritt, kann ich nicht sagen.

Hendrik

--- iniletter.c.orig    2005-08-29 22:58:52.000000000 +0200
+++ iniletter.c 2005-08-30 08:55:21.000000000 +0200
@@ -161,6 +161,7 @@
     unsigned int l;
     GWEN_BUFFER *bbuf;
     GWEN_BUFFER *lbuf;
+    GWEN_BUFFER *keybuf;
     int i;
     GWEN_TIME *ti;
     char numbuf[32];
@@ -223,6 +224,7 @@
     }
 
     lbuf=GWEN_Buffer_new(0, 1024, 0, 1);
+    keybuf=GWEN_Buffer_new(0, 257, 0, 1);
 
     /* prelude */
     GWEN_Buffer_AppendString(lbuf,
@@ -311,6 +313,8 @@
       p+=16;
       GWEN_Buffer_AppendString(lbuf, "\n");
     }
+    GWEN_Buffer_FillLeftWithBytes(keybuf, 0, 32);
+    GWEN_Buffer_AppendBytes(keybuf, GWEN_Buffer_GetStart(bbuf), l);
     GWEN_Buffer_free(bbuf);
 
     /* modulus */
@@ -348,6 +352,10 @@
       p+=16;
       GWEN_Buffer_AppendString(lbuf, "\n");
     }
+    GWEN_Buffer_IncrementPos(keybuf, 128);
+    GWEN_Buffer_FillLeftWithBytes(keybuf, 0, 32);
+    GWEN_Buffer_AppendBytes(keybuf, GWEN_Buffer_GetStart(bbuf), l);
+    GWEN_Buffer_free(bbuf);
 
     GWEN_Buffer_AppendString(lbuf, "\n");
     GWEN_Buffer_AppendString(lbuf, "  ");
@@ -356,14 +364,14 @@
     GWEN_Buffer_AppendString(lbuf, "\n");
     l=20;
     if (GWEN_MD_Hash("RMD160",
-                     GWEN_Buffer_GetStart(bbuf),
-                     GWEN_Buffer_GetUsedBytes(bbuf),
+                     GWEN_Buffer_GetStart(keybuf),
+                     GWEN_Buffer_GetUsedBytes(keybuf),
                      hashbuffer,
                      &l)) {
       DBG_ERROR(0, "Could not hash");
       abort();
     }
-    GWEN_Buffer_free(bbuf);
+    GWEN_Buffer_free(keybuf);
 
     GWEN_Buffer_AppendString(lbuf, "  ");
     if (GWEN_Text_ToHexBuffer(hashbuffer, 20, lbuf, 2, ' ', 0)) {


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
Aqbanking-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/aqbanking-devel

Reply via email to