diff options
Diffstat (limited to 'id/server/idserverlib/src')
| -rw-r--r-- | id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java | 21 | 
1 files changed, 11 insertions, 10 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java index 41be2c7e3..f98e5c97b 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java @@ -30,6 +30,7 @@ import java.net.URL;  import java.util.ArrayList;
  import java.util.List;
 +import javax.activation.DataSource;
  import javax.servlet.ServletException;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
 @@ -66,6 +67,8 @@ import at.gv.egovernment.moa.util.StringUtils;  import at.gv.util.xsd.xmldsig.SignatureType;
  import at.gv.util.xsd.xmldsig.X509DataType;
  import eu.stork.oasisdss.api.ApiUtils;
 +import eu.stork.oasisdss.api.LightweightSourceResolver;
 +import eu.stork.oasisdss.api.exceptions.ApiUtilsException;
  import eu.stork.oasisdss.profile.DocumentWithSignature;
  import eu.stork.oasisdss.profile.SignResponse;
  import eu.stork.peps.auth.commons.PEPSUtil;
 @@ -202,17 +205,15 @@ public class PEPSConnectorServlet extends AuthServlet {  				String signatureInfo = authnResponse.getPersonalAttributeList().get("signedDoc").getValue().get(0);
  				SignResponse dssSignResponse = (SignResponse) ApiUtils.unmarshal(new StreamSource(new java.io.StringReader(signatureInfo)));
 -				List<DocumentWithSignature> doclocations = ApiUtils.findNamedElement(dssSignResponse.getOptionalOutputs(), DocumentWithSignature.class.getSimpleName(), DocumentWithSignature.class);
 -				// TODO handle multiple docs?
 -				Logger.debug("trying first doclocation");
 -				String docUrl = doclocations.get(0).getDocument().getDocumentURL();
 -				Logger.debug("trying first doclocation successful");
 -				
  				// fetch signed doc
 -				URL url = new URL(docUrl);
 -				InputStream incomming = url.openStream();
 -				citizenSignature = IOUtils.toString(incomming);
 -				incomming.close();
 +				DataSource ds = LightweightSourceResolver.getDataSource(dssSignResponse);
 +				if(ds == null){
 +					throw new ApiUtilsException("No datasource found in response");
 +				}				
 +				
 +				InputStream incoming  = ds.getInputStream();
 +				citizenSignature = IOUtils.toString(incoming);
 +				incoming.close();
  				JAXBContext ctx = JAXBContext.newInstance(SignatureType.class.getPackage().getName());
  				SignatureType root = ((JAXBElement<SignatureType>) ctx.createUnmarshaller().unmarshal(IOUtils.toInputStream(citizenSignature))).getValue();
 | 
