From 53ae98cdfa510650c1e015efd0d11a96ad4dc87a Mon Sep 17 00:00:00 2001 From: Andreas Fitzek Date: Mon, 20 Jun 2016 12:45:07 +0200 Subject: ASiC Library added --- .../webservice/binding/TransformerUtils.java | 521 --------------------- 1 file changed, 521 deletions(-) delete mode 100644 moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/TransformerUtils.java (limited to 'moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/TransformerUtils.java') diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/TransformerUtils.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/TransformerUtils.java deleted file mode 100644 index 676c95c..0000000 --- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/TransformerUtils.java +++ /dev/null @@ -1,521 +0,0 @@ -package at.gv.egovernment.moa.spss.server.webservice.binding; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.security.cert.CertificateEncodingException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import javax.xml.bind.JAXBElement; - -import org.w3c.dom.Element; -import org.w3c.dom.Node; - -import at.gv.egiz.moasig.MetaInfoType; -import at.gv.egiz.moasig.PublicAuthorityType; -import at.gv.egiz.moasig.QualifiedCertificate; -import at.gv.egiz.moasig.SecureSignatureCreationDevice; -import at.gv.egovernment.moa.spss.MOAApplicationException; -import at.gv.egovernment.moa.spss.api.SPSSFactory; -import at.gv.egovernment.moa.spss.api.cmsverify.CMSContent; -import at.gv.egovernment.moa.spss.api.cmsverify.CMSDataObject; -import at.gv.egovernment.moa.spss.api.common.Content; -import at.gv.egovernment.moa.spss.api.common.MetaInfo; -import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation; -import at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureEnvironmentProfile; -import at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureInfo; -import at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureLocation; -import at.gv.egovernment.moa.spss.api.xmlsign.CreateTransformsInfo; -import at.gv.egovernment.moa.spss.api.xmlsign.CreateTransformsInfoProfile; -import at.gv.egovernment.moa.spss.api.xmlsign.DataObjectInfo; -import at.gv.egovernment.moa.spss.api.xmlsign.SingleSignatureInfo; -import iaik.utils.RFC2253NameParser; -import iaik.utils.RFC2253NameParserException; - -public class TransformerUtils { - - /** The factory to create API objects. */ - private SPSSFactory factory; - - /** - * Create a new CreateXMLSignatureRequestParser. - */ - public TransformerUtils() { - this.factory = SPSSFactory.getInstance(); - } - - public SingleSignatureInfo buildSingleSignatureInfo( - at.gv.egiz.moasig.CreateXMLSignatureRequestType.SingleSignatureInfo singleSignatureInfo) - throws MOAApplicationException { - - List dataObjectInfos = new ArrayList(); - - Iterator dataObjectInfoIterator = singleSignatureInfo - .getDataObjectInfo().iterator(); - - while (dataObjectInfoIterator.hasNext()) { - dataObjectInfos.add(buildDataObjectInfo(dataObjectInfoIterator.next())); - } - - at.gv.egiz.moasig.CreateXMLSignatureRequestType.SingleSignatureInfo.CreateSignatureInfo createSignatureInfoWeb = singleSignatureInfo - .getCreateSignatureInfo(); - - CreateSignatureInfo createSignatureInfo = buildCreateSignatureInfo(createSignatureInfoWeb); - - boolean securityLayerConform = singleSignatureInfo.isSecurityLayerConformity(); - - return factory.createSingleSignatureInfo(dataObjectInfos, createSignatureInfo, securityLayerConform); - } - - public DataObjectInfo buildDataObjectInfo( - at.gv.egiz.moasig.CreateXMLSignatureRequestType.SingleSignatureInfo.DataObjectInfo dataObjectInfo) - throws MOAApplicationException { - String structure = dataObjectInfo.getStructure(); - boolean childOfManifest = dataObjectInfo.isChildOfManifest(); - - Content dataObject = buildContent(dataObjectInfo.getDataObject()); - - CreateTransformsInfoProfile createTransformsInfoProfile = parseCreateTransformsInfoProfile( - dataObjectInfo.getCreateTransformsInfoProfile()); - - return factory.createDataObjectInfo(structure, childOfManifest, dataObject, createTransformsInfoProfile); - } - - public CreateSignatureInfo buildCreateSignatureInfo( - at.gv.egiz.moasig.CreateXMLSignatureRequestType.SingleSignatureInfo.CreateSignatureInfo createSignatureInfo) - throws MOAApplicationException { - if (createSignatureInfo == null) { - return null; - } else { - Content environment = buildContent(createSignatureInfo.getCreateSignatureEnvironment()); - CreateSignatureEnvironmentProfile environmentProfile = parseCreateSignatureEnvironmentProfile( - createSignatureInfo); - return factory.createCreateSignatureInfo(environment, environmentProfile); - } - } - - public CreateSignatureEnvironmentProfile parseCreateSignatureEnvironmentProfile( - at.gv.egiz.moasig.CreateXMLSignatureRequestType.SingleSignatureInfo.CreateSignatureInfo createSignatureInfo) - throws MOAApplicationException { - if (createSignatureInfo.getCreateSignatureEnvironmentProfile() != null) { - return parseCreateSignatureEnvironmentProfile(createSignatureInfo.getCreateSignatureEnvironmentProfile()); - } else { - String profileID = createSignatureInfo.getCreateSignatureEnvironmentProfileID(); - return factory.createCreateSignatureEnvironmentProfile(profileID); - } - } - - public CreateTransformsInfoProfile parseCreateTransformsInfoProfile( - at.gv.egiz.moasig.CreateXMLSignatureRequestType.SingleSignatureInfo.DataObjectInfo dataObjectInfo) - throws MOAApplicationException { - if (dataObjectInfo.getCreateTransformsInfoProfile() != null) { - at.gv.egiz.moasig.CreateTransformsInfoProfile createTransformsInfoProfile = dataObjectInfo - .getCreateTransformsInfoProfile(); - return parseCreateTransformsInfoProfile(createTransformsInfoProfile); - } else { - String profileID = dataObjectInfo.getCreateTransformsInfoProfileID(); - return factory.createCreateTransformsInfoProfile(profileID); - } - } - - /** - * Parse a CreateTransformsInfoProfile DOM element. - * - * @param profileElem - * The CreateTransformsInfoProfile element to parse. - * @return The CreateTransformsInfoProfile API object - * containing the data from the profileElem. - * @throws MOAApplicationException - * An error occurred parsing the DOM element. - */ - public CreateTransformsInfoProfile parseCreateTransformsInfoProfile( - at.gv.egiz.moasig.CreateTransformsInfoProfile createTransformsInfoProfile) throws MOAApplicationException { - if(createTransformsInfoProfile == null) { - return null; - } - - CreateTransformsInfo createTransformsInfo = parseCreateTransformsInfo( - createTransformsInfoProfile.getCreateTransformsInfo()); - List supplements = parseSupplements(createTransformsInfoProfile.getSupplement()); - return factory.createCreateTransformsInfoProfile(createTransformsInfo, supplements); - } - - /** - * Parse a XMLDataObjectAssociationType kind of DOM element. - * - * @param assocElem - * The XMLDataObjectAssociationType kind of DOM - * elmeent to parse. - * @return The XMLDataObjectAssociation API object containing - * the data from the XMLDataObjectAssociationType DOM - * element. - * @throws MOAApplicationException - */ - public XMLDataObjectAssociation parseXMLDataObjectAssociation( - at.gv.egiz.moasig.XMLDataObjectAssociationType xmlDataObjectAssociationType) - throws MOAApplicationException { - - MetaInfo metaInfo = parseMetaInfo(xmlDataObjectAssociationType.getMetaInfo()); - - Content content = buildContent(xmlDataObjectAssociationType.getContent()); - - return factory.createXMLDataObjectAssociation(metaInfo, content); - } - - /** - * Parse a CreateSignatureEnvironmentProfile DOM element. - * - * @param profileElem - * The CreateSignatureEnvironmentProfile DOM element - * to parse. - * @return The CreateSignatureEnvironmentProfile API object - * containing the data from the profileElem. - * @throws MOAApplicationException - */ - public CreateSignatureEnvironmentProfile parseCreateSignatureEnvironmentProfile( - at.gv.egiz.moasig.CreateSignatureEnvironmentProfile createSignatureEnvironmentProfile) - throws MOAApplicationException { - - CreateSignatureLocation createSignatureLocation = parseCreateSignatureLocation( - createSignatureEnvironmentProfile.getCreateSignatureLocation()); - List supplements = parseSupplements(createSignatureEnvironmentProfile.getSupplement()); - - return factory.createCreateSignatureEnvironmentProfile(createSignatureLocation, supplements); - } - - /** - * Parse a CreateSignatureLocation DOM element contained in a - * CreateSignatureEnvironmentProfile. - * - * @param profileElem - * The CreateSignatureEnvironmentProfile DOM element - * containing the CreateSignatureLocation. - * @return The CreateSignatureLocation API object containing - * the data from the CreateSignatureLocation DOM - * element. - */ - private CreateSignatureLocation parseCreateSignatureLocation( - at.gv.egiz.moasig.CreateSignatureLocationType createSignatureLocationType) { - - String xPathExpression = createSignatureLocationType.getValue(); - Map namespaceDeclarations = new HashMap();// DOMUtils.getNamespaceDeclarations(locationElem); - int index = createSignatureLocationType.getIndex().intValue(); - // Integer.parseInt(indexStr); - - return factory.createCreateSignatureLocation(xPathExpression, index, namespaceDeclarations); - } - - /** - * Parse all Supplement DOM elements contained in a given - * parent DOM element. - * - * @param supplementsParentElem - * The DOM element being the parent of the - * Supplements. - * @return A List of Supplement API objects - * containing the data from the Supplement DOM - * elements. - * @throws MOAApplicationException - */ - private List parseSupplements(List supplementsList) - throws MOAApplicationException { - List supplements = new ArrayList(); - Iterator supplementsIterator = supplementsList.iterator(); - - while (supplementsIterator.hasNext()) { - at.gv.egiz.moasig.XMLDataObjectAssociationType xmlDataObjectAssociationType = supplementsIterator.next(); - XMLDataObjectAssociation supplement = parseXMLDataObjectAssociation(xmlDataObjectAssociationType); - supplements.add(supplement); - } - return supplements; - } - - /** - * Parse the CreateTransformsInfo DOM element contained in a - * CreateTransformsInfoProfile. - * - * @param profileElem - * The CreateTransformsInfoProfile DOM element - * containing the CreateTransformsInfo. - * @return The CreateTransformsInfo API object containinig the - * data from the CreateTransformsInfo DOM element. - * @throws MOAApplicationException - * An error occurred parsing the - * CreateTransformsInfo DOM element. - */ - public CreateTransformsInfo parseCreateTransformsInfo(at.gv.egiz.moasig.TransformsInfoType transformsInfoType) - throws MOAApplicationException { - MetaInfo finalDataMetaInfo = null; - List transforms = null; - if (transformsInfoType != null) { - if (transformsInfoType.getMoaTransforms() != null) { - if (transformsInfoType.getMoaTransforms() != null) { - // Transform Parser with MoaTransformsType - at.gv.egovernment.moa.spss.server.webservice.binding.TransformParser parser = new at.gv.egovernment.moa.spss.server.webservice.binding.TransformParser(); - transforms = parser.parseTransforms(transformsInfoType.getMoaTransforms()); - } - } - - finalDataMetaInfo = parseMetaInfo(transformsInfoType.getFinalDataMetaInfo()); - } - return factory.createCreateTransformsInfo(transforms, finalDataMetaInfo); - } - - public Content buildContent(at.gv.egiz.moasig.DataObjectInfoType.DataObject dataObject) - throws MOAApplicationException { - String referenceURI = dataObject.getReference(); - if (dataObject.getBase64Content() != null) { - return factory.createContent(new ByteArrayInputStream(dataObject.getBase64Content()), referenceURI); - } else if (dataObject.getLocRefContent() != null) { - String locationReferenceURI = dataObject.getLocRefContent(); - return factory.createContent(locationReferenceURI, referenceURI); - } else { - return factory.createContent(referenceURI); - } - } - - public Content buildContent(at.gv.egiz.moasig.ContentOptionalRefType contentBaseType) - throws MOAApplicationException { - - String referenceURI = contentBaseType.getReference(); - - if (contentBaseType.getBase64Content() != null) { - return factory.createContent(new ByteArrayInputStream(contentBaseType.getBase64Content()), referenceURI); - } else if (contentBaseType.getLocRefContent() != null) { - String locationReferenceURI = contentBaseType.getLocRefContent(); - return factory.createContent(locationReferenceURI, referenceURI); - } else { - return factory.createContent(referenceURI); - } - } - - public MetaInfo parseMetaInfo(at.gv.egiz.moasig.FinalDataMetaInfoType metaInfoElem) { - SPSSFactory factory = SPSSFactory.getInstance(); - - String mimeType = metaInfoElem.getMimeType(); - String description = metaInfoElem.getDescription(); - String type = metaInfoElem.getType(); - // TODO: any type not supported - - return factory.createMetaInfo(mimeType, description, null, type); - } - - public MetaInfo parseMetaInfo(at.gv.egiz.moasig.MetaInfoType metaInfoElem) { - SPSSFactory factory = SPSSFactory.getInstance(); - - String mimeType = metaInfoElem.getMimeType(); - String description = metaInfoElem.getDescription(); - // TODO: any and type not supported - - return factory.createMetaInfo(mimeType, description, null, null); - } - - public at.gv.egiz.moasig.KeyInfoType buildSignerInfo(at.gv.egovernment.moa.spss.api.common.SignerInfo signerInfo) - throws MOAApplicationException { - at.gv.egiz.moasig.KeyInfoType infoType = new at.gv.egiz.moasig.KeyInfoType(); - - at.gv.egiz.moasig.X509DataType x509DataType = new at.gv.egiz.moasig.X509DataType(); - - at.gv.egiz.moasig.ObjectFactory of = new at.gv.egiz.moasig.ObjectFactory(); - - // Set Issuer - - at.gv.egiz.moasig.X509IssuerSerialType x509IssuerSerialType = new at.gv.egiz.moasig.X509IssuerSerialType(); - - x509IssuerSerialType.setX509IssuerName(signerInfo.getSignerCertificate().getIssuerDN().getName()); - x509IssuerSerialType.setX509SerialNumber(signerInfo.getSignerCertificate().getSerialNumber()); - - x509DataType.getX509IssuerSerialOrX509SKIOrX509SubjectName() - .add(of.createX509DataTypeX509IssuerSerial(x509IssuerSerialType)); - - // Set Subject - try { - RFC2253NameParser parser = new RFC2253NameParser( - signerInfo.getSignerCertificate().getSubjectDN().getName()); - String subjectRfc2253 = parser.parse().getRFC2253String(); - x509DataType.getX509IssuerSerialOrX509SKIOrX509SubjectName() - .add(of.createX509DataTypeX509SubjectName(subjectRfc2253)); - } catch (RFC2253NameParserException e) { - x509DataType.getX509IssuerSerialOrX509SKIOrX509SubjectName().add( - of.createX509DataTypeX509SubjectName(signerInfo.getSignerCertificate().getSubjectDN().getName())); - } - - // Set Certificate - try { - x509DataType.getX509IssuerSerialOrX509SKIOrX509SubjectName() - .add(of.createX509DataTypeX509Certificate(signerInfo.getSignerCertificate().getEncoded())); - } catch (CertificateEncodingException e) { - throw new MOAApplicationException("2245", null, e); - } - - // Qualified Cert - - if (signerInfo.isQualifiedCertificate()) { - QualifiedCertificate qualifiedCertificate = of.createQualifiedCertificate(); - if ("TLS".compareToIgnoreCase(signerInfo.getQCSource()) == 0) { - qualifiedCertificate.setSource(signerInfo.getQCSource()); - } - x509DataType.getX509IssuerSerialOrX509SKIOrX509SubjectName().add(qualifiedCertificate); - } - - // Public Authority - - if (signerInfo.isPublicAuthority()) { - PublicAuthorityType publicAuthorityType = of.createPublicAuthorityType(); - - if (signerInfo.getPublicAuhtorityID() != null) { - publicAuthorityType.setCode(signerInfo.getPublicAuhtorityID()); - } - - JAXBElement publicAuthority = of.createPublicAuthority(publicAuthorityType); - x509DataType.getX509IssuerSerialOrX509SKIOrX509SubjectName().add(publicAuthority); - } - - // ssCD - - if (signerInfo.isSSCD()) { - SecureSignatureCreationDevice sscd = of.createSecureSignatureCreationDevice(); - sscd.setSource(signerInfo.getSSCDSource()); - x509DataType.getX509IssuerSerialOrX509SKIOrX509SubjectName().add(sscd); - } - - if (signerInfo.getIssuerCountryCode() != null) { - x509DataType.getX509IssuerSerialOrX509SKIOrX509SubjectName() - .add(of.createIssuingCountry(signerInfo.getIssuerCountryCode())); - } - - return infoType; - } - - public at.gv.egiz.moasig.CheckResultType buildCheckResult( - at.gv.egovernment.moa.spss.api.common.CheckResult checkResult) { - at.gv.egiz.moasig.CheckResultType checkResultType = new at.gv.egiz.moasig.CheckResultType(); - checkResultType.setCode(BigInteger.valueOf(checkResult.getCode())); - - if (checkResult.getInfo() != null) { - at.gv.egiz.moasig.AnyChildrenType anyInfos = new at.gv.egiz.moasig.AnyChildrenType(); - - for (int idx = 0; idx < checkResult.getInfo().getLength(); idx++) { - Node node = checkResult.getInfo().item(idx); - if (node instanceof Element) { - anyInfos.getContent().add((Element) node); - } - } - - checkResultType.setInfo(anyInfos); - } - return checkResultType; - } - - /** - * Parse a the DataObject DOM element contained in a given - * VerifyCMSSignatureRequest DOM element. - * - * @param requestElem - * The VerifyCMSSignatureRequest DOM element to - * parse. - * @return The CMSDataObject API object containing the data - * from the DataObject DOM element. - */ - public CMSDataObject parseDataObject(at.gv.egiz.moasig.CMSDataObjectRequiredMetaType cmsDataObject) { - - if (cmsDataObject != null) { - MetaInfo metaInfo = null; - - MetaInfoType metaInfoType = cmsDataObject.getMetaInfo(); - - if (metaInfoType != null) { - metaInfo = this.parseMetaInfo(metaInfoType); - } - - at.gv.egiz.moasig.CMSContentBaseType cmsContent = cmsDataObject.getContent(); - - CMSContent content = parseContent(cmsContent); - - BigDecimal excludeByteRangeFrom = null; - - if (cmsDataObject.getFrom() != null) { - excludeByteRangeFrom = new BigDecimal(cmsDataObject.getFrom()); - } - - BigDecimal excludeByteRangeTo = null; - if (cmsDataObject.getTo() != null) { - excludeByteRangeTo = new BigDecimal(cmsDataObject.getTo()); - } - - return factory.createCMSDataObject(metaInfo, content, excludeByteRangeFrom, excludeByteRangeTo); - - } else { - return null; - } - - } - - /** - * Parse a the DataObject DOM element contained in a given - * VerifyCMSSignatureRequest DOM element. - * - * @param requestElem - * The VerifyCMSSignatureRequest DOM element to - * parse. - * @return The CMSDataObject API object containing the data - * from the DataObject DOM element. - */ - public CMSDataObject parseDataObject(at.gv.egiz.moasig.CMSDataObjectOptionalMetaType cmsDataObject) { - - if (cmsDataObject != null) { - MetaInfo metaInfo = null; - - MetaInfoType metaInfoType = cmsDataObject.getMetaInfo(); - - if (metaInfoType != null) { - metaInfo = this.parseMetaInfo(metaInfoType); - } - - at.gv.egiz.moasig.CMSContentBaseType cmsContent = cmsDataObject.getContent(); - - CMSContent content = parseContent(cmsContent); - - BigDecimal excludeByteRangeFrom = null; - - if (cmsDataObject.getFrom() != null) { - excludeByteRangeFrom = new BigDecimal(cmsDataObject.getFrom()); - } - - BigDecimal excludeByteRangeTo = null; - if (cmsDataObject.getTo() != null) { - excludeByteRangeTo = new BigDecimal(cmsDataObject.getTo()); - } - - return factory.createCMSDataObject(metaInfo, content, excludeByteRangeFrom, excludeByteRangeTo); - - } else { - return null; - } - - } - - /** - * Parse the content contained in a CMSContentBaseType kind of - * DOM element. - * - * @param contentElem - * The CMSContentBaseType kind of element to parse. - * @return A CMSDataObject API object containing the data from - * the given DOM element. - */ - public CMSContent parseContent(at.gv.egiz.moasig.CMSContentBaseType cmsContent) { - - if (cmsContent.getBase64Content() != null) { - InputStream binaryContent = new ByteArrayInputStream(cmsContent.getBase64Content()); - return factory.createCMSContent(binaryContent); - } else { - return factory.createCMSContent(cmsContent.getReference()); - } - } -} -- cgit v1.2.3