/**
  * Get signature data from a single signature container.
  *
  * @param string $signature
  * @return array
  * @throws SetaPDF_Signer_Asn1_Exception
  */
 private static function _getSignatureData($signature)
 {
     $data = array('certificates' => array(), 'signerCertificate' => null, 'subject' => null, 'MIDSN' => null);
     $asn1 = SetaPDF_Signer_Asn1_Element::parse($signature);
     $certificates = SetaPDF_Signer_Asn1_Element::findByPath('1/0/3', $asn1);
     $certificates = $certificates->getChildren();
     $lastValidToTime = PHP_INT_MAX;
     for ($no = 0; $no < count($certificates); $no++) {
         $certificate = $certificates[$no];
         $certificate = $certificate->__toString();
         $certificate = "-----BEGIN CERTIFICATE-----\n" . chunk_split(base64_encode($certificate)) . "-----END CERTIFICATE-----";
         $certificateInfo = openssl_x509_parse($certificate);
         $data['certificates'][] = $certificateInfo;
         if (isset($certificateInfo['validTo_time_t']) && $certificateInfo['validTo_time_t'] <= $lastValidToTime) {
             $lastValidToTime = $certificateInfo['validTo_time_t'];
             $data['signerCertificate'] = $certificateInfo;
         }
     }
     $data['subject'] = $data['signerCertificate']['name'];
     // extract MIDSN
     if (isset($data['signerCertificate']['extensions']['subjectAltName'])) {
         $subjectAltName = $data['signerCertificate']['extensions']['subjectAltName'];
         // Format: 'DirName: serialNumber = ID-16981fa2-8998-4125-9a93-5fecbff74515, name = "+41798...", description = test.ch: Signer le document?, pseudonym = MIDCHEGU8GSH6K83'
         if (preg_match("/pseudonym = ([^,]*)/", $subjectAltName, $match)) {
             $data['MIDSN'] = $match[1];
         }
     }
     return $data;
 }
 /**
  * Encapsulates an OCSP response value in a response envelope.
  *
  * @param string $encoded
  * @return string
  * @throws SetaPDF_Signer_Asn1_Exception
  */
 protected function _prepareOscpResponse($encoded)
 {
     $main = SetaPDF_Signer_Asn1_Element::parse($encoded);
     $final = new SetaPDF_Signer_Asn1_Element(SetaPDF_Signer_Asn1_Element::SEQUENCE, '', array(new SetaPDF_Signer_Asn1_Element(SetaPDF_Signer_Asn1_Element::ENUMERATED, ""), new SetaPDF_Signer_Asn1_Element(SetaPDF_Signer_Asn1_Element::SEQUENCE | SetaPDF_Signer_Asn1_Element::TAG_CLASS_CONTEXT_SPECIFIC, '', array(new SetaPDF_Signer_Asn1_Element(SetaPDF_Signer_Asn1_Element::SEQUENCE, '', array(new SetaPDF_Signer_Asn1_Element(SetaPDF_Signer_Asn1_Element::OBJECT_IDENTIFIER, SetaPDF_Signer_Asn1_Oid::encode('1.3.6.1.5.5.7.48.1.1')), new SetaPDF_Signer_Asn1_Element(SetaPDF_Signer_Asn1_Element::OCTET_STRING, $main)))))));
     return (string) $final;
 }