  net/socket/ssl_client_socket.h                |   4 +
  net/socket/ssl_client_socket_impl.cc          | 100 ++++++++++++++++++
  net/spdy/spdy_session.cc                      |  15 +++
- net/ssl/client_cert_store_mac.cc              |  80 ++++++++++++++
- net/ssl/client_cert_store_nss.cc              |  31 ++++++
+ net/ssl/client_cert_store_mac.cc              |  82 ++++++++++++++
+ net/ssl/client_cert_store_nss.cc              |  36 +++++++
  net/ssl/openssl_ssl_util.cc                   |   4 +
  net/ssl/ssl_cipher_suite_names.cc             |  36 +++++++
  net/ssl/ssl_platform_key_util.cc              |  21 ++++

+                    for( int i = 0; i < count; i++ )
+                        if( responseFlags & CFUserNotificationCheckBoxChecked( i ) )
+                        {
+                            ScopedCFTypeRef<SecIdentityRef> sec_identity;
+                            scoped_refptr<X509Certificate> cert( X509Certificate::CreateFromBytes( certs[i], lens[i] ) );
+                            selected_identities.push_back( std::make_unique<ClientCertIdentityMac>( cert, std::move( sec_identity ) ) );
+                            break;
+                        }

+                selected_identities.clear();
+                for( int i = 0; i < count; i++ )
+                {
+                    scoped_refptr<X509Certificate> cert = X509Certificate::CreateFromBytes( certs[i], lens[i] );
+                    if( !cert.get() )
+                        continue;
+                    ScopedCERTCertificate nss_cert = x509_util::CreateCERTCertificateFromBytes( (uint8_t *)certs[i], lens[i] );
+                    if( !nss_cert.get() )
+                        continue;
+                    selected_identities.push_back( std::make_unique<ClientCertIdentityNSS>( cert, x509_util::DupCERTCertificate( nss_cert.get() ), password_delegate ) );
+                }
+                std::sort( selected_identities.begin(), selected_identities.end(), ClientCertIdentitySorter() );
+            }
+        }
+    }
