Einzelnen Beitrag anzeigen

Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#1

Array of bytes umkehren - richtig so?

  Alt 6. Mai 2019, 22:07
Hallo.

nur um sicherzustellen, dass mein Code richtig ist, habe ich eine kurze Frage. Gegeben ist eine Datenstruktur vom Typ CERT_INFO, die von der WinAPI befüllt wird. Teil der Struktur ist SerialNumber vom Typ CRYPT_INTEGER_BLOB, das ich umkehren will/muss, weil die SerialNumber sonst gespiegelt aus CryptBinaryToString komme (wegen
Zitat:
SerialNumber
The least significant byte is the zero byte of the pbData member of SerialNumber.
)

Das Umkehren mache ich derzeit so:
Delphi-Quellcode:
var
  CertContext: PCCERT_CONTEXT;
  Lserial: LPByte;

...

     procedure ReverseBytes(Source, Dest: Pointer; Size: NativeUInt);
     begin
        Dest := PByte( NativeUInt(Dest) + Size - 1);
        while Size > 0 do begin
            PByte(Dest)^:= PByte(Source)^;
            Inc(PByte(Source));
            Dec(PByte(Dest));
            Dec(Size);
        end;
     end;

...
GetMem(Lserial, CertContext.pCertInfo.SerialNumber.cbData);
try
  ReverseBytes(CertContext.pCertInfo.SerialNumber.pbData,
             Lserial,
             CertContext.pCertInfo.SerialNumber.cbData);
  ...
finally
  FreeMem(Lserial);
end;
Funktion ReverseBytes ist von hier, nur den Datentyp der Variable Size habe ich geändert.

Ist das korrekt so?

Grüße
Dalai

Geändert von Dalai ( 7. Mai 2019 um 00:28 Uhr) Grund: Reservierung des Speichers vergessen
  Mit Zitat antworten Zitat