[ ljube @ 12.03.2004. 11:44 ] @
Zdravo,
Napravio sam mali MFC programcic koji sluzi za razmjenu poruka izmedju dvije udaljene mreze. Sve poruke se kriptuju sa MS CAPICOM prije slanja.

Program inace radi dobro kada primi kriptovanu poruku, ali kada pristigla poruka nije kriptovana program "puca". Ne pomaze ni try/catch kombinacija.

Ovo je samo dio koda koji ilustruje problem:

try {
MainCrypto.Decrypt(sessparam);
}
//catch(COleException * errm)
catch(COleDispatchException * errm)
{
errm->ReportError();
errm->Delete();
} // catch


Importovao sam CEncryptedData iz CAPICOM TLB i program je automatski kreirao klasu:
class CEncryptedData : public COleDispatchDriver {....

Da li neko vidi gdje gresim ili koristim pogresan exception handler (pokusao sam sa oba pomenuta u kodu)?

Hvala,
Ljubisa
[ Dragi Tata @ 12.03.2004. 16:31 ] @
Pojasni malo bliže pojam "puca". Koju poruku tačno dobiješ? Access violation, Unhadled exception ili nešto treće?
[ ljube @ 12.03.2004. 21:06 ] @
Ogradio sam se od ovog problema tako sto na kraju svakog kriptovanog stringa zaljepim CRC, tako da aplikacija koja prima poruku moze na osnovu CRC-a da otkrije dali se radi o kriptovanom ili ne kriptovanom stringu.
Naravno, neki zlonamjeran korisnik bi mogao da posalje obican string sa ispravnim CRC-om i to bi oborilo krajnu aplikaciju.

Pokusao sam da repiciram problem ali na moje iznenadjenje prazna aplikacija uredno prijavljuje gresku u catch bloku!?

Ako neko zeli da pogleda source za VC7 moze da ga preuzme sa http://www.programbl.com/testcapi.zip

Prava aplikacija koristi MFC dll za rad sa MS CAPICOM.
Da li mogu try i catch blokovi da se koriste u dll-ovima?

U svakom slucaju, u ponedeljak cu skinuti CRC zastitu i pokusati da vidim tacnu gresku koja se javi kada aplikacija "pukne".

Hvala,
Ljubisa