Witam
Dobra już zauważyłem mój błąd :P Tylko nie wiem skąd znowu takie oburzenie, mam ograniczona wiedze którą chce poszerzyć o nowe zagadnienia, więc liczę na pomoc. Tym bardziej ze jest to dział Newbie w którym nie każdy siedzi całymi dniami w programowaniu , przez co pewnych kwestii od razu nie załapie. Bo wedle Twojej logiki musiałbym iść na studia lub skończyć kursy żeby mnie ktoś programowania nauczył i po paru latach tu wrócić i wtedy mam prawo pytać. Trochę cierpliwości bo aż tak z moją wiedzą źle nie jest ;-) Nigdy na dllkach nie operowałem więc dopiero poznaje te szlaki.
Teraz zrozumiałem że tą procedurkę też muszę zrobić pod dllloadera, czyli :
@Add_all_algorithms_procedure := GetProcAddress(hLibeayDLL, 'OPENSSL_add_all_algorithms_noconf');
zastapić :
@Add_all_algorithms_procedure := DLL.FindExport('OPENSSL_add_all_algorithms_noconf');
Ale to już nawet nie chodzi o tą procedure bo praktycznie wszystkie inne które operują na zmiennej ctx też mi sypie błędami.
Dllke i plik nagłówkowy mam swój który to normalnie mi fungował ale z tym dllloaderem już nie.
TO jest to co mam dołożone u siebie (libeay32.pas) :
pEVP_CIPHER_CTX = Pointer;
.......
function EVP_BytesToKey(cipher: pointer; md: pEVP_MD; salt: PCharacter; data: PCharacter; datal: integer; count: integer; key: PCharacter; iv: PCharacter): integer; cdecl;
procedure EVP_CIPHER_CTX_init(ctx: pEVP_CIPHER_CTX); cdecl;
function EVP_CIPHER_CTX_new(): pEVP_CIPHER_CTX; cdecl;
procedure EVP_CIPHER_CTX_free(ctx: pEVP_CIPHER_CTX); cdecl;
function EVP_CipherInit_ex(ctx: pEVP_CIPHER_CTX; const _type: pEVP_CIPHER; const engine: PChar; const key: PChar; const Iv: PChar; const encrypt: integer): Integer; cdecl;
function EVP_CipherUpdate(ctx: pEVP_CIPHER_CTX; _out: PChar; var outl: Cardinal; const _in: Pchar; _inl: Cardinal): Integer; cdecl;
function EVP_CipherFinal_ex(ctx: pEVP_CIPHER_CTX; _out: PChar; var _outl: Cardinal): Integer; cdecl;
function EVP_CIPHER_CTX_set_key_length(ctx: pEVP_CIPHER_CTX; keylen: Integer): Integer; cdecl;
I takie coś już nie funguje :
var
ctx: pEVP_CIPHER_ctx;
......
EVP_CIPHER_CTX_set_key_length := DLL.FindExport('EVP_CIPHER_CTX_set_key_length');
EVP_CIPHER_CTX_new := DLL.FindExport('EVP_CIPHER_CTX_new');
EVP_BytesToKey := DLL.FindExport('EVP_BytesToKey');
ctx:=EVP_CIPHER_CTX_new();
EVP_BytesToKey(EVP_des_ebc(),EVP_md2(),nil,pchar(klucz),length(kucz),1,kluczxxx,ivxxx);
EVP_CIPHER_CTX_set_key_length(ctx, 64); //gdy usune ta linijke to dziala i błędu nie ma
Więc jeśli to możliwe to prosze o jakąś podpowiedź :-)