private CertificateProfile profile = CertificateProfile.getById(1);
+ private String ou = "";
+
+ private Organisation org = null;
+
public CertificateIssueForm(HttpServletRequest hsr) {
super(hsr);
u = Page.getUser(hsr);
return result;
}
+ public static String escapeAVA(String value) {
+
+ return value.replace("\\", "\\\\").replace("/", "\\/");
+ }
+
@Override
public boolean submit(PrintWriter out, HttpServletRequest req) {
String csr = req.getParameter("CSR");
selectedDigest = Digest.valueOf(hashAlg);
}
profile = CertificateProfile.getByName(req.getParameter("profile"));
+ Organisation neworg = Organisation.getById(Integer.parseInt(req.getParameter("org")));
+ if (neworg == null || u.getOrganisations().contains(neworg)) {
+ org = neworg;
+ } else {
+ outputError(out, req, "Selected Organisation is not part of your account.");
+ }
+ ou = req.getParameter("OU");
if ( !u.canIssue(profile)) {
profile = CertificateProfile.getById(1);
outputError(out, req, "Certificate Profile is invalid.");
final StringBuffer subject = new StringBuffer();
if (server && pDNS != null) {
subject.append("/commonName=");
- subject.append(pDNS);
+ subject.append(escapeAVA(pDNS));
if (pMail != null) {
outputError(out, req, "No email is included in this certificate.");
}
}
} else {
subject.append("/commonName=");
- subject.append(CN);
+ subject.append(escapeAVA(CN));
if (pMail != null) {
subject.append("/emailAddress=");
- subject.append(pMail);
+ subject.append(escapeAVA(pMail));
}
}
+ if (org != null) {
+ subject.append("/O=");
+ subject.append(escapeAVA(org.getName()));
+ subject.append("/C=");
+ subject.append(escapeAVA(org.getState()));
+ subject.append("/ST=");
+ subject.append(escapeAVA(org.getProvince()));
+ subject.append("/L=");
+ subject.append(escapeAVA(org.getCity()));
+ subject.append("/OU=");
+ subject.append(escapeAVA(ou));
+ }
if (req.getParameter("CCA") == null) {
outputError(out, req, "You need to accept the CCA.");
}
}
vars2.put("CN", CN);
+ vars2.put("department", ou);
vars2.put("validity", issueDate);
vars2.put("emails", content.toString());
vars2.put("hashs", new HashAlgorithms(selectedDigest));
Organisation orga = iter.next();
vars.put("key", orga.getId());
vars.put("name", orga.getName());
+ if (orga == org) {
+ vars.put("selected", " selected");
+ } else {
+ vars.put("selected", "");
+ }
return true;
}
});
<td><select name="org" id='org'>
<option value="-1"><?=_(none)?></option>
<? foreach($orga) { ?>
- <option value="<?=$key?>"><?=$name?></option>
+ <option value="<?=$key?>"<?=$!selected?>><?=$name?></option>
<? } ?>
</select></td>
</tr>
<td>
<label for='CN'><?=_Your name?></label>
</td>
- <td><input type='text' id='CN' name='CN' value='<?=$CN?>'></td>
+ <td><input type='text' id='CN' name='CN' value='<?=$CN?>'/></td>
</tr>
<tr>
<td>SANs</td>
<? if($orga) { ?>
<tr>
<td><?=_Departement?></td>
- <td align="left"><input type='text' name='OU'/></td>
+ <td align="left"><input type='text' name='OU' value='<?=$department?>'/></td>
</tr>
<? } ?>
<tr class="expertoff">