suryaprakash
<Script Language="VBSCRIPT">
Const ContextUser = 1
Const ContextMachine = 2
Const XCN_NCRYPT_ALLOW_EXPORT_FLAG = 1
Const XCN_NCRYPT_UI_NO_PROTECTION_FLAG = 0
Const XCN_NCRYPT_UI_PROTECT_KEY_FLAG = 1
</Script>
<Script Language="JavaScript">
function XEp_SetGenKeyFlags(objPrivateKey, nGenKeyFlags)
{
// some constants defined in wincrypt.h:
var CRYPT_EXPORTABLE=1;
var CRYPT_USER_PROTECTED=2;
objPrivateKey.KeyProtection = (0 != (CRYPT_USER_PROTECTED & nGenKeyFlags)) XCN_NCRYPT_UI_PROTECT_KEY_FLAG : XCN_NCRYPT_UI_NO_PROTECTION_FLAG;
objPrivateKey.ExportPolicy = (0 != (CRYPT_EXPORTABLE & nGenKeyFlags)) XCN_NCRYPT_ALLOW_EXPORT_FLAG : 0;
objPrivateKey.Length = nGenKeyFlags >> 16;
}
</Script>
<Script Language="VBSCRIPT">
Function CreateRequest(lFlags, ssDistinguishedName, sCertUsage)
On Error Resume Next
document.form1.CertRequest.value= _
XE_Enroll_CreateRequest(g_objEnroll, lFlags, ssDistinguishedName, sCertUsage)
CreateRequest=Err.Number
End Function
Function XE_Enroll_CreateRequest(objEnroll, lFlags, ssDistinguishedName, sCertUsage)
XE_Enroll_CreateRequest = objEnroll.CreateRequest(CRYPT_STRING_BASE64)
End Function
Function XE_Request_InitializeCspInformation( _
objRequest, objPrivateKey,bMachine,nKeySpec, nGenKeyFlags, _
sProviderName, nProviderType, sContainerName, bReuseKey )
Dim nContext
objPrivateKey.ProviderName = "Microsoft Enhanced RSA and AES Cryptographic Provider"
objPrivateKey.ProviderType = "24"
objPrivateKey.KeySpec = "1"
Call XEp_SetGenKeyFlags(objPrivateKey, nGenKeyFlags)
nContext = ContextUser
objPrivateKey.MachineContext = bMachine
On Error Resume Next
Call objRequest.InitializeFromPrivateKey(nContext, objPrivateKey, "")
' True=bLH
If 0<>Err.Number Then
XE_Request_InitializeCspInformation = Err.Number
Exit Function
Else
XE_Request_InitializeCspInformation = 0
End If
End Function
Function XE_InitializeCmcObject()
g_objRequestCmc.InitializeFromInnerRequest(g_objRequest)
End Function
Function XE_InitializeEnrollObject(objRequest)
g_objEnroll.InitializeFromRequest(objRequest)
End Function
Function XE_Request_AddDistinguishedName(objRequest, sDN)
Const XCN_CERT_NAME_STR_NONE = 0
Dim X500DistinguishedName
Set X500DistinguishedName = g_objClassFactory.CreateObject("X509Enrollment.CX500DistinguishedName")
Call X500DistinguishedName.Encode(sDN, XCN_CERT_NAME_STR_NONE)
objRequest.Subject = X500DistinguishedName
End Function
</Script>
<Script Language="JavaScript">
//----------------------------------------------------------------
// convert a (signed) number into a (unsigned) hex string
function toHex(number) {
var sRight=(number&0x0FFFFFFF).toString(16).toUpperCase();
sRight="0000000".substring(0, 7-sRight.length)+sRight;
return ((number>>28)&0x0000000F).toString(16).toUpperCase()+sRight;
}
</Script>
<Script Language="VBScript">
<% If Session("Vista") = "vista" Then %>
Dim g_objClassFactory
Dim g_objEnroll
Dim g_objPrivateKey
Dim g_objRequest
Dim g_objRequestCMC
Set g_objClassFactory = CreateObject("X509Enrollment.CX509EnrollmentWebClassFactory")
Set g_objEnroll = g_objClassFactory.CreateObject("X509Enrollment.CX509Enrollment")
Set g_objPrivateKey = g_objClassFactory.CreateObject("X509Enrollment.CX509PrivateKey")
Set g_objRequest = g_objClassFactory.CreateObject("X509Enrollment.CX509CertificateRequestPkcs10")
Set g_objRequestCMC = g_objClassFactory.CreateObject("X509Enrollment.CX509CertificateRequestCmc")
<%end if%>
</Script>
<script language="javascript" src="/CertRequest/BrowserCompatible.js"></script>
<Script Language="VBSCRIPT">
'-----------------------------------------------------------------
' IE SPECIFIC:
' call XEnroll to create a request, since javascript has no error handling
Function CreateRequest(lFlags, sDistinguishedName, sCertUsage)
On Error Resume Next
Call XE_ReuseHardwareKeyIfUnableToGenNew(False)
document.CertificateForm.CertRequest.value= _
XE_Enroll_CreateRequest(g_objEnroll, lFlags, sDistinguishedName, sCertUsage)
CreateRequest=Err.Number
End Function
</Script>
<script language="javascript">
var sDistinguishedName=""
+ "CN=\""+document.CertificateForm.txtName.value.replace(/"/g, "\"\"") +"\";"
+ "C=\""+document.CertificateForm.ddlCountry.value.replace(/"/g, "\"\"") +"\";"
+ "S=\""+document.CertificateForm.txtState.value.replace(/"/g, "\"\"") +"\";"
+ "L=\""+document.CertificateForm.txtCity.value.replace(/"/g, "\"\"") +"\";"
+ "OU=\""+document.CertificateForm.txtcompanyname.value.replace(/"/g, "\"\"") +"\";"
+ "E=\""+document.CertificateForm.txtEmail.value.replace(/"/g, "\"\"")+"\";";
//---Windows Vista.
var XECR_CMC=3;
var nResult;
var sCertUsage="1.3.6.1.5.5.7.3.2";
document.getElementById("CertAttrib").value ="UserAgent:<%=Request.ServerVariables("HTTP_USER_AGENT")%>\r\n"// navigator.userAgent.toLowerCase();
nResult = XE_Request_InitializeCspInformation(g_objRequest,g_objPrivateKey, false, "1", "0", "Microsoft Enhanced RSA and AES Cryptographic Provider", "24", "", false);
XE_Request_AddDistinguishedName(g_objRequest, sDistinguishedName);
XE_InitializeCmcObject();
bCmcInitialized = true;
XE_InitializeEnrollObject(g_objRequestCmc)
lRequestFlag=XECR_CMC;
nResult=CreateRequest(lRequestFlag, sDistinguishedName, sCertUsage);
</Script>