$v) { if ($c++) $s .= ','; $s .= sprintf('%s=%s',$k,$v); } return $s; } public static function dnissuer($cert) { if (! $cert) return ''; $s = ''; $c = 0; foreach (static::details($cert,'issuer') as $k=>$v) { if ($c++) $s .= ','; $s .= sprintf('%s=%s',$k,$v); } return $s; } public static function issuer($cert) { $k = static::details($cert,'issuer'); return $k['CN']; } public static function from($cert,$format=FALSE) { $k = static::details($cert,'validFrom_time_t'); return $format ? Config::date($k) : $k; } public static function expire($key,$format=FALSE) { $k = static::details($key,'validTo_time_t'); return $format ? Config::date($k) : $k; } public static function extensions($cert,$key=NULL) { $k = static::details($cert,'extensions'); return is_null($key) ? $k : $k[$key]; } public static function hash($key) { return static::details($key,'hash'); } public static function serial($key) { return static::dec_to_hex(static::details($key,'serialNumber')); } public static function subject($key) { $k = static::details($key,'subject'); return $k['CN']; } public static function ski($key) { return static::extensions($key,'subjectKeyIdentifier'); } public static function version($key) { return static::details($key,'version'); } public static function csrsubject($csr) { $c = openssl_csr_get_subject($csr); return $c['CN']; } private static function dec_to_hex($number) { $hex = array(); if ($number == 0) return '00'; while ($number > 0) { if ($number == 0) { array_push($hex, '0'); } else { $x = (int) ($number/16); array_push($hex,strtoupper(dechex((int)($number-($x*16))))); $number = $x; } } return preg_replace('/^:/','',preg_replace('/(..)/',":$1",implode(array_reverse($hex)))); } } ?>