Ahoj,
mám za úkol vypracovat POP3 klienta, který má podporovat mimojiné i SSL spojení a příkaz STSL, který spojení přepne z nezabezpečeného na šifrované. Pro implementaci mám použít openssl (verze 1.0.2). Podařilo se mi podle tutoriálu udělat nezabezpečené spojení, podařilo se mi udělat i SSL spojení, ale přepnutí z nezabezpečeného na zabezpečené opravdu netuším, jak udělat. Tuším, že bych měl vytvořit SSL objekt, nějak ho provázat s BIO objektem, který funguje jako socket a provést handshake se serverem, ale po odpoledni stráveném nad bídnou dokumentací už opravdu nevím.
Zde je minimální nutný kód pro vytvoření nezabezpečeného spojení a inializace SSL_CTX objektu:
SSL_load_error_strings();
ERR_load_BIO_strings();
SSL_library_init();
OpenSSL_add_all_algorithms();
BIO *bio;
SSL_CTX *ctx;
std::string addr = host + ":" + port;
bio = BIO_new_connect(addr.c_str());
BIO_do_connect(bio);
ctx = SSL_CTX_new(SSLv23_client_method());
SSL_CTX_set_default_verify_paths(ctx);
(pro zjednodušení jsem odstranil kontrolu chyb). A otázka zní:
Když teď pomocí BIO objektu odešlu na server příkaz "STLS" a přijde mi odpověď "+OK", jakým způsobem se inicializuje SSL objekt, prováže se s BIO objektem a provede se handshake?
Díky předem za všechny rady