From 38cd6bd401f776b6563db4d0362fec417f3aae4d Mon Sep 17 00:00:00 2001 From: Florian Zeitz Date: Wed, 25 Jan 2012 16:42:23 +0100 Subject: [PATCH] Allow initializing with private key and certificate --- src/SSLSocket.h | 3 +++ src/SSLSocket.m | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/SSLSocket.h b/src/SSLSocket.h index 82659be..4c82b72 100644 --- a/src/SSLSocket.h +++ b/src/SSLSocket.h @@ -39,6 +39,9 @@ #endif - initWithSocket: (OFTCPSocket*)socket; +- initWithSocket: (OFTCPSocket*)socket + privateKeyFile: (OFString*)privateKeyFile + certificateFile: (OFString*)certificateFile; /* Change the return type */ - (SSLSocket*)accept; - (void)setPrivateKeyFile: (OFString*)file; diff --git a/src/SSLSocket.m b/src/SSLSocket.m index 8d2c31a..d09f52b 100644 --- a/src/SSLSocket.m +++ b/src/SSLSocket.m @@ -105,10 +105,22 @@ ssl_locking_callback(int mode, int n, const char *file, int line) } - initWithSocket: (OFTCPSocket*)socket +{ + return [self initWithSocket: socket + privateKeyFile: nil + certificateFile: nil]; +} + +- initWithSocket: (OFTCPSocket*)socket + privateKeyFile: (OFString*)privateKeyFile_ + certificateFile: (OFString*)certificateFile_ { self = [self init]; @try { + privateKeyFile = privateKeyFile_; + certificateFile = certificateFile_; + sock = dup(socket->sock); if ((ssl = SSL_new(ctx)) == NULL || !SSL_set_fd(ssl, sock)) {