blob: b5c9dddd98093171db18e8f757eea64e857afd74 [file] [log] [blame]
/**
* 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.wss4j.dom;
/**
* WSDataRef stores information about decrypted/signed elements
*
* When a processor decrypts/verifies an element it stores information
* about that element in a WSDataRef so this information can
* be used for validation.
*/
import java.util.List;
import javax.xml.namespace.QName;
import org.w3c.dom.Element;
public class WSDataRef {
/**
* wsu:Id of the protected element
*/
private String wsuId;
/**
* QName of the protected element
*/
private QName name;
/**
* An xpath expression pointing to the data element
*/
private String xpath;
/**
* Algorithm used to encrypt/sign the element
*/
private String algorithm;
/**
* A list of algorithms used to transform the element before digest
*/
private List<String> transformAlgorithms;
/**
* If this reference represents signed content, this field
* represents the digest algorithm applied to the content.
*/
private String digestAlgorithm;
/**
* If this reference represents signed content, this field
* represents the digest bytes obtained after applying the digestAlgorithm
*/
private byte[] digestValue;
private boolean content;
/**
* The protected DOM element
*/
private Element protectedElement;
/**
* Whether the protected Reference is an Attachment or not
*/
private boolean attachment;
/**
* If this reference represents encrypted content, then this is the EncryptedData Element
*/
private Element encryptedElement;
/**
* @return Id of the protected element
*/
public String getWsuId() {
return wsuId;
}
/**
* @param wsuId Id of the protected element
*/
public void setWsuId(String wsuId) {
this.wsuId = wsuId;
}
/**
* @return QName of the protected element
*/
public QName getName() {
return name;
}
/**
* @param name QName of the protected element
*/
public void setName(QName name) {
this.name = name;
}
/**
* @param element The protected DOM element to set
*/
public void setProtectedElement(Element element) {
protectedElement = element;
String prefix = element.getPrefix();
if (prefix == null) {
name =
new QName(
element.getNamespaceURI(), element.getLocalName()
);
} else {
name =
new QName(
element.getNamespaceURI(), element.getLocalName(), prefix
);
}
}
/**
* @return the protected DOM element
*/
public Element getProtectedElement() {
return protectedElement;
}
/**
* @return the xpath
*/
public String getXpath() {
return xpath;
}
/**
* @param xpath the xpath to set
*/
public void setXpath(String xpath) {
this.xpath = xpath;
}
/**
* @return the content
*/
public boolean isContent() {
return content;
}
/**
* @param content the content to set
*/
public void setContent(boolean content) {
this.content = content;
}
/**
* @return the algorithm used for encryption/signature
*/
public String getAlgorithm() {
return algorithm;
}
/**
* @param algo algorithm used for encryption
*/
public void setAlgorithm(String algo) {
algorithm = algo;
}
/**
* @return if this reference represents signed content,
* the digest algorithm applied to the content.
*/
public String getDigestAlgorithm() {
return this.digestAlgorithm;
}
/**
* @param digestAlgorithm if this reference represents
* signed content, the digest algorithm applied to the content.
*/
public void setDigestAlgorithm(String digestAlgorithm) {
this.digestAlgorithm = digestAlgorithm;
}
/**
* Set the Transform algorithm URIs used to transform the element before digest
*/
public void setTransformAlgorithms(List<String> transformAlgorithms) {
this.transformAlgorithms = transformAlgorithms;
}
/**
* Get the Transform algorithm URIs used to transform the element before digest
*/
public List<String> getTransformAlgorithms() {
return transformAlgorithms;
}
public boolean isAttachment() {
return attachment;
}
public void setAttachment(boolean attachment) {
this.attachment = attachment;
}
public byte[] getDigestValue() {
return digestValue;
}
public void setDigestValue(byte[] digestValue) {
this.digestValue = digestValue;
}
public Element getEncryptedElement() {
return encryptedElement;
}
public void setEncryptedElement(Element encryptedElement) {
this.encryptedElement = encryptedElement;
}
}