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

106 lines
3.3 KiB
Plaintext

<%@ CODEPAGE=65001 'UTF-8%>
<%' certfnsh.asp - (CERT)srv web - (F)i(N)i(SH) request
' Copyright (C) Microsoft Corporation, 1998 - 1999 %>
<!-- #include FILE=certdat.inc -->
<% ' ########## BEGIN SERVER SIDE EXECUTION ##########
'Process a Certificate Request
Dim nDisposition, nResult, sRequest, sAttributes, eSubmitFlag, sErrMsg
On Error Resume Next
' from \nt\public\sdk\inc\certcli.h
Const CR_IN_BASE64HEADER=&H0000
Const CR_IN_BASE64=&H0001
Const CR_IN_BINARY=&H0002
Const CR_IN_FORMATANY=&H0000
Const CR_IN_PKCS10=&H0100
Const CR_IN_KEYGEN=&H0200
Const CR_IN_PKCS7=&H0300
Const CR_IN_RPC=&H20000
Const CR_OUT_BASE64HEADER=&H00000000
Const CR_OUT_BASE64=&H00000001
Const CR_OUT_BINARY=&H00000002
Const CR_OUT_CHAIN=&H00000100
'Disposition code ref: \nt\public\sdk\inc\certcli.h
Const CR_DISP_INCOMPLETE =0
Const CR_DISP_ERROR =1
Const CR_DISP_DENIED =2
Const CR_DISP_ISSUED =3
Const CR_DISP_ISSUED_OUT_OF_BAND=4
Const CR_DISP_UNDER_SUBMISSION =5
Const CR_DISP_REVOKED =6
Const no_disp=-1
'Stop 'debugging breakpoint
Set Session("ICertRequest")=Server.CreateObject("CertificateAuthority.Request")
Set ICertRequest=Session("ICertRequest")
nDisposition=no_disp
If "newreq"=Request.Form("Mode") Then
'New Request (PKCS #10)
' or Certificate renewal (PKCS #7)
sRequest=Request.Form("CertRequest")
sAttributes=Request.Form("CertAttrib")
If (InStr(sRequest, "BEGIN")=0) Then
eSubmitFlag=CR_IN_BASE64
Else
eSubmitFlag=CR_IN_BASE64HEADER
End If
Err.Clear 'make sure we catch the HRESULT and not some earlier error
nDisposition=ICertRequest.Submit(eSubmitFlag Or CR_IN_FORMATANY, sRequest, sAttributes, sServerConfig) 'Or CR_IN_RPC
ElseIf "newreq NN"=Request.Form("Mode") Then
'New Request from Nescape
sRequest=Request.Form("CertRequest")
sAttributes=Request.Form("CertAttrib")
Err.Clear 'make sure we catch the HRESULT and not some earlier error
nDisposition=ICertRequest.Submit(CR_IN_BASE64 Or CR_IN_KEYGEN , sRequest, sAttributes, sServerConfig) 'Or CR_IN_RPC
ElseIf "chkpnd"=Request.Form("Mode") Then
'Check Pending
Err.Clear 'make sure we catch the HRESULT and not some earlier error
nDisposition=ICertRequest.RetrievePending(Request.Form("ReqID"), sServerConfig)
Else
'Unexpected mode - pass through to error handler
End If
nResult=Err.Number
sErrMsg=Err.Description
Session("nDisposition")=nDisposition
Session("nResult")=nResult
Session("sErrMsg")=sErrMsg
'internal redirect - transfer control to appropriate page
If nDisposition=no_disp Then
Server.Transfer("certrser.asp")
ElseIf nDisposition=CR_DISP_INCOMPLETE Then
Server.Transfer("certrser.asp")
ElseIf nDisposition=CR_DISP_ERROR Then
Server.Transfer("certrser.asp")
ElseIf nDisposition=CR_DISP_DENIED Then
Server.Transfer("certrsdn.asp")
ElseIf nDisposition=CR_DISP_ISSUED Then
Server.Transfer("certrsis.asp")
ElseIf nDisposition=CR_DISP_ISSUED_OUT_OF_BAND Then
Server.Transfer("certrsob.asp")
ElseIf nDisposition=CR_DISP_UNDER_SUBMISSION Then
Server.Transfer("certrspn.asp")
ElseIf nDisposition=CR_DISP_REVOKED Then
Server.Transfer("certrsdn.asp") 'could happen if pending->issued->revoked
Else 'unknown
Server.Transfer("certrser.asp")
End If
' ########## END SERVER SIDE EXECUTION ##########
%>