mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-11 20:35:50 +00:00
Added support for client auth dialogs
This commit is contained in:
parent
30235156ce
commit
e090e50d3e
@ -208,12 +208,12 @@ nsNSSDialogs::~nsNSSDialogs()
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMPL_THREADSAFE_ISUPPORTS5(nsNSSDialogs, nsINSSDialogs,
|
||||
NS_IMPL_THREADSAFE_ISUPPORTS6(nsNSSDialogs, nsINSSDialogs,
|
||||
nsITokenPasswordDialogs,
|
||||
nsISecurityWarningDialogs,
|
||||
nsIBadCertListener,
|
||||
nsICertificateDialogs)
|
||||
|
||||
nsICertificateDialogs,
|
||||
nsIClientAuthDialogs)
|
||||
nsresult
|
||||
nsNSSDialogs::Init()
|
||||
{
|
||||
@ -694,6 +694,58 @@ nsNSSDialogs::DownloadCACert(nsIInterfaceRequestor *ctx,
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsNSSDialogs::ChooseCertificate(nsIInterfaceRequestor *ctx, const PRUnichar *cn, const PRUnichar *organization, const PRUnichar *issuer, const PRUnichar **certNickList, PRUint32 count, PRUnichar **certNick, PRBool *canceled)
|
||||
{
|
||||
nsresult rv;
|
||||
int i;
|
||||
|
||||
*canceled = PR_FALSE;
|
||||
|
||||
// Get the parent window for the dialog
|
||||
nsCOMPtr<nsIDOMWindowInternal> parent = do_GetInterface(ctx);
|
||||
|
||||
nsCOMPtr<nsIDialogParamBlock> block = do_CreateInstance(kDialogParamBlockCID);
|
||||
if (!block) return NS_ERROR_FAILURE;
|
||||
|
||||
// void ChangePassword(in wstring tokenName, out int status);
|
||||
rv = block->SetString(1, cn);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
// void ChangePassword(in wstring tokenName, out int status);
|
||||
rv = block->SetString(2, organization);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
// void ChangePassword(in wstring tokenName, out int status);
|
||||
rv = block->SetString(3, issuer);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
rv = block->SetString(i+4, certNickList[i]);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
}
|
||||
|
||||
rv = block->SetInt(1, count);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = nsNSSDialogHelper::openDialog(nsnull,
|
||||
"chrome://pippki/content/clientauthask.xul",
|
||||
block);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
PRInt32 status;
|
||||
|
||||
rv = block->GetInt(1, &status);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
*canceled = (status == 0)?PR_TRUE:PR_FALSE;
|
||||
if (!*canceled) {
|
||||
// retrieve the nickname
|
||||
rv = block->GetString(1, certNick);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
/*
|
||||
* void setPKCS12FilePassword(in nsIInterfaceRequestor ctx,
|
||||
* out wstring password,
|
||||
|
@ -40,7 +40,8 @@ class nsNSSDialogs
|
||||
public nsITokenPasswordDialogs,
|
||||
public nsIBadCertListener,
|
||||
public nsISecurityWarningDialogs,
|
||||
public nsICertificateDialogs
|
||||
public nsICertificateDialogs,
|
||||
public nsIClientAuthDialogs
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
@ -49,7 +50,7 @@ public:
|
||||
NS_DECL_NSIBADCERTLISTENER
|
||||
NS_DECL_NSISECURITYWARNINGDIALOGS
|
||||
NS_DECL_NSICERTIFICATEDIALOGS
|
||||
|
||||
NS_DECL_NSICLIENTAUTHDIALOGS
|
||||
nsNSSDialogs();
|
||||
virtual ~nsNSSDialogs();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user