Hallo,
beim Untersuchen eines mir gemeldeten Bugreports zum SHA3 Algorithmus bin ich auf ein Design
Detail gestoßen welches den Bug verursacht hat und das ich hier mal diskutieren möchte um
Rat zu erhalten.
Der Bug ist, dass bei nutzung von CalcStream oder CalcFile (das ruft intern CalcStream auf)
mit dem SHA3 Algorithmus eine
Exception ausgelöst wird, wenn nach CalcStream Done aufgerufen
wird. Fängt man die ab, kann man trotzdem den korrekten hash Wert abrufen.
Done ist eigentlich zum Abschließen einer Hash Operation gedacht (so verstand ich jedenfalls
was ich da geerbt habe).
Jetzt habe ich herausgefunden, dass Done auch im CalcStream am Ende aufgerufen wird und
beim SHA3 wird innerhalb des Done eine Methode aufgerufen, die man für eine SHA3 Verarbeitung
nur einmalig aufrufen darf. Da es intern ein Flag gibt das ich nutzen kann, hab' ich im
Entwicklungszweig das mal einfach abgefragt und den Aufruf dann unterdrückt. Damit ist die
Exception zwar weg, aber ich frage mich, ob der Done aufruf im CalcStream so das wahre ist.
CalcStream ist bisher aber auch so gebaut, dass es direkt den berechneten Hash zurückliefert
und dazu Done vorher aufgerufen werden muss. Die Frage ist halt auch, ob mehrere verkettete
CalcStream Aufrufe in der Praxis irgendwie sinnvoll sein können, dann wäre die Architektur
wie sie ist nicht gut, oder ob ich mir zu arg den Kopf über unwichtige Dinge zerbreche?
Grüße
TurboMagic