![]() |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Da wäre es langsam interessant, eine existierende OpenSource lib die weit verbreitet ist, via wrapper für delphi zur verfügung zu stellen.
Z.B. libgcrypt o.ä. Ist lgpl, sollte also auch in proprietärer Software einsetzbar sein. Viele c/c++ OS Projekte sind up-to-date, häufig eingesetzt, gut geprüft etc. Soweit ich weiß ist es doch relativ unkompliziert eine .dll oder .so via wrapper aus delphi heraus anzusprechen. Damit würde man sich das regelmäßige neuentwickeln sparen, man müsste "nur" die api immer aktuell halten. Ok, es ist kein PurePascal, aber sicherlich doch eine alternative Lösung zu unseren Problemen hier. Gibt es da vielleicht schon was? Lg |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Ich habe in der Zwischenzeit die meisten Anpassungen selbst durchgeführt, zumindest für die Teile, die ich benötige.
Eine zusätzliche DLL wäre zwar kein echtes Problem, möchte ich aber eigentlich nicht. |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Hallo zusammen,
darf man fragen ob das Projekt Dec 6.0 noch weiter verfolgt wird? Wäre schon toll und war doch schon bald fertig, oder? Ich habe mir auch mal die Kryptoroutinen von gammatester angesehen aber hätte da schon so meine Probleme um die von mir verwendeten DEC-Funktionen umzusetzen. Sowas zum Beispiel:
Delphi-Quellcode:
Weiß jemand was die Entsprechung mit den gammatester-Kryptoroutinen wäre? Geht das damit?
function EncryptString(const Password: RawByteString; const Value: RawByteString): RawByteString;
var Salt, SessionKey: Binary; begin Salt := RandomBinary(16); with TCipher_Rijndael.Create do try SessionKey := THash_SHA1.KDFx(Password, Salt, Context.KeySize, TFormat_Copy); mode := cmCFS8; Init(SessionKey); Result := TFormat_MIME64.Encode(Salt + EncodeBinary(Value, TFormat_Copy)); finally Free; ProtectBinary(Salt); ProtectBinary(SessionKey); end; end; Grüße, Uwe |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Also auf DEC hoffe ich nicht mehr. Ich habe das System von Gammatester erfolgreich umgestellt.
Das, was Du möchtest, sollte auch (irgendwie) funktionieren. Ich muß bei mir gucken, Moment. |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
So habe ich das gemacht. Das ist anscheinend von mir aus einem Beispiel von ihm zusammengestrickt :
Delphi-Quellcode:
function Encrypt(const AText: string; const APassword: string): string;
{ -Encrypt file InName to OutName using password } // http://www.wolfgang-ehrhardt.de/crypt_en.html const bufSize = $C000; var N : word; len : int64; hdr : TFCA256Hdr; cxe : TAES_EAXContext; auth : TFCA256_AuthBlock; TextOut, TextIn: TStringStream; buf : array [0 .. bufSize - 1] of Byte; begin randomize; TextIn := TStringStream.Create(AText); TextOut := TStringStream.Create; try len := TextIn.Size; GetSalt(hdr.salt); if FCA_EAX256_initS(cxe, APassword, hdr) <> 0 then raise Exception.Create('Fehler'); TextOut.WriteBuffer(hdr, SizeOf(hdr)); while len > 0 do begin if len > SizeOf(buf) then N := SizeOf(buf) else N := len; TextIn.ReadBuffer(buf, N); dec(len, N); if FCA_EAX256_encrypt(cxe, buf, N) <> 0 then raise Exception.Create('Fehler'); TextOut.WriteBuffer(buf, N); end; FCA_EAX256_final(cxe, auth); TextOut.WriteBuffer(auth, SizeOf(auth)); Result := Base64EncStr(TextOut.DataString); finally TextOut.Free; TextIn.Free; end; end; function Decrypt(const AText: string; const APassword: string): string; { -Decrypt file InName to OutName using password sPW } // http://www.wolfgang-ehrhardt.de/crypt_en.html const bufSize = $C000; var N : word; I, len : longint; hdrk : TFCA256Hdr; hdrf : TFCA256Hdr; cxe : TAES_EAXContext; cxh : TFCA_HMAC256_Context; authf : TFCA256_AuthBlock; authc : TFCA256_AuthBlock; UseEAX : boolean; TextOut, TextIn: TStringStream; buf : array [0 .. bufSize - 1] of Byte; begin if AText = '' then Exit(''); TextIn := TStringStream.Create(Base64DecStr(AText)); TextOut := TStringStream.Create; try len := TextIn.Size - SizeOf(hdrf) - SizeOf(authf); TextIn.ReadBuffer(hdrf, SizeOf(hdrf)); if (hdrf.FCASig <> C_FCA_Sig) or (hdrf.Flags and $F0 <> $A0) then raise Exception.Create('Fehler'); if hdrf.Flags and $02 <> 0 then begin writeln(#7'*** Warning: Found zlib compression flag, use t_zlibex to inflate <outfile>'); end; if not(hdrf.Flags and $04 <> 0) then begin raise Exception.Create('Fehler'); end; hdrk := hdrf; UseEAX := odd(hdrf.Flags); if UseEAX then begin if FCA_EAX256_initS(cxe, APassword, hdrk) <> 0 then raise Exception.Create('Fehler'); end else begin if FCA_HMAC256_initS(cxh, APassword, hdrk) <> 0 then raise Exception.Create('Fehler'); end; if hdrf.PW_ver <> hdrk.PW_ver then raise Exception.Create('Fehler'); while len > 0 do begin if len > SizeOf(buf) then N := SizeOf(buf) else N := len; TextIn.ReadBuffer(buf, N); dec(len, N); if UseEAX then begin if FCA_EAX256_decrypt(cxe, buf, N) <> 0 then raise Exception.Create('Fehler'); end else begin if FCA_HMAC256_decrypt(cxh, buf, N) <> 0 then raise Exception.Create('Fehler'); end; TextOut.WriteBuffer(buf, N); end; if UseEAX then begin FCA_EAX256_final(cxe, authc); end else begin FCA_HMAC256_final(cxh, authc); end; TextIn.ReadBuffer(authf, SizeOf(authf)); for I := 0 to 15 do begin if authf[I] <> authc[I] then begin raise Exception.Create('Fehler'); end; end; Result := TextOut.DataString; finally TextOut.Free; TextIn.Free; end; end; |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Hallo Jens01,
vielen Dank. Werde ich mal ausprobieren. Schade, wenn das mit DEC nichts mehr werden sollte. Ist ja doch um Einiges einfacher anzuwenden... Grüße, Uwe |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Zitat:
Gammatester ist aber öfter mal hier im Forum. |
AW: 256 bit Integer Addition von ASM in PurePascal
Zitat:
Delphi-Quellcode:
Direktive einfügen.
{$asmmode intel}
Eine Anmerkung noch zu Calling Conventions: diese sind unter x86_64-win64 und x86_64-[alles andere] unterschiedlich. Letztere verwenden die Linux x86_64 ABI während nur Windows hier sein eigenes Süppchen kocht. Für FPC würde ich dennoch eine PurePascal Implementierung vorziehen, da es ja noch einige Plattformen mehr gibt (Achtung: auch mit unterschiedlicher Endianess!). Gruß, Sven |
AW: Der DEC x32 ASM in x64/PurePascal Konvertierungsthread
Zitat:
Zitat:
|
AW: 256 bit Integer Addition von ASM in PurePascal
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz