summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--etc/inc/certs.inc11
-rw-r--r--usr/local/www/system_certmanager.php8
2 files changed, 19 insertions, 0 deletions
diff --git a/etc/inc/certs.inc b/etc/inc/certs.inc
index 50ce0ad..ec3227d 100644
--- a/etc/inc/certs.inc
+++ b/etc/inc/certs.inc
@@ -458,6 +458,17 @@ function cert_get_modulus($str_crt, $decode = true, $type = "crt"){
function csr_get_modulus($str_crt, $decode = true){
return cert_get_modulus($str_crt, $decode, "csr");
}
+
+function cert_get_purpose($str_crt, $decode = true) {
+ if ($decode)
+ $str_crt = base64_decode($str_crt);
+ $crt_details = openssl_x509_parse($str_crt);
+ $purpose = array();
+ $purpose['ca'] = (stristr($crt_details['extensions']['basicConstraints'], 'CA:TRUE') === false) ? 'No': 'Yes';
+ $purpose['server'] = ($crt_details['extensions']['nsCertType'] == "SSL Server") ? 'Yes': 'No';
+ return $purpose;
+}
+
function prv_get_modulus($str_crt, $decode = true){
return cert_get_modulus($str_crt, $decode, "prv");
}
diff --git a/usr/local/www/system_certmanager.php b/usr/local/www/system_certmanager.php
index 54e9b8d..06a7a59 100644
--- a/usr/local/www/system_certmanager.php
+++ b/usr/local/www/system_certmanager.php
@@ -887,6 +887,7 @@ function internalca_change() {
if ($cert['crt']) {
$subj = cert_get_subject($cert['crt']);
$issuer = cert_get_issuer($cert['crt']);
+ $purpose = cert_get_purpose($cert['crt']);
if($subj==$issuer)
$caname = "<em>" . gettext("self-signed") . "</em>";
else
@@ -919,9 +920,16 @@ function internalca_change() {
<?=$name;?>
</td>
</tr>
+ <tr><td>&nbsp;</td></tr>
<?php if ($cert['type']): ?>
<tr><td colspan="2"><em><?php echo $cert_types[$cert['type']]; ?></em></td></tr>
<?php endif; ?>
+ <?php if (is_array($purpose)): ?>
+ <tr><td colspan="2">
+ CA: <?php echo $purpose['ca']; ?>,
+ Server: <?php echo $purpose['server']; ?>
+ </td></tr>
+ <?php endif; ?>
</table>
</td>
<td class="listr"><?=$caname;?>&nbsp;</td>
OpenPOWER on IntegriCloud