/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

interface nsIX509Cert;
interface nsIInterfaceRequestor;

[scriptable, uuid(92396323-23f2-49e0-bf98-a25a725231ab)]
interface nsIUserCertPicker : nsISupports {
  nsIX509Cert pickByUsage(in nsIInterfaceRequestor ctx, 
                          in wstring selectedNickname,
                          in long certUsage, // as defined by NSS enum SECCertUsage
                          in boolean allowInvalid,
                          in boolean allowDuplicateNicknames,
                          in AString emailAddress, // optional - if non-empty,
                                                   // skip certificates which
                                                   // have at least one e-mail
                                                   // address but do not
                                                   // include this specific one
                          out boolean canceled);
};

%{C++
#define NS_CERT_PICKER_CONTRACTID "@mozilla.org/user_cert_picker;1"
%}
