summaryrefslogtreecommitdiffstats
path: root/base/ca/shared/webapps/ca/ee/ca/ProfileSelect.template
diff options
context:
space:
mode:
Diffstat (limited to 'base/ca/shared/webapps/ca/ee/ca/ProfileSelect.template')
-rw-r--r--base/ca/shared/webapps/ca/ee/ca/ProfileSelect.template865
1 files changed, 865 insertions, 0 deletions
diff --git a/base/ca/shared/webapps/ca/ee/ca/ProfileSelect.template b/base/ca/shared/webapps/ca/ee/ca/ProfileSelect.template
new file mode 100644
index 000000000..bcb047dbf
--- /dev/null
+++ b/base/ca/shared/webapps/ca/ee/ca/ProfileSelect.template
@@ -0,0 +1,865 @@
+<!-- --- BEGIN COPYRIGHT BLOCK ---
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Copyright (C) 2007 Red Hat, Inc.
+ All rights reserved.
+ --- END COPYRIGHT BLOCK --- -->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<CMS_TEMPLATE>
+<font size="+1" face="PrimaSans BT, Verdana, Arial, Helvetica, sans-serif">
+Certificate Profile
+</font><br>
+ <Font size="-1" face="PrimaSans BT, Verdana, Arial, Helvetica, sans-serif">
+ Use this form to submit the request.
+<p>
+</font>
+<table border="0" cellspacing="0" cellpadding="0" background="/pki/images/hr.gif"
+width="100%">
+ <tr>
+ <td>&nbsp;</td>
+ </tr>
+</table>
+<p>
+
+<SCRIPT LANGUAGE="JavaScript">
+
+var dual = 'false';
+var encryptionKeyOnly = 'false';
+var signingKeyOnly = 'false';
+
+var keyList = new Array();
+var key = new Object();
+key.type = "RSA";
+keyList[0] = key;
+var key = new Object();
+key.type = "EC";
+keyList[1] = key;
+
+function keyTypeOptions (keyPurpose)
+{
+ var keyType = "RSA";
+
+ for (var i = 0; i < policySetListSet.length; i++) {
+ for (var j = 0; j < policySetListSet[i].policySet.length; j++) {
+ if (typeof(policySetListSet[i].policySet[j].constraintSet) != "undefined") {
+ for (var k = 0; k < policySetListSet[i].policySet[j].constraintSet.length; k++) {
+ if (policySetListSet[i].policySet[j].constraintSet[k].name == "keyType") {
+ if (policySetListSet[i].policySet[j].constraintSet[k].value != "-") {
+ if (keyPurpose.length == 0 || (keyPurpose.length > 0 && policySetListSet[i].setId.indexOf(keyPurpose) > -1)) {
+ keyType = policySetListSet[i].policySet[j].constraintSet[k].value;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var keyFound = 0;
+ for (var i = 0; i < keyList.length; i++) {
+ if (keyList[i].type == keyType) {
+ keyFound = 1;
+ }
+ }
+ if (keyFound == 0) {
+ keyType = "RSA";
+ }
+ if ((navigator.appName == "Microsoft Internet Explorer") &&
+ ((navigator.appVersion).indexOf("NT 6.") == -1)) {
+ keyType = "RSA";
+ }
+
+ return keyType;
+}
+
+function translateCurveName (name)
+{
+ var translated = "";
+ if (navigator.appName == "Microsoft Internet Explorer") {
+ if (name == "nistp256" || name == "ECDSA_P256") {
+ translated = "ECDSA_P256";
+ } else if (name == "nistp384" || name == "ECDSA_P384") {
+ translated = "ECDSA_P384";
+ } else if (name == "nistp521" || name == "ECDSA_P521") {
+ translated = "ECDSA_P521";
+ }
+ } else {
+ if (name == "ECDSA_P256") {
+ translated = "nistp256";
+ } else if (name == "ECDSA_P384") {
+ translated = "nistp384";
+ } else if (name == "ECDSA_P521") {
+ translated = "nistp521";
+ } else {
+ translated = name;
+ }
+ }
+ return translated;
+}
+
+function keyLengthsCurvesOptions (keyPurpose)
+{
+ var keyType = "RSA";
+ var options = "";
+ var lengthsOrCurves = null;
+ var keyLengthsCurves = "";
+
+ for (var i = 0; i < policySetListSet.length; i++) {
+ for (var j = 0; j < policySetListSet[i].policySet.length; j++) {
+ if (typeof(policySetListSet[i].policySet[j].constraintSet) != "undefined") {
+ for (var k = 0; k < policySetListSet[i].policySet[j].constraintSet.length; k++) {
+ if (policySetListSet[i].policySet[j].constraintSet[k].name == "keyType") {
+ if (policySetListSet[i].policySet[j].constraintSet[k].value != "-") {
+ if (keyPurpose.length == 0 || (keyPurpose.length > 0 && policySetListSet[i].setId.indexOf(keyPurpose) > -1)) {
+ keyType = policySetListSet[i].policySet[j].constraintSet[k].value;
+ }
+ }
+ }
+
+ if (keyPurpose.length == 0 || (keyPurpose.length > 0 && policySetListSet[i].setId.indexOf(keyPurpose) > -1)) {
+ if (policySetListSet[i].policySet[j].constraintSet[k].name == "keyParameters") {
+ keyLengthsCurves = policySetListSet[i].policySet[j].constraintSet[k].value;
+ lengthsOrCurves = keyLengthsCurves.split(",");
+ }
+ }
+ }
+ }
+ }
+ }
+ if ((navigator.appName == "Microsoft Internet Explorer") &&
+ ((navigator.appVersion).indexOf("NT 6.") == -1)) {
+ keyType = "RSA";
+ }
+
+ var value = 0;
+ var l = 0;
+ for (l = 0 ; l < lengthsOrCurves.length; l++) {
+ var included = true;
+
+ value = lengthsOrCurves[l];
+
+ if (keyType != "EC" && !isNumeric(value)) {
+ included = false;
+ } else if (keyType == "EC" &&
+ navigator.appName == "Microsoft Internet Explorer" &&
+ value != "nistp256" && value != "nistp384" && value != "nistp521" &
+ value != "ECDSA_P256" && value != "ECDSA_P384" && value != "ECDSA_P521") {
+ included = false;
+ }
+
+ if (included) {
+ if (keyType == "EC") {
+ options += '<OPTION VALUE="' + translateCurveName(value) + '"';
+ } else {
+ options += '<OPTION VALUE="' + value + '"';
+ }
+ if (i == 0) {
+ options += ' SELECTED';
+ }
+ options += '>' + value;
+ }
+ }
+
+ if (options.length == 0) {
+ if (keyType != "EC") {
+ options = '<OPTION VALUE=1024 SELECTED>1024';
+ } else {
+ if (navigator.appName == "Microsoft Internet Explorer") {
+ options = '<OPTION VALUE="ECDSA_P256">nistp256';
+ } else {
+ options = '<OPTION VALUE="nistp256">nistp256';
+ }
+ }
+ }
+ //alert("options="+options);
+
+ return options;
+}
+
+function isNumeric(sText)
+{
+ var validChars = "0123456789";
+ var isNumber=true;
+ var char;
+
+ if( !sText)
+ return false;
+
+ for (i = 0; i < sText.length && isNumber == true; i++) {
+ char = sText.charAt(i);
+ if (validChars.indexOf(char) == -1) {
+ isNumber = false;
+ }
+ }
+ return isNumber;
+}
+
+function validate()
+{
+ if (keygen_request == 'false')
+ return false;
+ with (document.forms[0]) {
+ /////////////////////////////////////////////////////////////////
+ // To enable dual key feature, this page must be customized with
+ // appropriate Javascript call. For example,
+ //
+ // crmfObject = crypto.generateCRMFRequest(
+ // "CN=undefined",
+ // "regToken", "authenticator",
+ // null,
+ // "setCRMFRequest();",
+ // 512, null, "rsa-ex",
+ // 1024, null, "rsa-sign");
+ // Note: This archival text below only applies to CS 7.1 and earlier:
+
+ // To enable key archival feature, this page must be customized with
+ // KRA's transport certificate. The transport certificate can be
+ // retrieved in the following ways:
+ // (1) Access "List Certificates" menu option in end-entity page
+ // (2) Access https://<host>:<agent_port>/kra/displayTransportCert
+ // (3) Use certutil command in <instance-dir>/config directory
+ // (i.e. certutil -L -d . -n "kraTransportCert <instance-id>" -a)
+ //
+ // Once the transport certificate is obtained, the following
+ // javascript should be modified so that the transport certificate
+ // and appropriate key type are selected. For example,
+ //
+ // var kraTransportCert = "MIICDjCCAXegAwIBAgICAfMwDQYJKoZIhvcNAQEEBQAwdzELMAkGA1UEBhMCVVMxLDAqBgNVBAoTI05ldHNjYXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uMREwDwYDVQQLEwhIYXJkY29yZTEnMCUGA1UEAxMeSGFyZGNvcmUgQ2VydGlmaWNhdGUgU2VydmVyIElJMB4XDTk4MTExOTIzNDIxOVoXDTk5MDUxODIzNDIxOVowLjELMAkGA1UEBhMCVVMxETAPBgNVBAoTCG5ldHNjYXBlMQwwCgYDVQQDEwNLUmEwXDANBgkqhkiG9w0BAQEFAANLADBIAkEArrbDiYUI5SCdlCKKa0bEBn1m83kX6bdhytRYNkd/HB95Bp85SRadmdJV+0O/yMxjYAtGCFrmcqEZ4sh2YSov6wIDAQABozYwNDARBglghkgBhvhCAQEEBAMCAEAwHwYDVR0jBBgwFoAUl7FtsrYCFlQMl9fjMm3LnN/u3oAwDQYJKoZIhvcNAQEEBQADgYEApvzcUsVIOstaoYSiWb4+aMVH6s1jiJlr5iVHnOKzfsYxPVdUw6uz04AT8N+1KIarMTKxHPzGAFSLicKLEv4HG4vh6llc86uzRzWpUqqVHg/eKN5A8Jyg56D4DkNr/XEJ7QdKesAp13dk5H5qvHelkSPLYYdMXNwNWPVZKgnWrWg=";
+ // var keyGenAlg = "rsa-ex";
+ // crmfObject = crypto.generateCRMFRequest(
+ // "CN=undefined",
+ // "regToken", "authenticator",
+ // keyTransportCert,
+ // "setCRMFRequest();",
+ // 512, null, keyGenAlg);
+ /////////////////////////////////////////////////////////////////
+ var keyTransportCert = null;
+
+
+ if (typeof(transportCert) != "undefined" && transportCert != "") {
+ // from CS7.2, transport certificate will be
+ // inserted automatically
+ keyTransportCert = transportCert;
+ }
+ // generate keys for nsm.
+ if (typeof(crypto) != "undefined" && typeof(crypto.version) != "undefined") {
+ var encKeyType = "rsa-ex";
+ var signKeyType = "rsa-sign";
+ var dualKeyType = "rsa-dual-use";
+ var encKeyParams = null;
+ var encKeySize = 1024;
+ var signKeyParams = null;
+ var signKeySize = 1024;
+ var keyParams = null;
+ // Give this default because the ECC crytpo codes requires and integer
+ // for this value even if presenting ECC curve name parameter.
+ var keySize = 1024;
+
+ try {
+ if (dual == 'true') {
+
+ if (keyTypeOptions("encryption") == "EC") {
+ encKeyType = "ec-ex";
+ encKeyParams = "curve=" + encKeyParam.value;
+ } else {
+ encKeySize = parseInt(encKeyParam.value);
+ }
+
+ if (keyTypeOptions("signing") == "EC") {
+ signKeyType = "ec-sign";
+ signKeyParams = "curve=" + signKeyParam.value;
+ } else {
+ signKeySize = parseInt(signKeyParam.value);
+ }
+
+ crmfObject = crypto.generateCRMFRequest(
+ "CN=x", "regToken", "authenticator",
+ keyTransportCert, "setCRMFRequest();",
+ encKeySize, encKeyParams, encKeyType,
+ signKeySize, signKeyParams, signKeyType);
+ } else {
+ if (encryptionKeyOnly == 'true') {
+ if (keyTypeOptions("") == "EC") {
+ dualKeyType = "ec-ex";
+ keyParams = "curve=" + keyParam.value;
+ } else {
+ dualKeyType = "rsa-ex";
+ keySize = parseInt(keyParam.value);
+ }
+ } else if (signingKeyOnly == 'true') {
+ if (keyTypeOptions("") == "EC") {
+ dualKeyType = "ec-sign";
+ keyParams = "curve=" + keyParam.value;
+ } else {
+ dualKeyType = "rsa-sign";
+ keySize = parseInt(keyParam.value);
+ }
+ keyTransportCert = null;
+ } else {
+ if (keyTypeOptions("") == "EC") {
+ dualKeyType = "ec-dual-use";
+ keyParams = "curve=" + keyParam.value;
+ } else {
+ keySize = parseInt(keyParam.value);
+ }
+ keyTransportCert = null;
+ }
+ crmfObject = crypto.generateCRMFRequest(
+ "CN=x", "regToken", "authenticator",
+ keyTransportCert, "setCRMFRequest();",
+ keySize, keyParams, dualKeyType);
+ }
+ } catch (e) {
+ if (typeof(crmfObject) == "undefined" || crmfObject == null) {
+ alert("Error generating CRMF request.");
+ }
+ }
+ }
+ return false;
+ }
+}
+
+function setCRMFRequest()
+{
+ with (document.forms[0]) {
+ cert_request.value = crmfObject.request;
+ submit();
+ }
+}
+
+</SCRIPT>
+
+
+<script language=javascript>
+ var uri = 'profileSubmit';
+ if (typeof(authName) != "undefined") {
+ if (authIsSSLClientRequired == 'true') {
+ uri = 'https://[PKI_MACHINE_NAME]:[PKI_EE_SECURE_CLIENT_AUTH_PORT_UI]/[PKI_SUBSYSTEM_TYPE]/eeca/[PKI_SUBSYSTEM_TYPE]/profileSubmitSSLClient';
+ }
+ }
+ if (navigator.appName == "Microsoft Internet Explorer") {
+ if ((navigator.appVersion).indexOf("NT 6.") > -1) {
+ document.writeln("<OBJECT id='g_objClassFactory' CLASSID='clsid:884e2049-217d-11da-b2a4-000e7bbb2b09'></OBJECT>");
+ } else {
+ document.writeln("<OBJECT classid='clsid:127698e4-e730-4e5c-a2b1-21490a70c8a1' CODEBASE='/xenroll.dll' id='Enroll'></OBJECT>");
+ }
+ document.writeln('<form name="ReqForm" onSubmit="if (checkRequest()) {return true;} else {window.location.reload(); return false;}" method="post" action="' + uri + '">');
+ } else if (typeof(crypto) != "undefined" && typeof(crypto.version) != "undefined") {
+ document.writeln('<form name="ReqForm" onSubmit="return validate();" method="post" action="' + uri + '">');
+ } else {
+ document.writeln('<form name="ReqForm" method="post" action="' + uri + '">');
+ }
+</script>
+
+<SCRIPT LANGUAGE=VBS>
+<!--
+'Get OS Version, works for Vista and below only
+Function GetOSVersion
+ dim agent
+ dim result
+ dim pos
+
+ agent = Navigator.appVersion
+ pos = InStr(agent,"NT 6.")
+
+ If pos > 0 Then
+ GetOSVersion = 6 ' Vista
+ Exit Function
+ End If
+
+ pos = InStr(agent,"NT 5.")
+
+ If pos > 0 Then
+ GetOSVersion = 5 ' XP etc
+ Exit Function
+ End If
+
+' Default
+ GetOSVersion = 5
+End Function
+
+Function checkRequest
+ Dim TheForm
+ Dim szName
+ Dim options
+ Dim osVersion
+ Dim result
+ Dim keyLen
+ Dim keyParameter
+ Dim keyIndex
+ Set TheForm = Document.ReqForm
+
+ checkRequest = False
+
+ keyIndex = TheForm.all.keyLength.options.selectedIndex
+ If (IsNumeric(TheForm.all.keyLength.options(keyIndex).value)) Then
+ keyLen = CInt (TheForm.all.keyLength.options(keyIndex).value)
+ keyParameter = ""
+ Else
+ keyLen = 0
+ keyParameter = TheForm.all.keyLength.options(keyIndex).value
+ End If
+
+ osVersion = GetOSVersion()
+
+ If osVersion <> 6 Then 'Not Vista
+
+ ' Contruct the X500 distinguished name
+ szName = "CN=NAME"
+
+ On Error Resume Next
+ Enroll.HashAlgorithm = "MD5"
+ Enroll.KeySpec = 1
+
+ ' Pick the provider that is selected
+ set options = TheForm.all.cryptprovider.options
+ index = options.selectedIndex
+ Enroll.providerType = options(index).value
+ Enroll.providerName = options(index).text
+
+ ' adding 2 to "GenKeyFlags" will enable the 'High Security'
+ ' (USER_PROTECTED) mode, which means IE will pop up a dialog
+ ' asking what level of protection you would like to give
+ ' the key - this varies from 'none' to 'confirm password
+ ' every time the key is used'
+ ' Enroll.GenKeyFlags = 1 ' key PKCS12-exportable
+ Enroll.GenKeyFlags = (65536 * (CLng(keyLen))) + 1
+ szCertReq = Enroll.createPKCS10(szName, "1.3.6.1.5.5.7.3.2")
+ theError = Err.Number
+ On Error Goto 0
+ '
+ ' If the user has cancelled things the we simply ignore whatever
+ ' they were doing ... need to think what should be done here
+ '
+ If (szCertReq = Empty AND theError = 0) Then
+ Exit Function
+ End If
+
+ If (szCertReq = Empty OR theError <> 0) Then
+ '
+ ' There was an error in the key pair generation. The error value
+ ' is found in the variable 'theError' which we snarfed above before
+ ' we did the 'On Error Goto 0' which cleared it again.
+ '
+ sz = "The error '" & Hex(theError) & "' occurred." & chr(13) & chr(10) & "Your credentials could not be generated."
+ result = MsgBox(sz, 0, "Credentials Enrollment")
+ Exit Function
+ End If
+
+ TheForm.cert_request.Value = szCertReq
+
+ ' TheForm.Submit
+
+ Else 'Vista
+ Dim enrollment
+ Dim privateKey
+ Dim request
+ Dim csr
+ Dim objDN
+
+ 'certUsage is "1.3.6.1.5.5.7.3.2"
+
+ On Error Resume Next
+ 'CreateObject("X509Enrollment.CX509EnrollmentWebClassFactory")
+
+ If IsObject(g_objClassFactory) = False Then
+ result = MsgBox("Can't create Factory Object " & " Error: " & Err.number & " :" & Err.description,0,"")
+ Exit Function
+ End If
+
+ Set enrollment = g_objClassFactory.CreateObject("X509Enrollment.CX509Enrollment")
+
+ If IsObject(enrollment) = False Then
+ result = MsgBox("Can't create enroll Object! " & " Error: " & Err.number & " :" & Err.description,"")
+ Exit Function
+ End If
+
+ Set privateKey = g_objClassFactory.CreateObject("X509Enrollment.CX509PrivateKey")
+
+ If IsObject(privateKey) = False Then
+ result = MsgBox("Can't create Key Object! " & " Error: " & Err.number & " :" & Err.description,0,"")
+ Exit Function
+ End If
+
+ Set request = g_objClassFactory.CreateObject("X509Enrollment.CX509CertificateRequestPkcs10")
+
+ If IsObject(request) = False Then
+ result = MsgBox("Can't create Request Object. ! " & " Error: " & Err.number & " :" & Err.description,0,"")
+ Exit Function
+ End If
+
+ Set algobj = g_objClassFactory.CreateObject( "X509Enrollment.CObjectId" )
+ If IsObject(algobj) = False Then
+ result = MsgBox("Can't create OID Object. ! " & " Error: " & Err.number & " :" & Err.description,0,"")
+ Exit Function
+ End If
+ algobj.InitializeFromAlgorithmName XCN_CRYPT_ANY_GROUP_ID, XCN_CRYPT_OID_INFO_PUBKEY_ANY, AlgorithmFlagsNone, keyParameter
+ privateKey.Algorithm = algobj
+
+
+ privateKey.KeySpec= "1"
+
+ ' Pick the provider that is selected
+ set options = TheForm.all.cryptprovider.options
+ index = options.selectedIndex
+ privateKey.ProviderType = index
+ privateKey.ProviderName = options(index).text
+ If keyLen > 0 Then
+ privateKey.Length = keyLen
+ End If
+
+ szName = "0.9.2342.19200300.100.1.1=" & TheForm.uid.Value & ",E=" & TheForm.email.Value & ",CN=" & TheForm.cn.Value
+
+ Set objDN = g_objClassFactory.CreateObject("X509Enrollment.CX500DistinguishedName")
+
+ If IsObject(objDN) = False Then
+ result = MsgBox("Can't create DN Object. ! " & " Error: " & Err.number & " :" & Err.description,0,"")
+ Exit Function
+ End If
+
+ objDN.Encode szName,0
+
+ request.InitializeFromPrivateKey 1,privateKey,""
+ request.Subject = objDN
+
+ enrollment.InitializeFromRequest(request)
+ csr=enrollment.CreateRequest(1)
+
+ If len(csr) = 0 Then
+ result = MsgBox("Error Creating Request! "& " Error: " & Err.number & " :" & Err.description,0,"")
+ Exit Function
+ End If
+
+ TheForm.cert_request.Value = csr
+
+ End If
+ checkRequest = True
+End Function
+
+-->
+</SCRIPT>
+
+<script language=javascript>
+if (errorCode == 0) {
+document.writeln('<br>');
+document.writeln('<b>');
+document.writeln('<FONT size="-1" face="PrimaSans BT, Verdana, sans-serif">');
+document.writeln('Certificate Profile - ' + profileName);
+document.writeln('</FONT>');
+document.writeln('</b>');
+document.writeln('<p>');
+document.writeln('<FONT size="-1" face="PrimaSans BT, Verdana, sans-serif">');
+document.writeln(profileDesc);
+document.writeln('</FONT>');
+document.writeln('<p>');
+if (typeof(authName) != "undefined") {
+document.writeln('<table width=100%>');
+document.writeln('<tr>');
+document.writeln('<td>');
+document.writeln('<FONT size="-1" face="PrimaSans BT, Verdana, sans-serif">');
+document.writeln('<b>');
+document.writeln('Authentication - ' + authName);
+document.writeln('</b>');
+document.writeln('</FONT>');
+document.writeln('</td>');
+document.writeln('</tr>');
+document.writeln('<tr>');
+document.writeln('<td>');
+document.writeln('<FONT size="-1" face="PrimaSans BT, Verdana, sans-serif">');
+document.writeln(authDesc);
+document.writeln('</FONT>');
+document.writeln('</td>');
+document.writeln('</tr>');
+document.writeln('</table>');
+document.writeln('<p>');
+document.writeln('<table width=100%>');
+for (var i = 0; i < authListSet.length; i++) {
+ document.writeln('<tr>');
+ document.writeln('<td width=40%>');
+ document.writeln('<FONT size="-1" face="PrimaSans BT, Verdana, sans-serif">');
+ document.writeln('<li>');
+ document.writeln(authListSet[i].authName);
+ document.writeln('</FONT>');
+ document.writeln('</td>');
+ document.writeln('<td>');
+ if (authListSet[i].authSyntax == 'string') {
+ document.writeln('<input type=text name=' + authListSet[i].authId + '>');
+ } else if (authListSet[i].authSyntax == 'password') {
+ document.writeln('<input type=password name=' + authListSet[i].authId + '>');
+ }
+ document.writeln('</td>');
+ document.writeln('</tr>');
+}
+document.writeln('</table>');
+}
+document.writeln('<p>');
+document.writeln('<table width=100%>');
+document.writeln('<tr>');
+document.writeln('<td>');
+document.writeln('<FONT size="-1" face="PrimaSans BT, Verdana, sans-serif">');
+document.writeln('<b>');
+document.writeln('Inputs');
+document.writeln('</b>');
+document.writeln('</FONT>');
+document.writeln('</td>');
+document.writeln('</tr>');
+document.writeln('</table>');
+document.writeln('<p>');
+document.writeln('<table width=100%>');
+for (var m = 0; m < inputPluginListSet.length; m++) {
+ document.writeln('<tr>');
+ document.writeln('<td spancol=2>');
+ document.writeln('<b>');
+ document.writeln('<FONT size="-1" face="PrimaSans BT, Verdana, sans-serif">');
+ document.writeln(inputPluginListSet[m].inputPluginName);
+ document.writeln('</FONT>');
+ document.writeln('</b>');
+ document.writeln('</td>');
+ document.writeln('</tr>');
+ for (var n = 0; n < inputListSet.length; n++) {
+ if (inputPluginListSet[m].inputPluginId != inputListSet[n].inputPluginId)
+ continue;
+ document.writeln('<tr>');
+ document.writeln('<td width=40%>');
+ document.writeln('<FONT size="-1" face="PrimaSans BT, Verdana, sans-serif">');
+ document.writeln('<li>');
+ document.writeln(inputListSet[n].inputName);
+ document.writeln('</FONT>');
+ document.writeln('</td>');
+ document.writeln('<td>');
+ if (inputListSet[n].inputSyntax == 'string') {
+ document.writeln('<input type=text name=' + inputListSet[n].inputId + '>');
+ } else if (inputListSet[n].inputSyntax == 'cert_request') {
+ document.writeln('<textarea cols=60 rows=10 name=' + inputListSet[n].inputId + '></textarea>');
+ } else if (inputListSet[n].inputSyntax == 'cert_request_type') {
+ document.writeln('<select name=' + inputListSet[n].inputId + '><option value="pkcs10">PKCS#10</option><option value="crmf">CRMF</option></select>');
+ } else if (inputListSet[n].inputSyntax == 'dual_keygen_request') {
+ if (navigator.appName == "Microsoft Internet Explorer") {
+ document.writeln('<input type=hidden name=' + inputListSet[n].inputId + '>');
+ } else if (typeof(crypto) != "undefined" && typeof(crypto.version) != "undefined") {
+ document.write('<SELECT NAME="encKeyParam">'+keyLengthsCurvesOptions("encryption")+'</SELECT>');
+ document.write('<FONT size="-1" face="PrimaSans BT, Verdana, sans-serif">&nbsp;&nbsp;');
+ document.write(keyTypeOptions("encryption")+'&nbsp;&nbsp;(Encryption),&nbsp;&nbsp;</FONT>');
+ document.write('<SELECT NAME="signKeyParam">'+keyLengthsCurvesOptions("signing")+'</SELECT>');
+ document.write('<FONT size="-1" face="PrimaSans BT, Verdana, sans-serif">&nbsp;&nbsp;');
+ document.write(keyTypeOptions("signing")+'&nbsp;&nbsp;(Signing)</FONT>');
+ document.writeln('<input type=hidden name=cert_request value="">');
+ dual = 'true';
+ } else {
+ document.writeln('Not Supported<input type=hidden name=cert_request value="">');
+ }
+ } else if ((inputListSet[n].inputSyntax == 'keygen_request') ||
+ (inputListSet[n].inputSyntax == 'enc_keygen_request') ||
+ (inputListSet[n].inputSyntax == 'sign_keygen_request')) {
+ if (navigator.appName == "Microsoft Internet Explorer") {
+ document.writeln('<input type=hidden name=' + inputListSet[n].inputId + '>');
+ document.writeln('<SELECT NAME="keyLength">'+keyLengthsCurvesOptions("")+'</SELECT>&nbsp;&nbsp;<SELECT NAME=\"cryptprovider\"></SELECT>');
+ } else if (typeof(crypto) != "undefined" && typeof(crypto.version) != "undefined") {
+ document.write('<SELECT NAME="keyParam">'+keyLengthsCurvesOptions("")+'</SELECT>');
+ document.write('<FONT size="-1" face="PrimaSans BT, Verdana, sans-serif">');
+ document.write('&nbsp;&nbsp;&nbsp;'+keyTypeOptions("")+'&nbsp;&nbsp;');
+ if (inputListSet[n].inputSyntax == 'keygen_request') {
+ document.write('(Encryption and Signing)</FONT>');
+ } else if (inputListSet[n].inputSyntax == 'enc_keygen_request') {
+ document.write('(Encryption)</FONT>');
+ encryptionKeyOnly = 'true';
+ } else if (inputListSet[n].inputSyntax == 'sign_keygen_request') {
+ document.write('(Signing)</FONT>');
+ signingKeyOnly = 'true';
+ }
+ document.writeln('<input type=hidden name=cert_request value="">');
+ } else {
+ document.writeln('<KEYGEN name=' + inputListSet[n].inputId + '>');
+ }
+ } else if (inputListSet[n].inputSyntax == 'dual_keygen_request_type') {
+ keygen_request = 'true';
+ if (navigator.appName == "Microsoft Internet Explorer") {
+ document.writeln('Not Supported<input type=hidden name=' + inputListSet[n].inputId + ' value=>');
+ } else if (typeof(crypto) != "undefined" && typeof(crypto.version) != "undefined") {
+ document.writeln('<FONT size="-1" face="PrimaSans BT, Verdana, sans-serif">crmf</FONT><input type=hidden name=' + inputListSet[n].inputId + ' value=crmf>');
+ } else {
+ document.writeln('Not Supported<input type=hidden name=' + inputListSet[n].inputId + ' value=>');
+ }
+ } else if ((inputListSet[n].inputSyntax == 'keygen_request_type') ||
+ (inputListSet[n].inputSyntax == 'enc_keygen_request_type') ||
+ (inputListSet[n].inputSyntax == 'sign_keygen_request_type')) {
+ keygen_request = 'true';
+ if (navigator.appName == "Microsoft Internet Explorer") {
+ document.writeln('<FONT size="-1" face="PrimaSans BT, Verdana, sans-serif">pkcs10</FONT><input type=hidden name=' + inputListSet[n].inputId + ' value=pkcs10>');
+ } else if (typeof(crypto) != "undefined" && typeof(crypto.version) != "undefined") {
+ document.writeln('<FONT size="-1" face="PrimaSans BT, Verdana, sans-serif">crmf</FONT><input type=hidden name=' + inputListSet[n].inputId + ' value=crmf>');
+ } else {
+ document.writeln('keygen<input type=hidden name=' + inputListSet[n].inputId + ' value=keygen>');
+ }
+ }
+ document.writeln('</td>');
+ document.writeln('</tr>');
+ }
+}
+document.writeln('</table>');
+document.writeln('<p>');
+document.writeln('<input type=hidden name=profileId value="' +
+ profileId + '">');
+document.writeln('<input type=hidden name=renewal value="' +
+ renewal + '">');
+document.writeln('<input type=hidden name=xmlOutput value="' +
+ xmlOutput + '">');
+} else {
+ document.write('Sorry, your request is not submitted. The error code is "' + errorReason + '".');
+}
+</script>
+<p>
+<p>
+<script language=javascript>
+if (errorCode == 0) {
+ if (navigator.appName == "Microsoft Internet Explorer") {
+ if (typeof(keygen_request) != "undefined") {
+ document.writeln('<input type=submit value="Submit">');
+ } else {
+ document.writeln('<input type=submit value="Submit">');
+ }
+ } else if (typeof(crypto) != "undefined" && typeof(crypto.version) != "undefined") {
+ document.writeln('<input type=submit value="Submit">');
+ } else {
+ document.writeln('<input type=submit value="Submit">');
+ }
+} else {
+}
+
+</script>
+<SCRIPT LANGUAGE=VBS>
+<!--
+FindProviders
+
+Function FindProviders
+ Dim i, j
+ Dim providers()
+ i = 0
+ j = 1
+ Dim el
+ Dim temp
+ Dim first
+ Dim firstE
+ Dim firstS
+ Dim TheForm
+ Set TheForm = document.ReqForm
+ On Error Resume Next
+ first = 0
+
+ Dim osVersion
+ Dim result
+ osVersion = GetOSVersion()
+
+ If osVersion <> 6 Then 'Not Vista
+ Do While True
+ temp = ""
+ Enroll.providerType = j
+ temp = Enroll.enumProviders(i,0)
+ If Len(temp) = 0 Then
+ If j < 1 Then
+ j = j + 1
+ i = 0
+ Else
+ Exit Do
+ End If
+ Else
+ set el = document.createElement("OPTION")
+ el.text = temp
+ el.value = j
+ If temp = "Microsoft Base Cryptographic Provider v1.0" Then
+ first = i
+ End If
+ If temp = "Microsoft Strong Cryptographic Provider" Then
+ firstS = i
+ End If
+ If temp = "Microsoft Enhanced Cryptographic Provider v1.0" Then
+ firstE = i
+ End If
+ TheForm.cryptprovider.add(el)
+ If firstE > 0 Then
+ TheForm.cryptprovider.selectedIndex = firstE
+ ElseIf firstS > 0 Then
+ TheForm.cryptprovider.selectedIndex = firstS
+ ElseIf first > 0 Then
+ TheForm.cryptprovider.selectedIndex = first
+ Else
+ first = 1
+ TheForm.cryptprovider.selectedIndex = 0
+ End If
+ i = i + 1
+ End If
+ Loop
+ Else 'Vista
+ Dim csps
+ Set csps = g_objClassFactory.CreateObject("X509Enrollment.CCspInformations")
+ If IsObject(csps) = False Then
+ result = MsgBox("Can't create CSP List Object! " & " Error: " & Err.number & " :" & Err.description,0,"")
+ Exit Function
+
+ End If
+ csps.AddAvailableCsps()
+ 'result = MsgBox(csps.Count,0,"Number of CSPS")
+
+ Dim curName
+ Dim csp
+ Dim selected
+ Dim selectedS
+ Dim selectedE
+ Dim selectedEC
+ selected = -1
+ selectedS = -1
+ selectedE = -1
+ selectedEC = -1
+ For i = 0 to csps.Count-1
+
+ curName = csps.ItemByIndex(i).Name
+ If len(curName) > 0 Then
+ Set csp = document.createElement("OPTION")
+ csp.text = curName
+ csp.value = 1
+ TheForm.cryptprovider.add(csp)
+
+ If curName = "Microsoft Base Cryptographic Provider v1.0" Then
+ selected = i
+ End If
+ If curName = "Microsoft Strong Cryptographic Provider" Then
+ selectedS = i
+ End If
+ If curName = "Microsoft Enhanced Cryptographic Provider v1.0" Then
+ selectedE = i
+ End If
+ If curName = "Microsoft Software Key Storage Provider" Then
+ selectedEC = i
+ End If
+ 'result = MsgBox(curName,0,"")
+ End If
+ Next
+ If selectedEC >= 0 Then
+ TheForm.cryptprovider.selectedIndex = selectedEC
+ ElseIf selectedE >= 0 Then
+ TheForm.cryptprovider.selectedIndex = selectedE
+ ElseIf selectedS >= 0 Then
+ TheForm.cryptprovider.selectedIndex = selectedS
+ ElseIf selected >= 0 Then
+ TheForm.cryptprovider.selectedIndex = selected
+ Else
+ TheForm.cryptprovider.selectedIndex = 0
+ End If
+ End If
+End Function
+
+-->
+</SCRIPT>
+</form>
+</html>