windows-nt/Source/XPSP1/NT/ds/security/services/ca/certweb/certcarc.asp
2020-09-26 16:20:57 +08:00

570 lines
22 KiB
Plaintext

<%@ CODEPAGE=65001 'UTF-8%>
<%' certcarc.asp - (CERT)srv web - install (CA) (R)oot (C)ertificate
' Copyright (C) Microsoft Corporation, 1998 - 1999 %>
<!-- #include FILE=certsbrt.inc -->
<!-- #include FILE=certdat.inc -->
<%
On Error Resume Next
' from \nt\public\sdk\inc\certcli.h
Const CR_OUT_BASE64HEADER=&H00000000
Const CR_OUT_BASE64 =&H00000001
Const CR_OUT_BINARY =&H00000002
Const CR_OUT_CHAIN =&H00000100
Const CATYPE_ENTERPRISE_ROOTCA=0
Const CATYPE_ENTERPRISE_SUBCA=1
Const CATYPE_STANDALONE_ROOTCA=3
Const CATYPE_STANDALONE_SUBCA=4
Const CATYPE_UNKNOWN_CA=5
' from \nt\private\ca\include\certlib.h
Const GETCERT_CAEXCHCERT=True
Const GETCERT_CASIGCERT=False
Const CR_GEMT_HRESULT_STRING =&H00000001
Const CR_PROP_CASIGCERTCOUNT=11
Const CR_PROP_CASIGCERTCHAIN=13
Const CR_PROP_CACERTSTATE=19
Const CR_PROP_CRLSTATE=20
Const PROPTYPE_LONG=1
Const PROPTYPE_BINARY=3
Const CRL_AVAILABLE=3 ' == CR_DISP_ISSUED
Const CERT_VALID=3 ' == CR_DISP_ISSUED
' Strings To Be Localized
Const L_InstallThisCACert_Message="Install this CA certificate"
Const L_InstallThisCACertChain_Message="Install this CA certificate chain"
Const L_InstallCACert_Message="Install CA certificate"
Const L_DownloadCert_Message="Download CA certificate"
Const L_DownloadChain_Message="Download CA certificate chain"
Const L_DownloadBaseCrl_Message="Download latest base CRL"
Const L_DownloadDeltaCrl_Message="Download latest delta CRL"
Dim sCaInfo, rgCaInfo, nRenewals, rgCrlState, rgCertState, bFailed, nError
Set ICertRequest=Server.CreateObject("CertificateAuthority.Request")
' get the number of renewals
bFailed=False
nRenewals=ICertRequest.GetCAProperty(sServerConfig, CR_PROP_CASIGCERTCOUNT, 0, PROPTYPE_LONG, CR_OUT_BINARY)
If 0=Err.Number Then
nRenewals=nRenewals-1
' get the key-reused state of the CRLs and the validity of the CA Certs
ReDim rgCrlState(nRenewals) ' 0 based size
ReDim rgCertState(nRenewals) ' 0 based size
For nIndex=0 To nRenewals
rgCrlState(nIndex)=ICertRequest.GetCAProperty(sServerConfig, CR_PROP_CRLSTATE, nIndex, PROPTYPE_LONG, CR_OUT_BINARY)
rgCertState(nIndex)=ICertRequest.GetCAProperty(sServerConfig, CR_PROP_CACERTSTATE, nIndex, PROPTYPE_LONG, CR_OUT_BINARY)
Next
' get the cert chain and save in on this page so the client can install it
If "IE"=sBrowser Then
Public sPKCS7
Dim sCertificate
sCertificate=ICertRequest.GetCACertificate(GETCERT_CASIGCERT, sServerConfig, CR_OUT_BASE64_HEADER Or CR_OUT_CHAIN)
sPKCS7=FormatBigString(sCertificate, " sPKCS7=sPKCS7 & ")
End If
End If
If Err.Number<>0 Then
' CA may be down.
bFailed=True
nError=Err.Number
End If
'-----------------------------------------------------------------
' Format the big string as a concatenated VB string, breaking at the embedded newlines
Function FormatBigString(sSource, sLinePrefix)
Dim sResult, bCharsLeft, nStartChar, nStopChar, chQuote
sResult=""
chQuote=chr(34)
bCharsLeft=True
nStopChar=1
While (bCharsLeft)
nStartChar=nStopChar
nStopChar=InStr(nStopChar, sSource, vbNewLine)
If (nStopChar>0) Then
sResult=sResult & sLinePrefix & chQuote & Mid(sSource, nStartChar, nStopChar-nStartChar) & chQuote & " & vbNewLine"
If (nStopChar>=Len(sSource)-Len(vbNewLine)) Then
bCharsLeft=False
End If
Else
bCharsLeft=False
End if
sResult=sResult & vbNewLine
nStopChar=nStopChar+Len(vbNewLine)
Wend
FormatBigString=sResult
End Function
'-----------------------------------------------------------------
' Walk through the CRL validity list and return the nearest valid CRL
Function GetGoodCrlIndex(nIndex)
Dim nSource
nSource=nRenewals-nIndex
While (nSource>0 And CRL_AVAILABLE<>CInt(rgCrlState(nSource)))
nSource=nSource-1
Wend
GetGoodCrlIndex=nSource
End Function
%>
<HTML>
<Head>
<Meta HTTP-Equiv="Content-Type" Content="text/html; charset=UTF-8">
<Title>Microsoft Certificate Services</Title>
</Head>
<Body BgColor=#FFFFFF Link=#0000FF VLink=#0000FF ALink=#0000FF><Font ID=locPageFont Face="Arial">
<Table Border=0 CellSpacing=0 CellPadding=4 Width=100% BgColor=#008080>
<TR>
<TD><Font Color=#FFFFFF><LocID ID=locMSCertSrv><Font Face="Arial" Size=-1><B><I>Microsoft</I></B> Certificate Services &nbsp;--&nbsp; <%=sServerDisplayName%> &nbsp;</Font></LocID></Font></TD>
<TD ID=locHomeAlign Align=Right><A Href="/certsrv"><Font Color=#FFFFFF><LocID ID=locHomeLink><Font Face="Arial" Size=-1><B>Home</B></Font></LocID></Font></A></TD>
</TR>
</Table>
<%If True=bFailed Then %>
<P ID=locPageTitle1><Font Color=#FF0000><B>Error</B></Font>
<!-- Green HR --><Table Border=0 CellSpacing=0 CellPadding=0 Width=100%><TR><TD BgColor=#008080><Img Src="certspc.gif" Alt="" Height=2 Width=1></TD></TR></Table>
<P ID=locErrorMsg> An unexpected error has occurred:
<%If nError=&H800706BA Or nError=&H80070005 Then%>
<LocID ID=locSvcNotStarted>The Certification Authority Service has not been started.</LocID>
<%Else%>
<%=ICertRequest.GetErrorMessageText(nError, CR_GEMT_HRESULT_STRING)%>
<%End If%>
<%Else 'True<>bFailed%>
<Form Name=UIForm>
<P ID=locPageTitle2> <B> Download a CA Certificate, Certificate Chain, or CRL</B>
<!-- Green HR --><Table Border=0 CellSpacing=0 CellPadding=0 Width=100%><TR><TD BgColor=#008080><Img Src="certspc.gif" Alt="" Height=2 Width=1></TD></TR></Table>
<P>
<%If "IE"=sBrowser Then%>
<LocID ID=locInstallIE>
To trust certificates issued from this certification authority,
<Span tabindex=0 Style="cursor:hand; color:#0000FF; text-decoration:underline;"
OnContextMenu="return false;"
OnMouseOver="window.status='<%=L_InstallThisCACertChain_Message%>';return true;"
OnMouseOut="window.status='';return true;"
OnKeyDown="if (13==event.keyCode) {preInstall();return false;} else if (9==event.keyCode) {return true;};return false;"
OnClick="preInstall();return false;"
>install this CA certificate chain</Span>.
</LocID>
<%ElseIf "NN"=sBrowser Then%>
<LocID ID=locInstallNN>
To trust certificates issued from this certification authority,
<A Href="certnew.cer?ReqID=CACert&amp;Renewal=<%=nRenewals%>&amp;Mode=inst&amp;Enc=b64"
OnMouseOver="window.status='<%=L_InstallThisCACert_Message%>';return true;"
OnMouseOut="window.status='';return true;"
>install this CA certificate</A>.
</LocID>
<%Else%>
<LocID ID=locInstallTxt>
To trust certificates issued from this certification authority, install this CA certificate chain.
</LocID>
<%End If%>
<P>
<LocID ID=locPrompt>To download a CA certificate, certificate chain, or CRL, select the certificate and encoding method.</B></LocID>
<%If "Text"<>sBrowser Then%>
<Table Border=0 CellSpacing=0 CellPadding=0>
<TR> <!--establish column widths. -->
<TD><Img Src="certspc.gif" Alt="" Height=1 Width=<%=L_LabelColWidth_Number%>></TD> <!-- label column, top border -->
<TD RowSpan=59><Img Src="certspc.gif" Alt="" Height=1 Width=4></TD> <!-- label spacing column -->
<TD></TD> <!-- field column -->
</TR>
<TR>
<TD ID=locCaCertHead ColSpan=3><Font Face="Arial" Size=-1><BR><B>CA certificate:</B></Font></TD>
</TR>
<TR><TD ColSpan=3 BgColor=#008080><Img Src="certspc.gif" Alt="" Height=2 Width=1></TD></TR>
<TR><TD ColSpan=3><Img Src="certspc.gif" Alt="" Height=6 Width=1></TD></TR>
<TR>
<TD Align=Right VAlign=Top ID=locCaCertLabel></TD>
<TD><Select Name=lbCaInstance Size=4>
<Option Value="0" Selected><LocID ID=locCurCertEntry>Current</LocID> <%If 0<>nRenewals Then%><LocID ID=locCaNameRen1>[<%=sServerDisplayName%>(<%=nRenewals%>)]</LocID><%Else%><LocID ID=locCaNameNoRen1>[<%=sServerDisplayName%>]</LocID><%End If%>
<%For nIndex=1 To nRenewals%>
<%If CERT_VALID=CInt(rgCertState(nRenewals-nIndex)) Then%>
<Option Value="<%=nIndex%>"><LocID ID=locPrevCertEntry>Previous</LocID> <%If nIndex<>nRenewals Then%><LocID ID=locCaNameRen2>[<%=sServerDisplayName%>(<%=nRenewals-nIndex%>)]</LocID><%Else%><LocID ID=locCaNameNoRen2>[<%=sServerDisplayName%>]</LocID><%End If%>
<%End If%>
<%Next%>
</Select>
</TD>
</TR>
<TR><TD ColSpan=3><Img Src="certspc.gif" Alt="" Height=4 Width=1></TD></TR>
<TR>
<TD ID=locEncodingHead ColSpan=3><Font Face="Arial" Size=-1><BR><B>Encoding method:</B></Font></TD>
</TR>
<TR><TD ColSpan=3 BgColor=#008080><Img Src="certspc.gif" Alt="" Height=2 Width=1></TD></TR>
<TR><TD ColSpan=3><Img Src="certspc.gif" Alt="" Height=6 Width=1></TD></TR>
<TR><TD></TD>
<TD><Font ID=locEncDerFont Face="Arial">
<Input Type=Radio ID=rbDerEnc Name=rbEncoding Checked><Label For=rbDerEnc ID=locDerEnc0>DER</Label>
</Font>
</TD>
</TR>
<TR><TD></TD>
<TD><Font ID=locEncB64Font Face="Arial">
<Input Type=Radio ID=rbB64Enc Name=rbEncoding><Label For=rbB64Enc ID=locB64Enc0>Base 64</Label>
</Font>
</TD>
</TR>
<TR><TD ColSpan=3><Img Src="certspc.gif" Alt="" Height=6 Width=1></TD></TR>
</Table>
<%If "IE"=sBrowser Then%>
<Table CellSpacing=0 CellPadding=0>
<TR><TD></TD>
<TD><Font ID=locDlCaCFont Face="Arial">
<Span tabindex=0 Style="cursor:hand; color:#0000FF; text-decoration:underline;"
OnContextMenu="return false;"
OnMouseOver="window.status='<%=L_DownloadCert_Message%>'; return true;"
OnMouseOut="window.status=''; return true;"
OnKeyDown="if (13==event.keyCode) {handleGetCert();return false;} else if (9==event.keyCode) {return true;};return false;"
OnClick="handleGetCert();return false;">
<LocID ID=locDownloadCert>Download CA certificate</LocID></Span></Font>
</TD>
</TR>
<TR><TD ColSpan=3 Height=3></TD></TR>
<TR><TD></TD>
<TD><Font ID=locDlCaCpFont Face="Arial">
<Span tabindex=0 Style="cursor:hand; color:#0000FF; text-decoration:underline;"
OnContextMenu="return false;"
OnMouseOver="window.status='<%=L_DownloadChain_Message%>'; return true;"
OnMouseOut="window.status=''; return true;"
OnKeyDown="if (13==event.keyCode) {handleGetChain();return false;} else if (9==event.keyCode) {return true;};return false;"
OnClick="handleGetChain();return false;">
<LocID ID=locDownloadCertChain>Download CA certificate chain</LocID></Span></Font>
</TD>
</TR>
<TR><TD ColSpan=3 Height=3></TD></TR>
<TR><TD></TD>
<TD><Font ID=locDlBaseCrlFont Face="Arial">
<Span tabindex=0 Style="cursor:hand; color:#0000FF; text-decoration:underline;"
OnContextMenu="return false;"
OnMouseOver="window.status='<%=L_DownloadBaseCrl_Message%>'; return true;"
OnMouseOut="window.status=''; return true;"
OnKeyDown="if (13==event.keyCode) {handleGetBaseCrl();return false;} else if (9==event.keyCode) {return true;};return false;"
OnClick="handleGetBaseCrl();return false;">
<LocID ID=locDownloadBaseCRL>Download latest base CRL</LocID></Span></Font>
</TD>
</TR>
<TR><TD ColSpan=3 Height=3></TD></TR>
<TR><TD></TD>
<TD><Font ID=locDlDeltaCrlFont Face="Arial">
<Span tabindex=0 Style="cursor:hand; color:#0000FF; text-decoration:underline;"
OnContextMenu="return false;"
OnMouseOver="window.status='<%=L_DownloadDeltaCrl_Message%>'; return true;"
OnMouseOut="window.status=''; return true;"
OnKeyDown="if (13==event.keyCode) {handleGetDeltaCrl();return false;} else if (9==event.keyCode) {return true;};return false;"
OnClick="handleGetDeltaCrl();return false;">
<LocID ID=locDownloadDeltaCRL>Download latest delta CRL</LocID></Span></Font>
</TD>
</TR>
</Table>
<%Else '"NN"=sBrowser%>
<Table CellSpacing=0 CellPadding=0>
<TR><TD></TD>
<TD><Font ID=locInstCaCFont Face="Arial">
<A Href="#"
OnContextMenu="return false;"
OnMouseOver="window.status='<%=L_InstallCACert_Message%>'; return true;"
OnMouseOut="window.status=''; return true;"
OnClick="handleInstCert();return false;">
<LocID ID=locInstallCert>Install CA certificate</LocID></A></Font>
</TD>
</TR>
<TR><TD ColSpan=3 Height=3></TD></TR>
<TR><TD></TD>
<TD><Font ID=locDlCaCFont2 Face="Arial">
<A Href="#"
OnContextMenu="return false;"
OnMouseOver="window.status='<%=L_DownloadCert_Message%>'; return true;"
OnMouseOut="window.status=''; return true;"
OnClick="handleGetCert();return false;">
<LocID ID=locDownloadCert2>Download CA certificate</LocID></A></Font>
</TD>
</TR>
<TR><TD ColSpan=3 Height=3></TD></TR>
<TR><TD></TD>
<TD><Font ID=locDlCaCpFont2 Face="Arial">
<A Href="#"
OnContextMenu="return false;"
OnMouseOver="window.status='<%=L_DownloadChain_Message%>'; return true;"
OnMouseOut="window.status=''; return true;"
OnClick="handleGetChain();return false;">
<LocID ID=locDownloadCertChain2>Download CA certificate chain</LocID></A></Font>
</TD>
</TR>
<TR><TD ColSpan=3 Height=3></TD></TR>
<TR><TD></TD>
<TD><Font ID=locDlBaseCrlFont2 Face="Arial">
<A Href="#"
OnContextMenu="return false;"
OnMouseOver="window.status='<%=L_DownloadBaseCrl_Message%>'; return true;"
OnMouseOut="window.status=''; return true;"
OnClick="handleGetBaseCrl();return false;">
<LocID ID=locDownloadBaseCRL2>Download latest base CRL</LocID></A></Font>
</TD>
</TR>
<TR><TD ColSpan=3 Height=3></TD></TR>
<TR><TD></TD>
<TD><Font ID=locDlDeltaCrlFont2 Face="Arial">
<A Href="#"
OnContextMenu="return false;"
OnMouseOver="window.status='<%=L_DownloadDeltaCrl_Message%>'; return true;"
OnMouseOut="window.status=''; return true;"
OnClick="handleGetDeltaCrl();return false;">
<LocID ID=locDownloadDeltaCRL2>Download latest delta CRL</LocID></A></Font>
</TD>
</TR>
</Table>
<%End If%>
<%Else '"Text"=sBrowser%>
<!-- Text only: enumerate everything! -->
<DL>
<%For nIndex=0 To nRenewals%>
<%If CERT_VALID=CInt(rgCertState(nRenewals-nIndex)) Then%>
<DT><LocID ID=locCaCertHead3>CA Certificate: <%If 0=nIndex Then%><LocID ID=locCurCertEntry3>Current</LocID><%Else%><LocID ID=locPrevCertEntry3>Previous</LocID><%End If%><%If nIndex<>nRenewals Then%> <LocID ID=locCaNameRen3>[<%=sServerDisplayName%>(<%=nRenewals-nIndex%>)]</LocID><%Else%> <LocID ID=locCaNameNoRen3>[<%=sServerDisplayName%>]</LocID><%End If%>
<DD><LocID ID=locDownloadCert3>Download CA certificate with the following encoding method: </LocID>
<DD><LocID ID=locSep5>&nbsp;&nbsp;&nbsp;&nbsp;</LocID><A Href="certnew.cer?ReqID=CACert&amp;Renewal=<%=nRenewals-nIndex%>&amp;Enc=bin"><LocID ID=locDerEnc1>DER</LocID></A><LocID ID=locSep1> </LocID><A Href="certnew.cer?ReqID=CACert&amp;Renewal=<%=nRenewals-nIndex%>&amp;Enc=b64"><LocID ID=locB64Enc1>Base&nbsp;64</LocID></A><BR>
<LocID ID=locDownloadCertChain3>Download CA certificate chain with the following encoding method: </LocID>
<DD><LocID ID=locSep6>&nbsp;&nbsp;&nbsp;&nbsp;</LocID><A Href="certnew.p7b?ReqID=CACert&amp;Renewal=<%=nRenewals-nIndex%>&amp;Enc=bin"><LocID ID=locDerEnc2>DER</LocID></A><LocID ID=locSep2> </LocID><A Href="certnew.p7b?ReqID=CACert&amp;Renewal=<%=nRenewals-nIndex%>&amp;Enc=b64"><LocID ID=locB64Enc2>Base&nbsp;64</LocID></A><BR>
<LocID ID=locDownloadBaseCRL3>Download latest base CRL with the following encoding method: </LocID>
<DD><LocID ID=locSep7>&nbsp;&nbsp;&nbsp;&nbsp;</LocID><A Href="certcrl.crl?Type=base&amp;Renewal=<%=GetGoodCrlIndex(nIndex)%>&amp;Enc=bin"><LocID ID=locDerEnc3>DER</LocID></A><LocID ID=locSep3> </LocID><A Href="certcrl.crl?Type=base&amp;Renewal=<%=GetGoodCrlIndex(nIndex)%>&amp;Enc=b64"><LocID ID=locB64Enc3>Base&nbsp;64</LocID></A><BR>
<LocID ID=locDownloadDeltaCRL3>Download latest delta CRL with the following encoding method: </LocID>
<DD><LocID ID=locSep8>&nbsp;&nbsp;&nbsp;&nbsp;</LocID><A Href="certcrl.crl?Type=delta&amp;Renewal=<%=GetGoodCrlIndex(nIndex)%>&amp;Enc=bin"><LocID ID=locDerEnc4>DER</LocID></A><LocID ID=locSep4> </LocID><A Href="certcrl.crl?Type=delta&amp;Renewal=<%=GetGoodCrlIndex(nIndex)%>&amp;Enc=b64"><LocID ID=locB64Enc4>Base&nbsp;64</LocID></A><BR>
<BR>
<%End If%>
<%Next%>
</DL>
<%End If%>
<BR>
<!-- Green HR --><Table Border=0 CellSpacing=0 CellPadding=0 Width=100%><TR><TD BgColor=#008080><Img Src="certspc.gif" Alt="" Height=2 Width=1></TD></TR></Table>
<!-- White HR --><Table Border=0 CellSpacing=0 CellPadding=0 Width=100%><TR><TD BgColor=#FFFFFF><Img Src="certspc.gif" Alt="" Height=5 Width=1></TD></TR></Table>
</Form>
</Font>
<!-- ############################################################ -->
<!-- End of standard text. Scripts follow -->
<%bIncludeXEnroll=True%>
<%bIncludeGetCspList=False%>
<!-- #include FILE=certsgcl.inc -->
<%If "IE"=sBrowser Then%>
<!-- This form passes data to certrmpn.asp -->
<Span Style="display:none">
<Form Name=SubmittedData Action="certrmpn.asp" Method=Post>
<Input Type=Hidden Name=Action Value="instCA">
<Input Type=Hidden Name=ActionErr Value="OK">
<Input Type=Hidden Name=CertInstalled Value="NO">
</Form>
</Span>
<%End If%>
<Script Language="JavaScript">
//================================================================
// PAGE GLOBAL VARIABLES
// constants
var CRL_AVAILABLE=3; // == CR_DISP_ISSUED
// CA state information
var nRenewals=<%=nRenewals%>;
var rgCrlState=new Array(
<%For nIndex=0 To nRenewals%>
<%=rgCrlState(nIndex)%><%If nIndex<>nRenewals Then%>,<%End If%>
<%Next%>
);
<%If "IE"=sBrowser Then%>
;
// Strings To Be Localized
var L_UnknownInstallFailure_ErrorMessage="\"Unable to install the CA certificate:\\n\\nError: \"+sErrorNumber";
// Cannot install a cert until XEnroll has been loaded
var g_bXEnrollLoaded=false;
// Prevent attempts to install cert while first install is going
var g_bInstallingCert=false;
<%End If%>
//================================================================
// LINK HANDLERS
//----------------------------------------------------------------
// Get the requested cert
function handleGetCert() {
location="certnew.cer?ReqID=CACert&Renewal="+getChosenRenewal()+"&"+getEncoding();
}
//----------------------------------------------------------------
// Install the requested cert
function handleInstCert() {
location="certnew.cer?ReqID=CACert&Renewal="+getChosenRenewal()+"&Mode=inst&Enc=b64";
}
//----------------------------------------------------------------
// Get the requested certificate chain
function handleGetChain() {
location="certnew.p7b?ReqID=CACert&Renewal="+getChosenRenewal()+"&"+getEncoding();
}
//----------------------------------------------------------------
// Get the nearest valid Base CRL
function handleGetBaseCrl() {
var nSource=getChosenRenewal();
while (nSource>0 && CRL_AVAILABLE!=rgCrlState[nSource]) {
nSource--;
}
location="certcrl.crl?Type=base&Renewal="+nSource+"&"+getEncoding();
}
//----------------------------------------------------------------
// Get the nearest valid Delta CRL
function handleGetDeltaCrl() {
var nSource=getChosenRenewal();
while (nSource>0 && CRL_AVAILABLE!=rgCrlState[nSource]) {
nSource--;
}
location="certcrl.crl?Type=delta&Renewal="+nSource+"&"+getEncoding();
}
//----------------------------------------------------------------
// Return the renewal # of the currently chosen cert
function getChosenRenewal() {
return nRenewals-document.UIForm.lbCaInstance[document.UIForm.lbCaInstance.selectedIndex].value;
}
//----------------------------------------------------------------
// Return the ecoding parameter based upon the radio button
function getEncoding() {
if (true==document.UIForm.rbEncoding[0].checked) {
return "Enc=bin";
} else {
return "Enc=b64";
}
}
<%If "IE"=sBrowser Then%>
//================================================================
// INSTALL ROUTINES
//----------------------------------------------------------------
// IE SPECIFIC:
// Make sure XEnroll is ready before installing the cert
function preInstall() {
// prevent double clicking and race conditions
if (true==g_bInstallingCert) {
return;
}
g_bInstallingCert=true;
if (false==g_bXEnrollLoaded) {
// XEnroll has never been loaded, so we need to do that first.
// set our special failure handler
g_fnOnLoadFail=handleLoadFail;
// Load an XEnroll object into the page
loadXEnroll("preInstallPhase2()");
} else {
// XEnroll is already loaded, so just install the cert
Install();
}
}
function preInstallPhase2() {
// continued from above
// Now XEnroll is loaded and we're ready to go.
g_bXEnrollLoaded=true;
// install the cert
Install();
}
//----------------------------------------------------------------
// IE SPECIFIC:
// what to to if XEnroll fails to load. In this case, not much.
function handleLoadFail() {
// We are done trying to install a cert, so the user can try again.
// Note that we also *don't* disable controls, since there are no
// controls related to installing a cert (just a link)
g_bInstallingCert=false;
}
//----------------------------------------------------------------
// IE SPECIFIC:
// perform substitution on the error string, because VBScript cannot
function evalErrorMessage(sErrorNumber) {
return eval(L_UnknownInstallFailure_ErrorMessage);
}
<%End If '"IE"=sBrowser%>
</Script>
<%If "IE"=sBrowser Then%>
<Script Language="VBScript">
'-----------------------------------------------------------------
' IE SPECIFIC:
' The current CA Certificate
Public sPKCS7
sPKCS7=""
<%=sPKCS7%>
'-----------------------------------------------------------------
' IE SPECIFIC:
' Install the certificate
Sub Install()
Dim sMessage
Dim CertInstalled
On Error Resume Next
CertInstalled = XEnroll.InstallPKCS7Ex(sPKCS7)
If 0=Err.Number Then
' Certificate has been successfully installed. Go to 'success' page
document.SubmittedData.submit
ElseIf -2147023673 = Err.Number Then
' if HRESULT_FROM_WIN32(ERROR_CANCELLED), set extra msg
document.SubmittedData.ActionErr.Value = "Cancel"
If 0 <> CertInstalled Then
document.SubmittedData.CertInstalled = "YES"
End If
document.SubmittedData.submit
Else
' unknown error
sMessage=evalErrorMessage("0x" & Hex(Err.Number))
Alert sMessage
End If
g_bInstallingCert=False
End Sub
</Script>
<%End If '"IE"=sBrowser%>
<%End If 'bFailed%>
</Body>
</HTML>