Tenho um cliente TLS que usa boost para as operações de conexão e handshake e, se elas falharem, retornarão um boost::system::system_error.
Se possível, gostaria de verificar se o código de erro está relacionado a um dos seguintes casos:
- Incompatibilidade de conjunto de cifras
- Incompatibilidade de versão TLS
- Certificado incorreto
- Certificado expirado
Encontrei os seguintes códigos de erro, mas não consigo encontrar nenhum que seja relevante para o meu caso:
https://www.boost.org/doc/libs/1_87_0/boost/asio/error.hpp https://www.boost.org/doc/libs/master/libs/system/doc/html/system.html#ref_boostsystemerrc_hpp
O Boost Asio relata os erros do OpenSSL na categoria
asio::error::get_ssl_category()
. Como tal, você pode "apenas" compará-los. CUIDADOSAMENTE. Nunca comparevalue()
diretamente.Sempre use pelo menos
error_condition
operadores de comparação. Prefira compararerror_condition
sempre que possível (leia mais aqui Testando condições de erro específicas e Introdução ).Então, na realidade, quando você deseja verificar detalhes:
Ao vivo em Coliru
Impressão