@Override
public void handle(final InputProcessorChain inputProcessorChain, final XMLSecurityProperties securityProperties,
Deque<XMLSecEvent> eventQueue, Integer index) throws XMLSecurityException {
@SuppressWarnings("unchecked")
final SignatureType signatureType = ((JAXBElement<SignatureType>) parseStructure(eventQueue, index, securityProperties)).getValue();
if (signatureType.getSignedInfo() == null) {
throw new XMLSecurityException("stax.signature.signedInfoMissing");
}
if (signatureType.getSignedInfo().getSignatureMethod() == null) {
throw new XMLSecurityException("stax.signature.signatureMethodMissing");
}
if (signatureType.getSignedInfo().getCanonicalizationMethod() == null) {
throw new XMLSecurityException("stax.signature.canonicalizationMethodMissing");
}
if (signatureType.getSignatureValue() == null) {
throw new XMLSecurityException("stax.signature.signatureValueMissing");
}
if (signatureType.getId() == null) {
signatureType.setId(IDGenerator.generateID(null));
}
InboundSecurityToken inboundSecurityToken = verifySignedInfo(inputProcessorChain, securityProperties, signatureType, eventQueue, index);
addSignatureReferenceInputProcessorToChain(inputProcessorChain, securityProperties, signatureType, inboundSecurityToken);
}