All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.mosip.authentication.common.service.impl.patrner.PartnerCACertEventServiceImpl Maven / Gradle / Ivy

package io.mosip.authentication.common.service.impl.patrner;

import java.util.Map;

import org.apache.commons.lang.exception.ExceptionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import io.mosip.authentication.common.service.integration.DataShareManager;
import io.mosip.authentication.common.service.spi.websub.PartnerCACertEventService;
import io.mosip.authentication.core.constant.IdAuthenticationErrorConstants;
import io.mosip.authentication.core.exception.IdAuthenticationBusinessException;
import io.mosip.authentication.core.logger.IdaLogger;
import io.mosip.idrepository.core.exception.RestServiceException;
import io.mosip.kernel.core.logger.spi.Logger;
import io.mosip.kernel.core.websub.model.EventModel;
import io.mosip.kernel.partnercertservice.dto.CACertificateRequestDto;
import io.mosip.kernel.partnercertservice.service.spi.PartnerCertificateManagerService;

/**
 * The Class PartnerCACertEventServiceImpl.
 * 
 * @author Loganathan Sekar
 */
@Service
public class PartnerCACertEventServiceImpl implements PartnerCACertEventService {

	/** The Constant CERTIFICATE_DATA_SHARE_URL. */
	private static final String CERTIFICATE_DATA_SHARE_URL = "certChainDatashareUrl";
	
	/** The Constant PARTNER_DOMAIN. */
	private static final String PARTNER_DOMAIN = "partnerDomain";
	
	/** The logger. */
	private static Logger logger = IdaLogger.getLogger(PartnerCACertEventServiceImpl.class);

	/** The data share manager. */
	@Autowired(required = false)
	private DataShareManager dataShareManager;
	
	/** The partner cert manager. */
	@Autowired
	private PartnerCertificateManagerService partnerCertManager;
	
	/** The decrypt ca cert from data share. */
	@Value("${ida-decrypt-ca-cert-data-share-content:false}")
	private boolean decryptCaCertFromDataShare;
	
	/**
	 * Handle CA cert event.
	 *
	 * @param eventModel the event model
	 * @throws RestServiceException the rest service exception
	 * @throws IdAuthenticationBusinessException the id authentication business exception
	 */
	@Override
	public void handleCACertEvent(EventModel eventModel)
			throws RestServiceException, IdAuthenticationBusinessException {
		Map data = eventModel.getEvent().getData();
		CACertificateRequestDto caCertRequestDto = new CACertificateRequestDto();
		if (data.containsKey(CERTIFICATE_DATA_SHARE_URL) && data.get(CERTIFICATE_DATA_SHARE_URL) instanceof String) {
			String certificateDataShareUrl = (String) data.get(CERTIFICATE_DATA_SHARE_URL);
			caCertRequestDto.setCertificateData(downloadCertificate(certificateDataShareUrl));
		}
		if (data.containsKey(PARTNER_DOMAIN) && data.get(PARTNER_DOMAIN) instanceof String) {
			String partnerDomain = (String) data.get(PARTNER_DOMAIN);
			caCertRequestDto.setPartnerDomain(partnerDomain);
		}
		partnerCertManager.uploadCACertificate(caCertRequestDto);
	}

	/**
	 * Download certificate.
	 *
	 * @param certificateDataShareUrl the certificate data share url
	 * @return the string
	 * @throws RestServiceException the rest service exception
	 * @throws IdAuthenticationBusinessException the id authentication business exception
	 */
	private String downloadCertificate(String certificateDataShareUrl)
			throws RestServiceException, IdAuthenticationBusinessException {
		try {
			return dataShareManager.downloadObject(certificateDataShareUrl, String.class,
					decryptCaCertFromDataShare);
		} catch (RestServiceException e) {
			logger.error("Error occured while downloading certificate from datashare : \n {}",
					e.getResponseBodyAsString());
			throw new IdAuthenticationBusinessException(IdAuthenticationErrorConstants.UNABLE_TO_PROCESS, e);
		} catch (IdAuthenticationBusinessException e) {
			logger.error("Error occured while downloading certificate from datashare : \n {}",
					ExceptionUtils.getStackTrace(e));
			throw e;
		}
	}

	@Override
	public void evictCACertCache(EventModel eventModel) throws RestServiceException, IdAuthenticationBusinessException {
		Map data = eventModel.getEvent().getData();
		if (data.containsKey(PARTNER_DOMAIN) && data.get(PARTNER_DOMAIN) instanceof String) {
			String partnerDomain = (String) data.get(PARTNER_DOMAIN);
			partnerCertManager.purgeTrustStoreCache(partnerDomain);
		}		
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy