1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.wss4j.stax.impl.processor.output;
20
21 import javax.xml.namespace.QName;
22 import javax.xml.stream.XMLStreamException;
23
24 import org.apache.wss4j.stax.ext.WSSConstants;
25 import org.apache.wss4j.stax.ext.WSSSecurityProperties;
26 import org.apache.wss4j.stax.utils.WSSUtils;
27 import org.apache.xml.security.exceptions.XMLSecurityException;
28 import org.apache.xml.security.stax.ext.AbstractOutputProcessor;
29 import org.apache.xml.security.stax.ext.OutputProcessorChain;
30 import org.apache.xml.security.stax.ext.stax.XMLSecEvent;
31
32 public class ReferenceListOutputProcessor extends AbstractOutputProcessor {
33
34 public ReferenceListOutputProcessor() throws XMLSecurityException {
35 super();
36 }
37
38 @Override
39 public void processEvent(XMLSecEvent xmlSecEvent, OutputProcessorChain outputProcessorChain)
40 throws XMLStreamException, XMLSecurityException {
41 outputProcessorChain.processEvent(xmlSecEvent);
42
43 if (WSSUtils.isSecurityHeaderElement(xmlSecEvent, ((WSSSecurityProperties) getSecurityProperties()).getActor())) {
44
45 final QName headerElementName = WSSConstants.TAG_xenc_ReferenceList;
46 OutputProcessorUtils.updateSecurityHeaderOrder(outputProcessorChain, headerElementName, getAction(), false);
47
48 OutputProcessorChain subOutputProcessorChain = outputProcessorChain.createSubChain(this);
49 WSSUtils.createReferenceListStructureForEncryption(this, subOutputProcessorChain);
50
51 outputProcessorChain.removeProcessor(this);
52 }
53 }
54 }