List of usage examples for javax.xml.validation SchemaFactory setResourceResolver
public abstract void setResourceResolver(LSResourceResolver resourceResolver);
From source file:org.sonar.plugins.xml.checks.XmlSchemaCheck.java
/** * Create xsd schema for a list of schema's. */// ww w. j a v a 2s. co m private static Schema createSchema(String[] schemaList) { final String cacheKey = StringUtils.join(schemaList, ","); // first try to load a cached schema. Schema schema = cachedSchemas.get(cacheKey); if (schema != null) { return schema; } List<Source> schemaSources = new ArrayList<Source>(); // load each schema in a StreamSource. for (String schemaReference : schemaList) { InputStream input = SchemaResolver.getBuiltinSchema(schemaReference); if (input == null) { throw new SonarException("Could not load schema: " + schemaReference); } schemaSources.add(new StreamSource(input)); } // create a schema for the list of StreamSources. try { SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); schemaFactory.setResourceResolver(new SchemaResolver()); schema = schemaFactory.newSchema(schemaSources.toArray(new Source[schemaSources.size()])); cachedSchemas.put(cacheKey, schema); return schema; } catch (SAXException e) { throw new SonarException(e); } }
From source file:org.springframework.oxm.jaxb.Jaxb2Marshaller.java
@SuppressWarnings("deprecation") // on JDK 9 private Schema loadSchema(Resource[] resources, String schemaLanguage) throws IOException, SAXException { if (logger.isDebugEnabled()) { logger.debug("Setting validation schema to " + StringUtils.arrayToCommaDelimitedString(this.schemaResources)); }/*w ww .ja va 2 s. com*/ Assert.notEmpty(resources, "No resources given"); Assert.hasLength(schemaLanguage, "No schema language provided"); Source[] schemaSources = new Source[resources.length]; XMLReader xmlReader = org.xml.sax.helpers.XMLReaderFactory.createXMLReader(); xmlReader.setFeature("http://xml.org/sax/features/namespace-prefixes", true); for (int i = 0; i < resources.length; i++) { Assert.notNull(resources[i], "Resource is null"); Assert.isTrue(resources[i].exists(), "Resource " + resources[i] + " does not exist"); InputSource inputSource = SaxResourceUtils.createInputSource(resources[i]); schemaSources[i] = new SAXSource(xmlReader, inputSource); } SchemaFactory schemaFactory = SchemaFactory.newInstance(schemaLanguage); if (this.schemaResourceResolver != null) { schemaFactory.setResourceResolver(this.schemaResourceResolver); } return schemaFactory.newSchema(schemaSources); }
From source file:org.sweble.wikitext.dumpreader.DumpReader.java
private void setSchema(URL schemaUrl) throws Exception { SchemaFactory sf = SchemaFactory.newInstance(javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI); sf.setResourceResolver(new LSResourceResolverImplementation()); Schema schema = sf.newSchema(schemaUrl); unmarshaller.setSchema(schema);//from ww w . j av a 2 s. co m unmarshaller.setEventHandler(new ValidationEventHandler() { public boolean handleEvent(ValidationEvent ve) { try { return DumpReader.this.handleEvent(ve, ve.getLocator()); } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new WrappedException(e); } } }); }
From source file:org.tinygroup.jspengine.xmlparser.ParserUtils.java
private static Schema getSchema(String schemaPublicId) throws SAXException { Schema schema = schemaCache.get(schemaPublicId); if (schema == null) { synchronized (schemaCache) { schema = schemaCache.get(schemaPublicId); if (schema == null) { SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); schemaFactory.setResourceResolver(new MyLSResourceResolver()); schemaFactory.setErrorHandler(new MyErrorHandler()); schema = schemaFactory.newSchema(new StreamSource( ParserUtils.class.getResourceAsStream(schemaResourcePrefix + schemaPublicId))); schemaCache.put(schemaPublicId, schema); }// www . java 2 s . c o m } } return schema; }
From source file:org.xsystem.bpmn2.formats.xml.XMLParser3.java
Schema buildSxema() throws SAXException, IOException { final ClassLoader classLoader = this.getClass().getClassLoader(); //Thread.currentThread().getContextClassLoader(); try (InputStream is = classLoader.getResourceAsStream("BPMN20/BPMN20.xsd")) { SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);//"http://www.w3.org/2001/XMLSchema"); StreamSource ss = new StreamSource(is); factory.setResourceResolver( (String type, String namespaceURI, String publicId, String systemId, String baseURI) -> { InputStream resourceAsStream = classLoader.getResourceAsStream("BPMN20/" + systemId); LSInput ret = new LSInputImpl(publicId, systemId, resourceAsStream); return ret; });//from w w w .j av a2s . co m Schema shema = factory.newSchema(ss); return shema; } }
From source file:se.mithlond.services.shared.test.entity.PlainJaxbContextRule.java
/** * Acquires a JAXB Schema from the provided JAXBContext. * * @param ctx The context for which am XSD should be constructed. * @return A tuple holding the constructed XSD from the provided JAXBContext, and * the LSResourceResolver synthesized during the way. * @throws NullPointerException if ctx was {@code null}. * @throws IllegalArgumentException if a JAXB-related exception occurred while extracting the schema. *//*from www. j a v a 2 s . c o m*/ public static Tuple<Schema, LSResourceResolver> generateTransientXSD(final JAXBContext ctx) throws NullPointerException, IllegalArgumentException { // Check sanity org.apache.commons.lang3.Validate.notNull(ctx, "Cannot handle null ctx argument."); final SortedMap<String, ByteArrayOutputStream> namespace2SchemaMap = new TreeMap<>(); try { ctx.generateSchema(new SchemaOutputResolver() { /** * {@inheritDoc} */ @Override public Result createOutput(final String namespaceUri, final String suggestedFileName) throws IOException { // The types should really be annotated with @XmlType(namespace = "... something ...") // to avoid using the default ("") namespace. if (namespaceUri.isEmpty()) { log.warn("Received empty namespaceUri while resolving a generated schema. " + "Did you forget to add a @XmlType(namespace = \"... something ...\") annotation " + "to your class?"); } // Create the result ByteArrayOutputStream final ByteArrayOutputStream out = new ByteArrayOutputStream(); final StreamResult toReturn = new StreamResult(out); toReturn.setSystemId(""); // Map the namespaceUri to the schemaResult. namespace2SchemaMap.put(namespaceUri, out); // All done. return toReturn; } }); } catch (IOException e) { throw new IllegalArgumentException("Could not acquire Schema snippets.", e); } // Convert to an array of StreamSource. final MappedSchemaResourceResolver resourceResolver = new MappedSchemaResourceResolver(); final StreamSource[] schemaSources = new StreamSource[namespace2SchemaMap.size()]; int counter = 0; for (Map.Entry<String, ByteArrayOutputStream> current : namespace2SchemaMap.entrySet()) { final byte[] schemaSnippetAsBytes = current.getValue().toByteArray(); resourceResolver.addNamespace2SchemaEntry(current.getKey(), new String(schemaSnippetAsBytes)); if (log.isDebugEnabled()) { log.info("Generated schema [" + (counter + 1) + "/" + schemaSources.length + "]:\n " + new String(schemaSnippetAsBytes)); } // Copy the schema source to the schemaSources array. schemaSources[counter] = new StreamSource(new ByteArrayInputStream(schemaSnippetAsBytes), ""); // Increase the counter counter++; } try { // All done. final SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); schemaFactory.setResourceResolver(resourceResolver); final Schema transientSchema = schemaFactory.newSchema(schemaSources); // All done. return new Tuple<>(transientSchema, resourceResolver); } catch (final SAXException e) { throw new IllegalArgumentException("Could not create Schema from snippets.", e); } }
From source file:test.unit.be.fedict.eid.applet.service.signer.XAdESSignatureFacetTest.java
@Test public void testSignEnvelopingDocument() throws Exception { // setup/*w ww .j av a2s . com*/ EnvelopedSignatureFacet envelopedSignatureFacet = new EnvelopedSignatureFacet(); KeyInfoSignatureFacet keyInfoSignatureFacet = new KeyInfoSignatureFacet(true, false, false); SignaturePolicyService signaturePolicyService = null; //SignaturePolicyService signaturePolicyService = new ExplicitSignaturePolicyService( // "urn:test", "hello world".getBytes(), "description", // "http://here.com"); XAdESSignatureFacet xadesSignatureFacet = new XAdESSignatureFacet(signaturePolicyService); TimeStampService mockTimeStampService = EasyMock.createMock(TimeStampService.class); RevocationDataService mockRevocationDataService = EasyMock.createMock(RevocationDataService.class); XAdESXLSignatureFacet xadesXLSignatureFacet = new XAdESXLSignatureFacet(mockTimeStampService, mockRevocationDataService); XmlSignatureTestService testedInstance = new XmlSignatureTestService(envelopedSignatureFacet, keyInfoSignatureFacet, xadesSignatureFacet, xadesXLSignatureFacet); KeyPair keyPair = PkiTestUtils.generateKeyPair(); DateTime notBefore = new DateTime(); DateTime notAfter = notBefore.plusYears(1); X509Certificate certificate = PkiTestUtils.generateCertificate(keyPair.getPublic(), "CN=Test", notBefore, notAfter, null, keyPair.getPrivate(), true, 0, null, null, new KeyUsage(KeyUsage.nonRepudiation)); List<X509Certificate> certificateChain = new LinkedList<X509Certificate>(); /* * We need at least 2 certificates for the XAdES-C complete certificate * refs construction. */ certificateChain.add(certificate); certificateChain.add(certificate); RevocationData revocationData = new RevocationData(); final X509CRL crl = PkiTestUtils.generateCrl(certificate, keyPair.getPrivate()); revocationData.addCRL(crl); OCSPResp ocspResp = PkiTestUtils.createOcspResp(certificate, false, certificate, certificate, keyPair.getPrivate(), "SHA1withRSA"); revocationData.addOCSP(ocspResp.getEncoded()); // expectations EasyMock.expect(mockTimeStampService.timeStamp(EasyMock.anyObject(byte[].class), EasyMock.anyObject(RevocationData.class))).andStubAnswer(new IAnswer<byte[]>() { public byte[] answer() throws Throwable { Object[] arguments = EasyMock.getCurrentArguments(); RevocationData revocationData = (RevocationData) arguments[1]; revocationData.addCRL(crl); return "time-stamp-token".getBytes(); } }); EasyMock.expect(mockRevocationDataService.getRevocationData(EasyMock.eq(certificateChain))) .andStubReturn(revocationData); // prepare EasyMock.replay(mockTimeStampService, mockRevocationDataService); // operate DigestInfo digestInfo = testedInstance.preSign(null, certificateChain); // verify assertNotNull(digestInfo); assertEquals("SHA-1", digestInfo.digestAlgo); assertNotNull(digestInfo.digestValue); TemporaryTestDataStorage temporaryDataStorage = (TemporaryTestDataStorage) testedInstance .getTemporaryDataStorage(); assertNotNull(temporaryDataStorage); InputStream tempInputStream = temporaryDataStorage.getTempInputStream(); assertNotNull(tempInputStream); Document tmpDocument = PkiTestUtils.loadDocument(tempInputStream); LOG.debug("tmp document: " + PkiTestUtils.toString(tmpDocument)); Element nsElement = tmpDocument.createElement("ns"); nsElement.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:ds", Constants.SignatureSpecNS); nsElement.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:xades", "http://uri.etsi.org/01903/v1.3.2#"); Node digestValueNode = XPathAPI.selectSingleNode(tmpDocument, "//ds:DigestValue", nsElement); assertNotNull(digestValueNode); String digestValueTextContent = digestValueNode.getTextContent(); LOG.debug("digest value text content: " + digestValueTextContent); assertFalse(digestValueTextContent.isEmpty()); /* * Sign the received XML signature digest value. */ Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPrivate()); byte[] digestInfoValue = ArrayUtils.addAll(PkiTestUtils.SHA1_DIGEST_INFO_PREFIX, digestInfo.digestValue); byte[] signatureValue = cipher.doFinal(digestInfoValue); /* * Operate: postSign */ testedInstance.postSign(signatureValue, certificateChain); // verify EasyMock.verify(mockTimeStampService, mockRevocationDataService); byte[] signedDocumentData = testedInstance.getSignedDocumentData(); assertNotNull(signedDocumentData); Document signedDocument = PkiTestUtils.loadDocument(new ByteArrayInputStream(signedDocumentData)); LOG.debug("signed document: " + PkiTestUtils.toString(signedDocument)); NodeList signatureNodeList = signedDocument.getElementsByTagNameNS(XMLSignature.XMLNS, "Signature"); assertEquals(1, signatureNodeList.getLength()); Node signatureNode = signatureNodeList.item(0); DOMValidateContext domValidateContext = new DOMValidateContext( KeySelector.singletonKeySelector(keyPair.getPublic()), signatureNode); XMLSignatureFactory xmlSignatureFactory = XMLSignatureFactory.getInstance(); XMLSignature xmlSignature = xmlSignatureFactory.unmarshalXMLSignature(domValidateContext); boolean validity = xmlSignature.validate(domValidateContext); assertTrue(validity); File tmpFile = File.createTempFile("xades-x-l-", ".xml"); FileUtils.writeStringToFile(tmpFile, PkiTestUtils.toString(signedDocument)); LOG.debug("tmp file: " + tmpFile.getAbsolutePath()); Node resultNode = XPathAPI.selectSingleNode(signedDocument, "ds:Signature/ds:Object/xades:QualifyingProperties/xades:SignedProperties/xades:SignedSignatureProperties/xades:SigningCertificate/xades:Cert/xades:CertDigest/ds:DigestValue", nsElement); assertNotNull(resultNode); // also test whether the XAdES extension is in line with the XAdES XML // Schema. // stax-api 1.0.1 prevents us from using // "XMLConstants.W3C_XML_SCHEMA_NS_URI" Node qualifyingPropertiesNode = XPathAPI.selectSingleNode(signedDocument, "ds:Signature/ds:Object/xades:QualifyingProperties", nsElement); SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); LSResourceResolver xadesResourceResolver = new XAdESLSResourceResolver(); factory.setResourceResolver(xadesResourceResolver); InputStream schemaInputStream = XAdESSignatureFacetTest.class.getResourceAsStream("/XAdESv141.xsd"); Source schemaSource = new StreamSource(schemaInputStream); Schema schema = factory.newSchema(schemaSource); Validator validator = schema.newValidator(); // DOMResult gives some DOMException... validator.validate(new DOMSource(qualifyingPropertiesNode)); StreamSource streamSource = new StreamSource(tmpFile.toURI().toString()); ByteArrayOutputStream resultOutputStream = new ByteArrayOutputStream(); StreamResult streamResult = new StreamResult(resultOutputStream); // validator.validate(streamSource, streamResult); LOG.debug("result: " + resultOutputStream); }
From source file:test.unit.be.fedict.eid.applet.service.signer.XAdESSignatureFacetTest.java
@Test public void testSignEnvelopingDocumentOffice2010() throws Exception { // setup// w w w . j ava 2s . c o m EnvelopedSignatureFacet envelopedSignatureFacet = new EnvelopedSignatureFacet(); KeyInfoSignatureFacet keyInfoSignatureFacet = new KeyInfoSignatureFacet(true, false, false); SignaturePolicyService signaturePolicyService = new ExplicitSignaturePolicyService("urn:test", "hello world".getBytes(), "description", "http://here.com"); XAdESSignatureFacet xadesSignatureFacet = new XAdESSignatureFacet(signaturePolicyService); TimeStampService mockTimeStampService = EasyMock.createMock(TimeStampService.class); RevocationDataService mockRevocationDataService = EasyMock.createMock(RevocationDataService.class); XAdESXLSignatureFacet xadesXLSignatureFacet = new XAdESXLSignatureFacet(mockTimeStampService, mockRevocationDataService); XmlSignatureTestService testedInstance = new XmlSignatureTestService(envelopedSignatureFacet, keyInfoSignatureFacet, xadesSignatureFacet, new Office2010SignatureFacet(), xadesXLSignatureFacet); KeyPair keyPair = PkiTestUtils.generateKeyPair(); DateTime notBefore = new DateTime(); DateTime notAfter = notBefore.plusYears(1); X509Certificate certificate = PkiTestUtils.generateCertificate(keyPair.getPublic(), "CN=Test", notBefore, notAfter, null, keyPair.getPrivate(), true, 0, null, null, new KeyUsage(KeyUsage.nonRepudiation)); List<X509Certificate> certificateChain = new LinkedList<X509Certificate>(); /* * We need at least 2 certificates for the XAdES-C complete certificate * refs construction. */ certificateChain.add(certificate); certificateChain.add(certificate); RevocationData revocationData = new RevocationData(); final X509CRL crl = PkiTestUtils.generateCrl(certificate, keyPair.getPrivate()); revocationData.addCRL(crl); OCSPResp ocspResp = PkiTestUtils.createOcspResp(certificate, false, certificate, certificate, keyPair.getPrivate(), "SHA1withRSA"); revocationData.addOCSP(ocspResp.getEncoded()); // expectations EasyMock.expect(mockTimeStampService.timeStamp(EasyMock.anyObject(byte[].class), EasyMock.anyObject(RevocationData.class))).andStubAnswer(new IAnswer<byte[]>() { public byte[] answer() throws Throwable { Object[] arguments = EasyMock.getCurrentArguments(); RevocationData revocationData = (RevocationData) arguments[1]; revocationData.addCRL(crl); return "time-stamp-token".getBytes(); } }); EasyMock.expect(mockRevocationDataService.getRevocationData(EasyMock.eq(certificateChain))) .andStubReturn(revocationData); // prepare EasyMock.replay(mockTimeStampService, mockRevocationDataService); // operate DigestInfo digestInfo = testedInstance.preSign(null, certificateChain); // verify assertNotNull(digestInfo); assertEquals("SHA-1", digestInfo.digestAlgo); assertNotNull(digestInfo.digestValue); TemporaryTestDataStorage temporaryDataStorage = (TemporaryTestDataStorage) testedInstance .getTemporaryDataStorage(); assertNotNull(temporaryDataStorage); InputStream tempInputStream = temporaryDataStorage.getTempInputStream(); assertNotNull(tempInputStream); Document tmpDocument = PkiTestUtils.loadDocument(tempInputStream); LOG.debug("tmp document: " + PkiTestUtils.toString(tmpDocument)); Element nsElement = tmpDocument.createElement("ns"); nsElement.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:ds", Constants.SignatureSpecNS); nsElement.setAttributeNS(Constants.NamespaceSpecNS, "xmlns:xades", "http://uri.etsi.org/01903/v1.3.2#"); Node digestValueNode = XPathAPI.selectSingleNode(tmpDocument, "//ds:DigestValue", nsElement); assertNotNull(digestValueNode); String digestValueTextContent = digestValueNode.getTextContent(); LOG.debug("digest value text content: " + digestValueTextContent); assertFalse(digestValueTextContent.isEmpty()); /* * Sign the received XML signature digest value. */ Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPrivate()); byte[] digestInfoValue = ArrayUtils.addAll(PkiTestUtils.SHA1_DIGEST_INFO_PREFIX, digestInfo.digestValue); byte[] signatureValue = cipher.doFinal(digestInfoValue); /* * Operate: postSign */ testedInstance.postSign(signatureValue, certificateChain); // verify EasyMock.verify(mockTimeStampService, mockRevocationDataService); byte[] signedDocumentData = testedInstance.getSignedDocumentData(); assertNotNull(signedDocumentData); Document signedDocument = PkiTestUtils.loadDocument(new ByteArrayInputStream(signedDocumentData)); LOG.debug("signed document: " + PkiTestUtils.toString(signedDocument)); NodeList signatureNodeList = signedDocument.getElementsByTagNameNS(XMLSignature.XMLNS, "Signature"); assertEquals(1, signatureNodeList.getLength()); Node signatureNode = signatureNodeList.item(0); DOMValidateContext domValidateContext = new DOMValidateContext( KeySelector.singletonKeySelector(keyPair.getPublic()), signatureNode); XMLSignatureFactory xmlSignatureFactory = XMLSignatureFactory.getInstance(); XMLSignature xmlSignature = xmlSignatureFactory.unmarshalXMLSignature(domValidateContext); boolean validity = xmlSignature.validate(domValidateContext); assertTrue(validity); File tmpFile = File.createTempFile("xades-bes-", ".xml"); FileUtils.writeStringToFile(tmpFile, PkiTestUtils.toString(signedDocument)); LOG.debug("tmp file: " + tmpFile.getAbsolutePath()); Node resultNode = XPathAPI.selectSingleNode(signedDocument, "ds:Signature/ds:Object/xades:QualifyingProperties/xades:SignedProperties/xades:SignedSignatureProperties/xades:SigningCertificate/xades:Cert/xades:CertDigest/ds:DigestValue", nsElement); assertNotNull(resultNode); // also test whether the XAdES extension is in line with the XAdES XML // Schema. // stax-api 1.0.1 prevents us from using // "XMLConstants.W3C_XML_SCHEMA_NS_URI" Node qualifyingPropertiesNode = XPathAPI.selectSingleNode(signedDocument, "ds:Signature/ds:Object/xades:QualifyingProperties", nsElement); SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); LSResourceResolver xadesResourceResolver = new XAdESLSResourceResolver(); factory.setResourceResolver(xadesResourceResolver); InputStream schemaInputStream = XAdESSignatureFacetTest.class.getResourceAsStream("/XAdESv141.xsd"); Source schemaSource = new StreamSource(schemaInputStream); Schema schema = factory.newSchema(schemaSource); Validator validator = schema.newValidator(); // DOMResult gives some DOMException... validator.validate(new DOMSource(qualifyingPropertiesNode)); StreamSource streamSource = new StreamSource(tmpFile.toURI().toString()); ByteArrayOutputStream resultOutputStream = new ByteArrayOutputStream(); StreamResult streamResult = new StreamResult(resultOutputStream); // validator.validate(streamSource, streamResult); LOG.debug("result: " + resultOutputStream); }
From source file:test.unit.be.fedict.eid.tsl.BelgianTrustServiceListFactoryTest.java
@Test public void testBelgianTrustList() throws Exception { // setup//from ww w .j a v a2 s. co m TrustServiceList trustServiceList = BelgianTrustServiceListFactory.newInstance(2014, Trimester.FIRST); assertNotNull(trustServiceList.getType()); File unsignedTslFile = File.createTempFile("tsl-be-2014-T1-candidatetest", ".xml"); trustServiceList.saveAs(unsignedTslFile); // sign trust list KeyPair keyPair = TrustTestUtils.generateKeyPair(2048); PrivateKey privateKey = keyPair.getPrivate(); DateTime notBefore = new DateTime(); DateTime notAfter = notBefore.plusYears(5); X509Certificate certificate = TrustTestUtils.generateSelfSignedCertificate(keyPair, "C=BE, CN=Belgium Trust List Scheme Operator", notBefore, notAfter); trustServiceList.sign(privateKey, certificate); // operate File tmpTslFile = File.createTempFile("tsl-be-", ".xml"); // tmpTslFile.deleteOnExit(); trustServiceList.saveAs(tmpTslFile); // --------------- VERIFY TRUST LIST -------------------- LOG.debug("TSL: " + FileUtils.readFileToString(tmpTslFile)); Document document = TrustTestUtils.loadDocument(tmpTslFile); // XML schema validation SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); LSResourceResolver resourceResolver = new TSLLSResourceResolver(); factory.setResourceResolver(resourceResolver); InputStream tslSchemaInputStream = BelgianTrustServiceListFactoryTest.class .getResourceAsStream("/ts_119612v010101_xsd.xsd"); Source tslSchemaSource = new StreamSource(tslSchemaInputStream); Schema tslSchema = factory.newSchema(tslSchemaSource); Validator tslValidator = tslSchema.newValidator(); LOG.debug("Starting validate"); tslValidator.validate(new DOMSource(document)); Validator eccValidator = factory .newSchema(BelgianTrustServiceListFactoryTest.class.getResource("/ts_119612v010101_sie_xsd.xsd")) .newValidator(); NodeList eccQualificationsNodeList = document.getElementsByTagNameNS( "http://uri.etsi.org/TrstSvc/SvcInfoExt/eSigDir-1999-93-EC-TrustedList/#", "Qualifications"); for (int idx = 0; idx < eccQualificationsNodeList.getLength(); idx++) { Node eccQualificationsNode = eccQualificationsNodeList.item(idx); eccValidator.validate(new DOMSource(eccQualificationsNode)); } Validator xadesValidator = factory .newSchema(BelgianTrustServiceListFactoryTest.class.getResource("/XAdES.xsd")).newValidator(); NodeList xadesQualifyingPropertiesNodeList = document .getElementsByTagNameNS("http://uri.etsi.org/01903/v1.3.2#", "QualifyingProperties"); for (int idx = 0; idx < xadesQualifyingPropertiesNodeList.getLength(); idx++) { Node xadesQualifyingPropertiesNode = xadesQualifyingPropertiesNodeList.item(idx); xadesValidator.validate(new DOMSource(xadesQualifyingPropertiesNode)); } // signature trustServiceList = TrustServiceListFactory.newInstance(tmpTslFile); X509Certificate resultCertificate = trustServiceList.verifySignature(); assertEquals(certificate, resultCertificate); File pdfExportFile = File.createTempFile("tsl-be-", ".pdf"); trustServiceList.humanReadableExport(pdfExportFile); // scheme operator name String schemeOperatorNameEn = trustServiceList.getSchemeOperatorName(Locale.ENGLISH); assertEquals("FPS Economy, SMEs, Self-employed and Energy - Quality and Safety", schemeOperatorNameEn); LOG.debug("Locale.ENGLISH: " + Locale.ENGLISH.getLanguage()); assertEquals("SPF Economie, PME, Classes moyennes et Energie - Qualit et Scurit", trustServiceList.getSchemeOperatorName(Locale.FRENCH)); Node schemeOperatorNameEnNode = XPathAPI.selectSingleNode(document, "tsl:TrustServiceStatusList/tsl:SchemeInformation/tsl:SchemeOperatorName/tsl:Name[@xml:lang='en']"); assertNotNull(schemeOperatorNameEnNode); assertEquals("FPS Economy, SMEs, Self-employed and Energy - Quality and Safety", schemeOperatorNameEnNode.getTextContent()); // scheme operator postal address PostalAddressType resultPostalAddress = trustServiceList.getSchemeOperatorPostalAddress(Locale.ENGLISH); assertNotNull(resultPostalAddress); assertEquals("NG III - Koning Albert II-laan 16", resultPostalAddress.getStreetAddress()); assertEquals("Brussels", resultPostalAddress.getLocality()); assertEquals("Brussel", trustServiceList.getSchemeOperatorPostalAddress(new Locale("nl")).getLocality()); // scheme operator electronic address assertEquals(2, trustServiceList.getSchemeOperatorElectronicAddresses().size()); LOG.debug("electronic addresses: " + trustServiceList.getSchemeOperatorElectronicAddresses()); // scheme name assertTrue(trustServiceList.getSchemeName(Locale.ENGLISH).startsWith("BE:")); // scheme information uri List<String> schemeInformationUris = trustServiceList.getSchemeInformationUris(); assertNotNull(schemeInformationUris); // assertEquals(3, schemeInformationUris.size()); assertEquals("http://tsl.belgium.be/", schemeInformationUris.get(0)); // status determination approach assertEquals("http://uri.etsi.org/TrstSvc/TrustedList/TSLType/StatusDetn/EUappropriate", trustServiceList.getStatusDeterminationApproach()); // scheme types /*List<String> schemeTypes = trustServiceList.getSchemeTypes(); assertNotNull(schemeTypes); assertEquals(2, schemeTypes.size()); */ // scheme territory assertEquals("BE", trustServiceList.getSchemeTerritory()); // legal notice String resultLegalNotice = trustServiceList.getLegalNotice(Locale.ENGLISH); assertNotNull(resultLegalNotice); assertTrue(resultLegalNotice.indexOf("1999/93/EC") != -1); assertTrue(resultLegalNotice.indexOf("Belgium") != -1); // historical information period assertEquals(new Integer(21845 * 3), trustServiceList.getHistoricalInformationPeriod()); // list issue date time DateTime resultListIssueDateTime = trustServiceList.getListIssueDateTime(); assertNotNull(resultListIssueDateTime); // next update DateTime resultNextUpdateDateTime = trustServiceList.getNextUpdate(); assertNotNull(resultNextUpdateDateTime); // trust service provider list List<TrustServiceProvider> trustServiceProviders = trustServiceList.getTrustServiceProviders(); assertEquals(2, trustServiceProviders.size()); TrustServiceProvider certipostTrustServiceProvider = trustServiceProviders.get(0); assertEquals("Certipost n.v./s.a.", certipostTrustServiceProvider.getName(Locale.ENGLISH)); // postal address PostalAddressType certipostPostalAddress = certipostTrustServiceProvider.getPostalAddress(Locale.ENGLISH); assertNotNull(certipostPostalAddress); assertEquals("Muntcentrum", certipostPostalAddress.getStreetAddress()); assertEquals("BE", certipostPostalAddress.getCountryName()); // electronic address /* List<String> resultElectronicAddress = certipostTrustServiceProvider .getElectronicAddress(); assertEquals(2, resultElectronicAddress.size()); */ // information uri /* List<String> resultInformationUris = certipostTrustServiceProvider .getInformationUris(Locale.ENGLISH); assertEquals(2, resultInformationUris.size()); assertEquals("http://repository.eid.belgium.be/EN/Index.htm", resultInformationUris.get(0)); */ LOG.debug("unsigned TSL: " + unsignedTslFile.getAbsolutePath()); LOG.debug("TSL: " + tmpTslFile.getAbsolutePath()); LOG.debug("PDF: " + pdfExportFile.getAbsolutePath()); }