Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#7

Re: DEC: fehlerhafte Hashwerte unter C++

  Alt 29. Jun 2009, 08:06
Moin Assertor!

Ich bin nun dabei die DEC v5.2 einzumischen in unser Repository und musste dabei feststellen, dass der von Torry ladbare DEC v5.2 Stand nicht mehr C++Builder kompatibel ist.

Bei den Ciphern wurde die class function Context als virtual abstract gekennzeichnet, im Gegensatz zu Hagen's vorheriger Version mit virtual und einem raise EAbstractError in der Implementation. Da C++ keine virtual static kennt erstellt der HPP Generator hierbei eine ungültige Quelle.

Bitte für die 5.3 Version neben den direkten RangeChecks dies so umstellen. Ich übernehme die DEC 5.2 damit erstmal angepasst.

Grüsse,
Thomas

/EDIT: Ich kann mich leicht entsinnen, dass dies schon eine Änderung in Absprache mit Hagen war, welche nicht aus seiner Lib war. Somit: bitte übernehmen, es kann schon eine Anpassung gewesen sein.

/EDIT2: Gleiches für TDECFormat, alle protected Methoden...

/EDIT3: Nochmals für TDECHash DigestSize & BlockSize

/EDIT4: Code Insight versagt bei dem unnamed Type in der DECHash FTransform. Könnte man dazu nicht einen Typ anlegen?

/EDIT5: Die Compilerkonfigurationsstatements welche nun neu eingefügt sind, wie z.B. RangeCheck error abschalten etc, sind z.T. wirkungslos, da sie vor der Inklude ver.inc angegeben wurden. Die Inklude hingegen setzt eine ganze Reihe von Compilerschaltern um. Dies widerstrebt allen Konfigurationsmöglichkeiten im Projekt. Wir definieren sowas definitiv im Projekt und von daher: könnte man nicht zumindest aus der ver.inc diese Definitionsreihe rauswerfen?

/EDIT6: Zu Edit5: die Zeile ist schon auskommentiert und funktionslos. Mein Fehler - verwirrt aber...

/EDIT7: In der CPU.pas wird der Typ Comp benutzt, welcher nur in Delphi verfügbar ist. Im C++Builder gibt es dafür keine Entsprechung. Könnte ein anderer Typ dafür verwendet werden?

Zitat von RAD2007:
[DCC Warning] CPU.pas(115): W1025 Unsupported language feature: 'Comp'
/EDIT8: Und hier nochmal die DECHash.pas mit den Definitionen. Ich habe das ganze nun an den BCB Compiler Define gebunden.

Delphi-Quellcode:
type
{all Hash Classes}
  THash_MD2 = class; {$IFNDEF BCB}{$DEFINE THash_MD2_asm}{$ENDIF}
  THash_MD4 = class; {$DEFINE THash_MD4_asm}
  THash_MD5 = class; {$DEFINE THash_MD5_asm}
  THash_RipeMD128 = class; {$DEFINE THash_RipeMD128_asm}
  THash_RipeMD160 = class; {$DEFINE THash_RipeMD160_asm}
  THash_RipeMD256 = class; {$DEFINE THash_RipeMD256_asm}
  THash_RipeMD320 = class; {$DEFINE THash_RipeMD320_asm}
  THash_SHA = class; {$DEFINE THash_SHA_asm}
  THash_SHA1 = class;
  THash_SHA256 = class; {$DEFINE THash_SHA256_asm}
  THash_SHA384 = class; {$IFNDEF BCB}{$DEFINE THash_SHA384_asm}{$ENDIF}
  THash_SHA512 = class;
  THash_Haval128 = class; {$DEFINE THashBaseHaval_asm}
  THash_Haval160 = class; // Haval 160, 3 Rounds
  THash_Haval192 = class; // Haval 192, 4 Rounds
  THash_Haval224 = class; // Haval 224, 4 Rounds
  THash_Haval256 = class; // Haval 256, 5 Rounds
  THash_Tiger = class; {$IFNDEF BCB}{$DEFINE THash_Tiger_asm}{$ENDIF}
  THash_Panama = class; {$DEFINE THash_Panama_asm}
  THash_Whirlpool = class; {$DEFINE THashBaseWhirlpool_asm}
  THash_Whirlpool1 = class;
  THash_Square = class; {$IFNDEF BCB}{$DEFINE THash_Square_asm}{$ENDIF}
  THash_Snefru128 = class; {$IFNDEF BCB}{$DEFINE THash_Snefru128_asm}{$ENDIF}
  THash_Snefru256 = class; {$IFNDEF BCB}{$DEFINE THash_Snefru256_asm}{$ENDIF}
  THash_Sapphire = class; {$DEFINE THash_Sapphire_asm}
  Mit Zitat antworten Zitat