15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_SSL_SSL_CLIENT_CERTIFICATE_SELECTOR_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_SSL_SSL_CLIENT_CERTIFICATE_SELECTOR_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/callback_forward.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebContents;
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class HttpNetworkSession;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SSLCertRequestInfo;
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class X509Certificate;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chrome {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef base::Callback<void(net::X509Certificate*)> SelectCertificateCallback;
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Opens a constrained SSL client certificate selection dialog under |parent|,
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// offering certificates from |cert_request_info|. When the user has made a
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// selection, the dialog will report back to |callback|. |callback| is notified
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// when the dialog closes in call cases; if the user cancels the dialog, we call
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// with a NULL certificate.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ShowSSLClientCertificateSelector(
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    content::WebContents* contents,
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const net::HttpNetworkSession* network_session,
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    net::SSLCertRequestInfo* cert_request_info,
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const SelectCertificateCallback& callback);
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace chrome
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_SSL_SSL_CLIENT_CERTIFICATE_SELECTOR_H_
38