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