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; }