KeyChainKeyManager modifications
KeyChainKeyManager modifications

The constructor now saves the certificate chain, so the code to retrieve
it again or to perform any additional error checking in
getCertificateChain() is no longer needed.

The constructor now retrieves and saves the private key so that any
resulting errors are detected sooner.

Methods that retrieve the alias perform checks to assure that the client
cert. satisfies the requested issuers and key type.  It's known that
Sendmail may provide a list of issuers in its certificate request, but
then may authenticate against a much larger set of CAs, but then later
reject the mail because the client certificate was not acceptable.
Vetting against the issuer list helps detect such certificate problems
sooner (upon connection) rather than later (upon transmission of mail).
Earlier error detection is necessary so that errors may be presented to
the user during account setup.

Portions of these modifications are based on code from KeyManagerImpl:
https://android.googlesource.com/platform/external/conscrypt/+/master/src/main/java/org/conscrypt/KeyManagerImpl.java

huhu/k-9,torte71/k-9,mawiegand/k-9,k9mail/k-9,vt0r/k-9,cliniome/pki,roscrazy/k-9,suzp1984/k-9,cooperpellaton/k-9,ndew623/k-9,439teamwork/k-9,rollbrettler/k-9,msdgwzhy6/k-9,KitAway/k-9,jca02266/k-9,cooperpellaton/k-9,Eagles2F/k-9,deepworks/k-9,bashrc/k-9,sonork/k-9,gilbertw1/k-9,vatsalsura/k-9,Eagles2F/k-9,philipwhiuk/q-mail,ndew623/k-9,439teamwork/k-9,cketti/k-9,rishabhbitsg/k-9,icedman21/k-9,rollbrettler/k-9,herpiko/k-9,sebkur/k-9,XiveZ/k-9,sanderbaas/k-9,github201407/k-9,crr0004/k-9,jca02266/k-9,Valodim/k-9,konfer/k-9,dhootha/k-9,tsunli/k-9,gaionim/k-9,WenduanMou1/k-9,tonytamsf/k-9,jberkel/k-9,msdgwzhy6/k-9,herpiko/k-9,thuanpq/k-9,denim2x/k-9,philipwhiuk/k-9,philipwhiuk/q-mail,cketti/k-9,github201407/k-9,sebkur/k-9,nilsbraden/k-9,cliniome/pki,dgger/k-9,farmboy0/k-9,dgger/k-9,mawiegand/k-9,tsunli/k-9,sedrubal/k-9,G00fY2/k-9_material_design,gaionim/k-9,nilsbraden/k-9,deepworks/k-9,rollbrettler/k-9,indus1/k-9,vasyl-khomko/k-9,KitAway/k-9,denim2x/k-9,gnebsy/k-9,philipwhiuk/k-9,farmboy0/k-9,dhootha/k-9,icedman21/k-9,sanderbaas/k-9,gnebsy/k-9,crr0004/k-9,vatsalsura/k-9,bashrc/k-9,suzp1984/k-9,CodingRmy/k-9,nilsbraden/k-9,torte71/k-9,vasyl-khomko/k-9,huhu/k-9,moparisthebest/k-9,tonytamsf/k-9,suzp1984/k-9,leixinstar/k-9,icedman21/k-9,mawiegand/k-9,439teamwork/k-9,dgger/k-9,moparisthebest/k-9,sedrubal/k-9,github201407/k-9,CodingRmy/k-9,GuillaumeSmaha/k-9,ndew623/k-9,tsunli/k-9,konfer/k-9,thuanpq/k-9,rishabhbitsg/k-9,huhu/k-9,leixinstar/k-9,leixinstar/k-9,WenduanMou1/k-9,XiveZ/k-9,dpereira411/k-9,k9mail/k-9,cketti/k-9,roscrazy/k-9,philipwhiuk/q-mail,Eagles2F/k-9,tonytamsf/k-9,gilbertw1/k-9,gnebsy/k-9,WenduanMou1/k-9,gilbertw1/k-9,cketti/k-9,sonork/k-9,konfer/k-9,KitAway/k-9,crr0004/k-9,vt0r/k-9,GuillaumeSmaha/k-9,vasyl-khomko/k-9,G00fY2/k-9_material_design,cooperpellaton/k-9,jca02266/k-9,torte71/k-9,dhootha/k-9,k9mail/k-9,sonork/k-9,moparisthebest/k-9,deepworks/k-9,gaionim/k-9,cliniome/pki,XiveZ/k-9,denim2x/k-9,indus1/k-9,GuillaumeSmaha/k-9,farmboy0/k-9,sebkur/k-9,msdgwzhy6/k-9,herpiko/k-9,bashrc/k-9,dpereira411/k-9,dpereira411/k-9,jberkel/k-9,sanderbaas/k-9,thuanpq/k-9