Added support for client auth dialogs

This commit is contained in:
ddrinan%netscape.com 2001-04-03 01:06:17 +00:00
parent 30235156ce
commit e090e50d3e
2 changed files with 58 additions and 5 deletions

View File

@ -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,

View File

@ -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();