K-9 Mail – Open Source Email App for Android
Find a file
Joe Steele 21cc3d9176 Remove ClientCertificateRequiredException
With this commit, KeyChainKeyManager no longer throws the exception and
AccountSetupCheckSettings no longer catches it.

It was being thrown when the server requested a client certificate but no
client certificate alias had been configured for the server.

The code was making the incorrect assumption that the server would only
request a client certificate when such a certificate was *required*.
However, servers can be configured to accept multiple forms of
authentication, including both password authentication and client
certificate authentication.  So a server may request a certificate without
requiring it.  If a user has not configured a client certificate, then
that should not be treated as an error because the configuration may be
valid and the server may accept it.

The only indication that a certificate is *required* is when a
SSLProtocolException is thrown, caused by a SSLHandshakeException
resulting from a fatal handshake alert message received from the server.
Unfortunately, such a message is fairly generic and only "indicates that
the sender was unable to negotiate an acceptable set of security
parameters given the options available."  So there is no definitive way to
know that a client certificate is required.

Also, KeyChainKeyManager.getCertificateChain() and getPrivateKey() no
longer throw IllegalStateException().  These methods are permitted to
return null, and such a response is appropriate if the user has deleted
client certificates from the device.  Again, this may or may not cause the
server to abort the connection, depending on whether the server *requires*
a client certificate.
2014-08-11 11:07:44 -04:00
.tx Add Transifex config 2014-01-04 01:52:09 +01:00
assets Recreate app icon from SVG file 2013-11-11 01:09:09 +01:00
compile-only-libs upgrade our android-support library in the hopes that the newer version 2013-07-17 18:36:31 -04:00
docs Added diagram that visualizes activity interactions 2011-10-27 19:13:13 +02:00
gradle/wrapper Use latest Gradle Android plugin and build tools 2014-06-14 03:29:44 +02:00
images Change appearance of unread widget 2013-03-16 01:57:21 +01:00
libs upgraded Mime4J 0.7-SNAPSHOT -> 0.7.2 (fixes MimeMultipart parser bug) 2012-08-15 01:47:57 +02:00
plugins Remove ActionBarSherlock 2014-06-21 17:09:45 +02:00
res Remove ClientCertificateRequiredException 2014-08-11 11:07:44 -04:00
src/com/fsck/k9 Remove ClientCertificateRequiredException 2014-08-11 11:07:44 -04:00
tests Fixes needed after merging in master 2014-07-04 19:23:43 -04:00
tests-on-jvm Fix 'testsOnJVM' Gradle task 2014-06-21 15:33:45 +02:00
tools Add script to fix up the files we pull from Transifex 2014-04-08 18:05:04 +02:00
.gitignore Remove old IntelliJ project files 2014-03-01 05:02:17 +01:00
.gitmodules Kill our use of submodules dead. They're too painful for new contributors 2012-11-24 17:15:01 -05:00
.project Remove ActionBarSherlock 2014-06-21 17:09:45 +02:00
Android.mk Remove ActionBarSherlock 2014-06-21 17:09:45 +02:00
AndroidManifest.xml Bumped manifest to 4.904 2014-04-18 16:55:41 +02:00
build.gradle Remove ActionBarSherlock 2014-06-21 17:09:45 +02:00
build.xml Remove ActionBarSherlock 2014-06-21 17:09:45 +02:00
build_common.xml fixed location of ant-contrib.jar in build_common.xml when running ant from tests/. 2012-06-07 22:57:41 -05:00
gradlew Add Gradle wrapper 2013-11-07 06:48:10 +01:00
gradlew.bat Add Gradle wrapper 2013-11-07 06:48:10 +01:00
HTMLCLEANER_LICENSE Merge ashleywillis' changes in https://github.com/k9mail/k-9/pull/97. 2011-11-14 14:00:15 -08:00
lint.xml Fix more Lint warnings 2014-04-08 21:03:33 +02:00
MODULE_LICENSE_APACHE2
NOTICE
proguard.cfg Remove ActionBarSherlock 2014-06-21 17:09:45 +02:00
project.properties Remove ActionBarSherlock 2014-06-21 17:09:45 +02:00
settings.gradle Remove ActionBarSherlock 2014-06-21 17:09:45 +02:00