package ee.sk.hwcrypto.demo.signature; import eu.europa.ec.markt.dss.ws.signature.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; @Service public class SignatureServiceConnector { private static final Logger log = LoggerFactory.getLogger(SignatureServiceConnector.class); @Value("${dss.service.url}") private String dssServiceUrl; @PostConstruct public void initService() { log.info("DSS service url is " + dssServiceUrl); } public byte[] getDataToSign(WsDocument wsDocument, WsParameters wsParameters) throws GettingDataToSignException { log.debug("Getting data to sign from " + dssServiceUrl); try { SignatureService_Service.setROOT_SERVICE_URL(dssServiceUrl); SignatureService_Service signatureService_service = new SignatureService_Service(); SignatureService signatureServiceImplPort = signatureService_service.getSignatureServiceImplPort(); return signatureServiceImplPort.getDataToSign(wsDocument, wsParameters); } catch (DSSException_Exception e) { log.error("Failed to get data for signing from DSS Web Service",e); throw new GettingDataToSignException(); } } public WsDocument signDocument(WsDocument document, WsParameters parameters, byte[] signature) throws SigningFailedException { log.debug("Signing document at " + dssServiceUrl); try { SignatureService_Service.setROOT_SERVICE_URL(dssServiceUrl); SignatureService_Service signatureService_service = new SignatureService_Service(); SignatureService signatureServiceImplPort = signatureService_service.getSignatureServiceImplPort(); return signatureServiceImplPort.signDocument(document, parameters, signature); } catch (DSSException_Exception e) { log.error("Failed to sign document in DSS Web Service", e); throw new SigningFailedException(); } } public static class GettingDataToSignException extends RuntimeException { } public static class SigningFailedException extends RuntimeException { } }