summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/TLS')
-rw-r--r--Swiften/TLS/OpenSSL/OpenSSLContextFactory.cpp10
-rw-r--r--Swiften/TLS/OpenSSL/OpenSSLContextFactory.h3
-rw-r--r--Swiften/TLS/Schannel/SchannelContext.cpp10
-rw-r--r--Swiften/TLS/Schannel/SchannelContext.h5
-rw-r--r--Swiften/TLS/Schannel/SchannelContextFactory.cpp6
-rw-r--r--Swiften/TLS/Schannel/SchannelContextFactory.h3
-rw-r--r--Swiften/TLS/TLSContextFactory.h1
7 files changed, 31 insertions, 7 deletions
diff --git a/Swiften/TLS/OpenSSL/OpenSSLContextFactory.cpp b/Swiften/TLS/OpenSSL/OpenSSLContextFactory.cpp
index 50f6731..4981170 100644
--- a/Swiften/TLS/OpenSSL/OpenSSLContextFactory.cpp
+++ b/Swiften/TLS/OpenSSL/OpenSSLContextFactory.cpp
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (c) 2010 Isode Limited. 2 * Copyright (c) 2010-2015 Isode Limited.
3 * All rights reserved. 3 * All rights reserved.
4 * See the COPYING file for more information. 4 * See the COPYING file for more information.
5 */ 5 */
@@ -20,8 +20,14 @@ TLSContext* OpenSSLContextFactory::createTLSContext(const TLSOptions&) {
20 20
21void OpenSSLContextFactory::setCheckCertificateRevocation(bool check) { 21void OpenSSLContextFactory::setCheckCertificateRevocation(bool check) {
22 if (check) { 22 if (check) {
23 assert(false);
24 SWIFT_LOG(warning) << "CRL Checking not supported for OpenSSL" << std::endl; 23 SWIFT_LOG(warning) << "CRL Checking not supported for OpenSSL" << std::endl;
24 assert(false);
25 }
26}
27
28void OpenSSLContextFactory::setDisconnectOnCardRemoval(bool check) {
29 if (check) {
30 SWIFT_LOG(warning) << "Smart cards not supported for OpenSSL" << std::endl;
25 } 31 }
26} 32}
27 33
diff --git a/Swiften/TLS/OpenSSL/OpenSSLContextFactory.h b/Swiften/TLS/OpenSSL/OpenSSLContextFactory.h
index bf7f08a..89033ad 100644
--- a/Swiften/TLS/OpenSSL/OpenSSLContextFactory.h
+++ b/Swiften/TLS/OpenSSL/OpenSSLContextFactory.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (c) 2010 Isode Limited. 2 * Copyright (c) 2010-2015 Isode Limited.
3 * All rights reserved. 3 * All rights reserved.
4 * See the COPYING file for more information. 4 * See the COPYING file for more information.
5 */ 5 */
@@ -18,5 +18,6 @@ namespace Swift {
18 18
19 // Not supported 19 // Not supported
20 virtual void setCheckCertificateRevocation(bool b); 20 virtual void setCheckCertificateRevocation(bool b);
21 virtual void setDisconnectOnCardRemoval(bool b);
21 }; 22 };
22} 23}
diff --git a/Swiften/TLS/Schannel/SchannelContext.cpp b/Swiften/TLS/Schannel/SchannelContext.cpp
index 5f230ec..70ff7dd 100644
--- a/Swiften/TLS/Schannel/SchannelContext.cpp
+++ b/Swiften/TLS/Schannel/SchannelContext.cpp
@@ -21,7 +21,7 @@ namespace Swift {
21 21
22//------------------------------------------------------------------------ 22//------------------------------------------------------------------------
23 23
24SchannelContext::SchannelContext(bool tls1_0Workaround) : state_(Start), secContext_(0), myCertStore_(NULL), certStoreName_("MY"), certName_(), smartCardReader_(), checkCertificateRevocation_(true), tls1_0Workaround_(tls1_0Workaround) { 24SchannelContext::SchannelContext(bool tls1_0Workaround) : state_(Start), secContext_(0), myCertStore_(NULL), certStoreName_("MY"), certName_(), smartCardReader_(), checkCertificateRevocation_(true), tls1_0Workaround_(tls1_0Workaround), disconnectOnCardRemoval_(true) {
25 contextFlags_ = ISC_REQ_ALLOCATE_MEMORY | 25 contextFlags_ = ISC_REQ_ALLOCATE_MEMORY |
26 ISC_REQ_CONFIDENTIALITY | 26 ISC_REQ_CONFIDENTIALITY |
27 ISC_REQ_EXTENDED_ERROR | 27 ISC_REQ_EXTENDED_ERROR |
@@ -625,7 +625,9 @@ bool SchannelContext::setClientCertificate(CertificateWithKey::ref certificate)
625 625
626//------------------------------------------------------------------------ 626//------------------------------------------------------------------------
627void SchannelContext::handleCertificateCardRemoved() { 627void SchannelContext::handleCertificateCardRemoved() {
628 indicateError(boost::make_shared<TLSError>(TLSError::CertificateCardRemoved)); 628 if (disconnectOnCardRemoval_) {
629 indicateError(boost::make_shared<TLSError>(TLSError::CertificateCardRemoved));
630 }
629} 631}
630 632
631//------------------------------------------------------------------------ 633//------------------------------------------------------------------------
@@ -680,5 +682,9 @@ void SchannelContext::setCheckCertificateRevocation(bool b) {
680 checkCertificateRevocation_ = b; 682 checkCertificateRevocation_ = b;
681} 683}
682 684
685void SchannelContext::setDisconnectOnCardRemoval(bool b) {
686 disconnectOnCardRemoval_ = b;
687}
688
683 689
684} 690}
diff --git a/Swiften/TLS/Schannel/SchannelContext.h b/Swiften/TLS/Schannel/SchannelContext.h
index 19cc473..36a3f0c 100644
--- a/Swiften/TLS/Schannel/SchannelContext.h
+++ b/Swiften/TLS/Schannel/SchannelContext.h
@@ -5,7 +5,7 @@
5 */ 5 */
6 6
7/* 7/*
8 * Copyright (c) 2012 Isode Limited. 8 * Copyright (c) 2012-2015 Isode Limited.
9 * All rights reserved. 9 * All rights reserved.
10 * See the COPYING file for more information. 10 * See the COPYING file for more information.
11 */ 11 */
@@ -57,6 +57,8 @@ namespace Swift
57 57
58 virtual void setCheckCertificateRevocation(bool b); 58 virtual void setCheckCertificateRevocation(bool b);
59 59
60 virtual void setDisconnectOnCardRemoval(bool b);
61
60 private: 62 private:
61 void determineStreamSizes(); 63 void determineStreamSizes();
62 void continueHandshake(const SafeByteArray& data); 64 void continueHandshake(const SafeByteArray& data);
@@ -105,5 +107,6 @@ namespace Swift
105 boost::shared_ptr<CAPICertificate> userCertificate_; 107 boost::shared_ptr<CAPICertificate> userCertificate_;
106 bool checkCertificateRevocation_; 108 bool checkCertificateRevocation_;
107 bool tls1_0Workaround_; 109 bool tls1_0Workaround_;
110 bool disconnectOnCardRemoval_;
108 }; 111 };
109} 112}
diff --git a/Swiften/TLS/Schannel/SchannelContextFactory.cpp b/Swiften/TLS/Schannel/SchannelContextFactory.cpp
index 6e83b0d..c2587c5 100644
--- a/Swiften/TLS/Schannel/SchannelContextFactory.cpp
+++ b/Swiften/TLS/Schannel/SchannelContextFactory.cpp
@@ -15,7 +15,7 @@
15 15
16namespace Swift { 16namespace Swift {
17 17
18SchannelContextFactory::SchannelContextFactory() : checkCertificateRevocation(true) { 18SchannelContextFactory::SchannelContextFactory() : checkCertificateRevocation(true), disconnectOnCardRemoval(true) {
19} 19}
20 20
21bool SchannelContextFactory::canCreate() const { 21bool SchannelContextFactory::canCreate() const {
@@ -25,6 +25,7 @@ bool SchannelContextFactory::canCreate() const {
25TLSContext* SchannelContextFactory::createTLSContext(const TLSOptions& tlsOptions) { 25TLSContext* SchannelContextFactory::createTLSContext(const TLSOptions& tlsOptions) {
26 SchannelContext* context = new SchannelContext(tlsOptions.schannelTLS1_0Workaround); 26 SchannelContext* context = new SchannelContext(tlsOptions.schannelTLS1_0Workaround);
27 context->setCheckCertificateRevocation(checkCertificateRevocation); 27 context->setCheckCertificateRevocation(checkCertificateRevocation);
28 context->setDisconnectOnCardRemoval(disconnectOnCardRemoval);
28 return context; 29 return context;
29} 30}
30 31
@@ -32,5 +33,8 @@ void SchannelContextFactory::setCheckCertificateRevocation(bool b) {
32 checkCertificateRevocation = b; 33 checkCertificateRevocation = b;
33} 34}
34 35
36void SchannelContextFactory::setDisconnectOnCardRemoval(bool b) {
37 disconnectOnCardRemoval = b;
38}
35 39
36} 40}
diff --git a/Swiften/TLS/Schannel/SchannelContextFactory.h b/Swiften/TLS/Schannel/SchannelContextFactory.h
index 789d15f..27b7dc9 100644
--- a/Swiften/TLS/Schannel/SchannelContextFactory.h
+++ b/Swiften/TLS/Schannel/SchannelContextFactory.h
@@ -24,7 +24,10 @@ namespace Swift {
24 24
25 virtual void setCheckCertificateRevocation(bool b); 25 virtual void setCheckCertificateRevocation(bool b);
26 26
27 virtual void setDisconnectOnCardRemoval(bool b);
28
27 public: 29 public:
28 bool checkCertificateRevocation; 30 bool checkCertificateRevocation;
31 bool disconnectOnCardRemoval;
29 }; 32 };
30} 33}
diff --git a/Swiften/TLS/TLSContextFactory.h b/Swiften/TLS/TLSContextFactory.h
index 90da4a1..b67c34f 100644
--- a/Swiften/TLS/TLSContextFactory.h
+++ b/Swiften/TLS/TLSContextFactory.h
@@ -20,5 +20,6 @@ namespace Swift {
20 20
21 virtual TLSContext* createTLSContext(const TLSOptions& tlsOptions) = 0; 21 virtual TLSContext* createTLSContext(const TLSOptions& tlsOptions) = 0;
22 virtual void setCheckCertificateRevocation(bool b) = 0; 22 virtual void setCheckCertificateRevocation(bool b) = 0;
23 virtual void setDisconnectOnCardRemoval(bool b) = 0;
23 }; 24 };
24} 25}