示例#1
0
 private function _addCertificateMetaData(&$parsedMetaData)
 {
     $encryptionEnabled = $this->_config->getBoolean('encryption.enable');
     $certKeys = array('keys:0:', 'keys:1:', 'keys:2:', 'keys:3:', 'keys:4:', 'keys:5:', 'keys:6:', 'keys:7:', 'keys:8:');
     $certDataKeys = array('certData', 'certData2', 'certData3');
     $certificates = array();
     foreach ($certKeys as $certKey) {
         if (!isset($parsedMetaData[$certKey . 'X509Certificate'])) {
             continue;
         }
         // Skip encryption keys (key with no signing use) if we don't support encryption usage.
         if (!$parsedMetaData[$certKey . 'signing'] && !$encryptionEnabled) {
             continue;
         }
         $certData = $parsedMetaData[$certKey . 'X509Certificate'];
         /*
          * We don't want an empty certData if keys:0 is an encryption key and encryption is not enabled. So we
          * ensure that we fill the $certDataKeys in the right order.
          */
         foreach ($certDataKeys as $certDataKey) {
             if (!isset($certificates[$certDataKey])) {
                 $certificates[$certDataKey] = str_replace(array(" ", "\r\n", "\n", "\r", "\t", "\t"), '', $certData);
                 if (!$this->_validatePublicCertificate($certificates[$certDataKey])) {
                     return 'error_not_valid_certData';
                 }
                 break;
             }
         }
     }
     foreach ($certDataKeys as $certDataKey) {
         if (!isset($certificates[$certDataKey]) && $this->_entityController->hasMetadata($certDataKey)) {
             $this->_entityController->removeMetadata($certDataKey);
             $this->_updated = true;
         }
     }
     $parsedMetaData = array_merge($parsedMetaData, array_unique($certificates));
     return false;
 }