Hoi
Ik heb weer een lastig iets waar ik niet uit kom.
Ik genereer een AES key en plaats deze met alle parameters in een record.
Code:
TKeyStructure = packed record
AESKeyLen : DWORD;
AESKey : Array [0..47] of Byte;
<knip>
end;
De CryptExport functie export de data als PByte.
Export gaat goed en ik heb de juiste key in de file.
Code:
function TAES.ExportKey (Output : TMemoryStream) : boolean;
var
dwDataLen : DWORD;
pbAESKey : PByte;
I : Integer;
begin
result := false;
if (Output <> nil) AND (FSessionKey <> 0) then
begin
result := CryptExportKey(FSessionKey, 0, PLAINTEXTKEYBLOB, 0, nil, @dwDataLen); // Get size of the key in dwDataLen
if result then
begin // get size succesful
GetMem(pbAESKey, dwDataLen);
try
result := CryptExportKey(FSessionKey, 0, PLAINTEXTKEYBLOB, 0, pbAESKey, @dwDataLen);
if result then
begin // Export AESKey succesful
ZeroMemory(@FKeyStructure,SizeOf(FKeyStructure));
FKeyStructure.AESKeyLen := dwDataLen;
for I := 0 to dwDataLen -1 do
FKeyStructure.AESKey[i] := BYTE(pbAESKey[I]);
Output.SetSize(SizeOf(FKeyStructure));
Output.Position := 0;
Output.Write(FKeyStructure, SizeOf(FKeyStructure));
<knip>
finally
FreeMem(pbAESKey, dwDataLen);
end;
<knip>
Zoals vermeld, bovenstaand werkt, wat niet werkt is de import.
Ik dacht vrij eenvoudig de export functie om te draaien maar dat werkt dus niet --> result = Key not valid for use in specified state
Ik weet dan ook niet hoe ik data in een PBYTE moet debuggen.
Code:
function TAES.ImportKey (Input : TMemoryStream) : boolean;
var
dwDataLen : DWORD;
Buffer : TBytes;
I : Integer;
S : AnsiString;
pbAESKey : PByte;
result := false;
if (Input <> nil) AND (FSessionKey = 0) then
begin
ZeroMemory(@FKeyStructure,SizeOf(FKeyStructure));
Input.SetSize(SizeOf(FKeyStructure));
<knip> Wat code verwijderd die checked of dat de file wel een geldige file is.
dwDataLen := FKeyStructure.AESKeyLen;
for I := 0 to dwDataLen -1 do
BYTE(pbAESKey[I]) := FKeyStructure.AESKey[i];
//dwDataLen := SizeOf(pbAESKey);
result := (CryptImportKey(FProv, pbAESKey, dwDataLen, 0, 0, @FSessionKey));
Alvast bedankt maar weer ;-)
Herby
Bookmarks