static function staticGet509XInfo($certs, $isPEMFormat = TRUE) { if ($isPEMFormat) { $beginCertificate = '-----BEGIN CERTIFICATE-----'; $endCertificate = '-----END CERTIFICATE-----'; $data = ''; $certlist = array(); $arCert = explode("\n", $certs); $inData = FALSE; $i = 0; foreach ($arCert as $curData) { if (!$inData) { if (strncmp($curData, $beginCertificate, 27) === 0) { $inData = true; } } else { if (strncmp($curData, $endCertificate, 25) === 0) { $inData = false; $certlist[$i]['Certificate'] = $data; $data = ''; $i++; continue; } $data .= trim($curData) . PHP_EOL; } if (strncmp($curData, 'issuer=', 7) == 0) { $issuerData = str_replace('issuer=', '', trim($curData)); $issuerTmp = explode('/', $issuerData); $issuer = ''; krsort($issuerTmp); foreach ($issuerTmp as $issuerValue) { if (!empty($issuerValue)) { $issuer .= $issuerValue . ','; } } $issuerLen = strlen($issuer); $issuer = substr($issuer, 0, $issuerLen - 1); $certlist[$i]['z_IssuerName'] = $issuer; } if (strncmp($curData, 'subject=', 7) == 0) { $issuerData = str_replace('subject=', '', trim($curData)); $issuerTmp = explode('/', $issuerData); $issuer = ''; krsort($issuerTmp); foreach ($issuerTmp as $issuerValue) { if (!empty($issuerValue)) { $issuer .= $issuerValue . ','; } } $issuerLen = strlen($issuer); $issuer = substr($issuer, 0, $issuerLen - 1); $certlist[$i]['SubjectName'] = $issuer; } } foreach ($certlist as $key => $certificateData) { if (empty($certificateData['Certificate'])) { unset($certlist[$key]); continue; } $certicate = $beginCertificate . PHP_EOL . $certificateData['Certificate'] . $endCertificate; $objX509 = new X509(); $cert = $objX509->loadX509($certicate); $certlist[$key]['z_SerialNumber'] = $cert['tbsCertificate']['serialNumber']->toString(); ksort($certlist[$key]); $certlist[$key]['IssuerName'] = $certlist[$key]['z_IssuerName']; $certlist[$key]['SerialNumber'] = $certlist[$key]['z_SerialNumber']; unset($certlist[$key]['z_IssuerName']); unset($certlist[$key]['z_SerialNumber']); } return $certlist; } else { return array($certs); } }