Permalink
Cannot retrieve contributors at this time
Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign up
Fetching contributors…
| /** | |
| * Licensed to the Apache Software Foundation (ASF) under one or more | |
| * contributor license agreements. See the NOTICE file distributed with | |
| * this work for additional information regarding copyright ownership. | |
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |
| * (the "License"); you may not use this file except in compliance with | |
| * the License. You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| */ | |
| package org.apache.camel.component.xmlsecurity.api; | |
| import javax.xml.crypto.dsig.Reference; | |
| import javax.xml.crypto.dsig.XMLSignature; | |
| import javax.xml.crypto.dsig.XMLSignature.SignatureValue; | |
| import javax.xml.crypto.dsig.XMLSignatureException; | |
| /** | |
| * Handler for handling the case when the core signature validation fails or a | |
| * {@link XMLSignatureException} occurs during calling | |
| * {@link XMLSignature#validate(javax.xml.crypto.dsig.XMLValidateContext)}. | |
| * | |
| * This handler can be used to react in a specific way on validation failures. | |
| * For example, the handler could write logs or may even ignore certain | |
| * validation failures. | |
| * <p> | |
| * Typically the handler throws an exception when a validation failure occurs. | |
| * | |
| * There is a certain order how the methods are called. | |
| * <ul> | |
| * <li>First, the method {@link #start()} is called when a core validation | |
| * fails. | |
| * <li>Then {@link #signatureValueValidationFailed(SignatureValue)} is called if | |
| * the signature validation fails. | |
| * <li>Then, for each reference in the signed info whose validation fails | |
| * {@link #referenceValidationFailed(Reference)} is called. | |
| * <li>Then, for each reference in the manifests whose validation fails, the | |
| * method {@link #manifestReferenceValidationFailed(Reference)} is called. | |
| * <li>Then, the method {@link #ignoreCoreValidationFailure()} is called where | |
| * you can finally decide whether the processing should go on or be interrupted. | |
| * <li>It is ensured that the method {@link #end()} is called at the end of the | |
| * validation, even if the methods called before have thrown an exception. This | |
| * allows you to hold state between the start and end of the validation handling | |
| * process. | |
| * </ul> | |
| * If you throw an exception then the validation checking is interrupted and | |
| * after that only the {@link #end()} method is called in a finally block. Best | |
| * practice is to interrupt the validation at the first occurrence of a | |
| * validation error. | |
| */ | |
| public interface ValidationFailedHandler { | |
| /** | |
| * Method called when an XMLSignatureException is thrown by the method | |
| * {@link XMLSignature#validate(javax.xml.crypto.dsig.XMLValidateContext)}. | |
| * <p> | |
| * You can return more specific exceptions which are useful for your | |
| * use-case. | |
| * | |
| * @param e exception | |
| * @return exception exception which is then thrown by XmlSignerProcessor. | |
| */ | |
| Exception onXMLSignatureException(XMLSignatureException e); | |
| void start(); | |
| void signatureValueValidationFailed(SignatureValue value) throws Exception; // NOPMD | |
| void referenceValidationFailed(Reference ref) throws Exception; // NOPMD | |
| void manifestReferenceValidationFailed(Reference ref) throws Exception; // NOPMD | |
| /** | |
| * If <tt>true</tt> is returned then the verifier will go-on as if there was | |
| * no validation failure. If <tt>false</tt> is returned than the verifier | |
| * will throw an {@link XmlSignatureInvalidException}. | |
| * <p> | |
| * Best practice is to return <code>false</code> to ensure that after a core | |
| * validation failure, the verification fails. | |
| * | |
| * @return true or false | |
| * @throws Exception | |
| */ | |
| boolean ignoreCoreValidationFailure() throws Exception; // NOPMD | |
| void end() throws Exception; // NOPMD | |
| } |