diff options
Diffstat (limited to 'Swiften/TLS/OpenSSL/OpenSSLContext.cpp')
| -rw-r--r-- | Swiften/TLS/OpenSSL/OpenSSLContext.cpp | 40 | 
1 files changed, 20 insertions, 20 deletions
diff --git a/Swiften/TLS/OpenSSL/OpenSSLContext.cpp b/Swiften/TLS/OpenSSL/OpenSSLContext.cpp index 378b6aa..220e7f9 100644 --- a/Swiften/TLS/OpenSSL/OpenSSLContext.cpp +++ b/Swiften/TLS/OpenSSL/OpenSSLContext.cpp @@ -3,7 +3,7 @@   * Licensed under the GNU General Public License v3.   * See Documentation/Licenses/GPLv3.txt for more information.   */ -#include "Swiften/Base/Platform.h" +#include <Swiften/Base/Platform.h>  #ifdef SWIFTEN_PLATFORM_WINDOWS  #include <windows.h> @@ -13,14 +13,15 @@  #include <vector>  #include <openssl/err.h>  #include <openssl/pkcs12.h> +#include <boost/smart_ptr/make_shared.hpp>  #if defined(SWIFTEN_PLATFORM_MACOSX) && OPENSSL_VERSION_NUMBER < 0x00908000  #include <Security/Security.h>  #endif -#include "Swiften/TLS/OpenSSL/OpenSSLContext.h" -#include "Swiften/TLS/OpenSSL/OpenSSLCertificate.h" -#include "Swiften/TLS/PKCS12Certificate.h" +#include <Swiften/TLS/OpenSSL/OpenSSLContext.h> +#include <Swiften/TLS/OpenSSL/OpenSSLCertificate.h> +#include <Swiften/TLS/PKCS12Certificate.h>  #pragma GCC diagnostic ignored "-Wold-style-cast" @@ -48,8 +49,7 @@ OpenSSLContext::OpenSSLContext() : state_(Start), context_(0), handle_(0), readB  			if (!certContext) {  				break;  			} -			ByteArray certData(certContext->pbCertEncoded, certContext->cbCertEncoded); -			OpenSSLCertificate cert(certData); +			OpenSSLCertificate cert(createByteArray(certContext->pbCertEncoded, certContext->cbCertEncoded));  			if (store && cert.getInternalX509()) {  				X509_STORE_add_cert(store, cert.getInternalX509().get());  			} @@ -138,15 +138,15 @@ void OpenSSLContext::doConnect() {  void OpenSSLContext::sendPendingDataToNetwork() {  	int size = BIO_pending(writeBIO_);  	if (size > 0) { -		ByteArray data; +		SafeByteArray data;  		data.resize(size); -		BIO_read(writeBIO_, data.getData(), size); +		BIO_read(writeBIO_, vecptr(data), size);  		onDataForNetwork(data);  	}  } -void OpenSSLContext::handleDataFromNetwork(const ByteArray& data) { -	BIO_write(readBIO_, data.getData(), data.getSize()); +void OpenSSLContext::handleDataFromNetwork(const SafeByteArray& data) { +	BIO_write(readBIO_, vecptr(data), data.size());  	switch (state_) {  		case Connecting:  			doConnect(); @@ -159,8 +159,8 @@ void OpenSSLContext::handleDataFromNetwork(const ByteArray& data) {  	}  } -void OpenSSLContext::handleDataFromApplication(const ByteArray& data) { -	if (SSL_write(handle_, data.getData(), data.getSize()) >= 0) { +void OpenSSLContext::handleDataFromApplication(const SafeByteArray& data) { +	if (SSL_write(handle_, vecptr(data), data.size()) >= 0) {  		sendPendingDataToNetwork();  	}  	else { @@ -170,14 +170,14 @@ void OpenSSLContext::handleDataFromApplication(const ByteArray& data) {  }  void OpenSSLContext::sendPendingDataToApplication() { -	ByteArray data; +	SafeByteArray data;  	data.resize(SSL_READ_BUFFERSIZE); -	int ret = SSL_read(handle_, data.getData(), data.getSize()); +	int ret = SSL_read(handle_, vecptr(data), data.size());  	while (ret > 0) {  		data.resize(ret);  		onDataForApplication(data);  		data.resize(SSL_READ_BUFFERSIZE); -		ret = SSL_read(handle_, data.getData(), data.getSize()); +		ret = SSL_read(handle_, vecptr(data), data.size());  	}  	if (ret < 0 && SSL_get_error(handle_, ret) != SSL_ERROR_WANT_READ) {  		state_ = Error; @@ -192,7 +192,7 @@ bool OpenSSLContext::setClientCertificate(const PKCS12Certificate& certificate)  	// Create a PKCS12 structure  	BIO* bio = BIO_new(BIO_s_mem()); -	BIO_write(bio, certificate.getData().getData(), certificate.getData().getSize()); +	BIO_write(bio, vecptr(certificate.getData()), certificate.getData().size());  	boost::shared_ptr<PKCS12> pkcs12(d2i_PKCS12_bio(bio, NULL), PKCS12_free);  	BIO_free(bio);  	if (!pkcs12) { @@ -203,7 +203,7 @@ bool OpenSSLContext::setClientCertificate(const PKCS12Certificate& certificate)  	X509 *certPtr = 0;  	EVP_PKEY* privateKeyPtr = 0;  	STACK_OF(X509)* caCertsPtr = 0; -	int result = PKCS12_parse(pkcs12.get(), certificate.getPassword().c_str(), &privateKeyPtr, &certPtr, &caCertsPtr); +	int result = PKCS12_parse(pkcs12.get(), reinterpret_cast<const char*>(vecptr(certificate.getPassword())), &privateKeyPtr, &certPtr, &caCertsPtr);  	if (result != 1) {   		return false;  	} @@ -227,7 +227,7 @@ bool OpenSSLContext::setClientCertificate(const PKCS12Certificate& certificate)  Certificate::ref OpenSSLContext::getPeerCertificate() const {  	boost::shared_ptr<X509> x509Cert(SSL_get_peer_certificate(handle_), X509_free);  	if (x509Cert) { -		return Certificate::ref(new OpenSSLCertificate(x509Cert)); +		return boost::make_shared<OpenSSLCertificate>(x509Cert);  	}  	else {  		return Certificate::ref(); @@ -237,7 +237,7 @@ Certificate::ref OpenSSLContext::getPeerCertificate() const {  boost::shared_ptr<CertificateVerificationError> OpenSSLContext::getPeerCertificateVerificationError() const {  	int verifyResult = SSL_get_verify_result(handle_);  	if (verifyResult != X509_V_OK) { -		return boost::shared_ptr<CertificateVerificationError>(new CertificateVerificationError(getVerificationErrorTypeForResult(verifyResult))); +		return boost::make_shared<CertificateVerificationError>(getVerificationErrorTypeForResult(verifyResult));  	}  	else {  		return boost::shared_ptr<CertificateVerificationError>(); @@ -247,7 +247,7 @@ boost::shared_ptr<CertificateVerificationError> OpenSSLContext::getPeerCertifica  ByteArray OpenSSLContext::getFinishMessage() const {  	ByteArray data;  	data.resize(MAX_FINISHED_SIZE); -	size_t size = SSL_get_finished(handle_, data.getData(), data.getSize()); +	size_t size = SSL_get_finished(handle_, vecptr(data), data.size());  	data.resize(size);  	return data;  }  | 
 Swift