// // Utility.cpp // // $Id: //poco/1.4/NetSSL_OpenSSL/src/Utility.cpp#1 $ // // Library: NetSSL_OpenSSL // Package: SSLCore // Module: Utility // // Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. // and Contributors. // // Permission is hereby granted, free of charge, to any person or organization // obtaining a copy of the software and accompanying documentation covered by // this license (the "Software") to use, reproduce, display, distribute, // execute, and transmit the Software, and to prepare derivative works of the // Software, and to permit third-parties to whom the Software is furnished to // do so, all subject to the following: // // The copyright notices in the Software and this entire statement, including // the above license grant, this restriction and the following disclaimer, // must be included in all copies of the Software, in whole or in part, and // all derivative works of the Software, unless such copies or derivative // works are solely in the form of machine-executable object code generated by // a source language processor. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. // #include "Poco/Net/Utility.h" #include "Poco/String.h" #include "Poco/Util/OptionException.h" #include namespace Poco { namespace Net { Context::VerificationMode Utility::convertVerificationMode(const std::string& vMode) { std::string mode = Poco::toLower(vMode); Context::VerificationMode verMode = Context::VERIFY_STRICT; if (mode == "none") verMode = Context::VERIFY_NONE; else if (mode == "relaxed") verMode = Context::VERIFY_RELAXED; else if (mode == "strict") verMode = Context::VERIFY_STRICT; else if (mode == "once") verMode = Context::VERIFY_ONCE; else throw Poco::InvalidArgumentException("Invalid verification mode. Should be relaxed, strict or once but got", vMode); return verMode; } std::string Utility::convertCertificateError(long errCode) { std::string errMsg(X509_verify_cert_error_string(errCode)); return errMsg; } std::string Utility::getLastError() { unsigned long errCode = ERR_get_error(); if (errCode != 0) { char buffer[256]; ERR_error_string_n(errCode, buffer, sizeof(buffer)); return std::string(buffer); } else return "No error"; } void Utility::clearErrorStack() { ERR_clear_error(); } } } // namespace Poco::Net