diff options
| author | clemenso <clemenso@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4> | 2010-02-11 12:45:24 +0000 | 
|---|---|---|
| committer | clemenso <clemenso@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4> | 2010-02-11 12:45:24 +0000 | 
| commit | 71eb2f9155e58a5ea12daea9996f2585f525af33 (patch) | |
| tree | 0e059d380ba1be3f2f97ecb1889aa4a9eaa0b77e /bkucommon/src/main/java | |
| parent | 8d4b9ed6d446b65782427aa653a12e7f6ed16c4c (diff) | |
| download | mocca-71eb2f9155e58a5ea12daea9996f2585f525af33.tar.gz mocca-71eb2f9155e58a5ea12daea9996f2585f525af33.tar.bz2 mocca-71eb2f9155e58a5ea12daea9996f2585f525af33.zip | |
[#516] transforms ignored for detached signatures (merge from 1.2.12-pinguin)
git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@637 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4
Diffstat (limited to 'bkucommon/src/main/java')
| -rw-r--r-- | bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTReference.java | 197 | 
1 files changed, 101 insertions, 96 deletions
| diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTReference.java b/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTReference.java index 6b388f2a..fa5b5802 100644 --- a/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTReference.java +++ b/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTReference.java @@ -14,99 +14,104 @@  * See the License for the specific language governing permissions and  * limitations under the License.  */ -package at.gv.egiz.bku.slcommands.impl.xsect;
 -
 -import iaik.xml.crypto.dsig.DigestMethodImpl;
 -import iaik.xml.crypto.dsig.DigestValueImpl;
 -import iaik.xml.crypto.dsig.ReferenceImpl;
 -import iaik.xml.crypto.dsig.TransformImpl;
 -import iaik.xml.crypto.dsig.TransformsImpl;
 -
 -import javax.xml.crypto.Data;
 -import javax.xml.crypto.URIDereferencer;
 -import javax.xml.crypto.URIReferenceException;
 -import javax.xml.crypto.XMLCryptoContext;
 -import javax.xml.crypto.dsig.DigestMethod;
 -import javax.xml.crypto.dsig.TransformException;
 -
 -import at.gv.egiz.bku.slexceptions.SLCommandException;
 -import at.gv.egiz.bku.slexceptions.SLExceptionMessages;
 -
 -/**
 - * This class extends the XSECT ReferenceImpl to allow for the use
 - * of already marshalled <code>ds:Transforms</code> elements for initialization.
 - *  
 - * @author mcentner
 - */
 -public class XSECTReference extends ReferenceImpl {
 -
 -  /**
 -   * The URIDereferencer to be used for dereferencing.
 -   */
 -  protected URIDereferencer dereferencer;
 -
 -  /**
 -   * Creates a new instance of this XSECTReference with the given
 -   * <code>uri</code>, digest method, <code>transforms</code>, <code>type</code>
 -   * and <code>id</code> value.
 -   * 
 -   * @param uri
 -   *          the <code>URI</code>-attribute value (may be <code>null</code>)
 -   * @param dm
 -   *          the digest method
 -   * @param transforms
 -   *          a TransformsImpl element (may be <code>null</code>)
 -   * @param type
 -   *          the <code>Type</code>-attribute value (may be <code>null</code>)
 -   * @param id
 -   *          the <code>Id</code>-attribute value (may be <code>null</code>)
 -   * 
 -   * @throws NullPointerException
 -   *           if <code>digestMethod</code> is <code>null</code>
 -   * @throws IllegalArgumentException
 -   *           if <code>uri</code> is not RFC 2396 compliant
 -   * @throws ClassCastException
 -   *           if any of the <code>transforms</code> is not of type
 -   *           {@link TransformImpl}
 -   */
 -  public XSECTReference(String uri, DigestMethod dm, TransformsImpl transforms, String type,
 -      String id) {
 -    super(uri, transforms, type, id);
 -    digestMethod_ = (DigestMethodImpl) dm;
 -    digestValue_ = new DigestValueImpl();
 -  }
 -
 -  /* (non-Javadoc)
 -   * @see iaik.xml.crypto.dsig.ReferenceType#dereference(javax.xml.crypto.XMLCryptoContext)
 -   */
 -  @Override
 -  public Data dereference(XMLCryptoContext context) throws TransformException,
 -      URIReferenceException {
 -    if (dereferencer != null) {
 -      return dereferencer.dereference(this, context);
 -    } else {
 -      try {
 -        return super.dereference(context);
 -      } catch (URIReferenceException e) {
 -        SLCommandException commandException = new SLCommandException(4003,
 -            SLExceptionMessages.EC4003_NOT_RESOLVED, new Object[] { getURI() });
 -        throw new URIReferenceException("Failed to dereference data to-be signed.", commandException);
 -      }
 -    }
 -  }
 -
 -  /**
 -   * @return the dereferencer to be used for dereferencing this reference
 -   */
 -  public URIDereferencer getDereferencer() {
 -    return dereferencer;
 -  }
 -
 -  /**
 -   * @param dereferencer the dereferencer to be used for dereferencing this reference
 -   */
 -  public void setDereferencer(URIDereferencer dereferencer) {
 -    this.dereferencer = dereferencer;
 -  }
 -
 -}
 +package at.gv.egiz.bku.slcommands.impl.xsect; + +import iaik.xml.crypto.dsig.DigestMethodImpl; +import iaik.xml.crypto.dsig.DigestValueImpl; +import iaik.xml.crypto.dsig.ReferenceImpl; +import iaik.xml.crypto.dsig.TransformImpl; +import iaik.xml.crypto.dsig.TransformsImpl; + +import javax.xml.crypto.Data; +import javax.xml.crypto.URIDereferencer; +import javax.xml.crypto.URIReferenceException; +import javax.xml.crypto.XMLCryptoContext; +import javax.xml.crypto.dsig.DigestMethod; +import javax.xml.crypto.dsig.TransformException; + +import at.gv.egiz.bku.slexceptions.SLCommandException; +import at.gv.egiz.bku.slexceptions.SLExceptionMessages; + +/** + * This class extends the XSECT ReferenceImpl to allow for the use + * of already marshalled <code>ds:Transforms</code> elements for initialization. + *   + * @author mcentner + */ +public class XSECTReference extends ReferenceImpl { + +  /** +   * The URIDereferencer to be used for dereferencing. +   */ +  protected URIDereferencer dereferencer; + +  /** +   * Creates a new instance of this XSECTReference with the given +   * <code>uri</code>, digest method, <code>transforms</code>, <code>type</code> +   * and <code>id</code> value. +   *  +   * @param uri +   *          the <code>URI</code>-attribute value (may be <code>null</code>) +   * @param dm +   *          the digest method +   * @param transforms +   *          a TransformsImpl element (may be <code>null</code>) +   * @param type +   *          the <code>Type</code>-attribute value (may be <code>null</code>) +   * @param id +   *          the <code>Id</code>-attribute value (may be <code>null</code>) +   *  +   * @throws NullPointerException +   *           if <code>digestMethod</code> is <code>null</code> +   * @throws IllegalArgumentException +   *           if <code>uri</code> is not RFC 2396 compliant +   * @throws ClassCastException +   *           if any of the <code>transforms</code> is not of type +   *           {@link TransformImpl} +   */ +  public XSECTReference(String uri, DigestMethod dm, TransformsImpl transforms, String type, +      String id) { +    super(uri, transforms, type, id); +    digestMethod_ = (DigestMethodImpl) dm; +    digestValue_ = new DigestValueImpl(); +  } + +  /* (non-Javadoc) +   * @see iaik.xml.crypto.dsig.ReferenceType#dereference(javax.xml.crypto.XMLCryptoContext) +   */ +  @Override +  public Data dereference(XMLCryptoContext context) throws TransformException, +      URIReferenceException { +    if (dereferencer != null) { +      Data result = dereferencer.dereference(this, context); +       // apply transforms if any +      if (transforms_ != null) { +        result = transforms_.applyTransforms(context, result); +      } +      return result; +    } else { +      try { +        return super.dereference(context); +      } catch (URIReferenceException e) { +        SLCommandException commandException = new SLCommandException(4003, +            SLExceptionMessages.EC4003_NOT_RESOLVED, new Object[] { getURI() }); +        throw new URIReferenceException("Failed to dereference data to-be signed.", commandException); +      } +    } +  } + +  /** +   * @return the dereferencer to be used for dereferencing this reference +   */ +  public URIDereferencer getDereferencer() { +    return dereferencer; +  } + +  /** +   * @param dereferencer the dereferencer to be used for dereferencing this reference +   */ +  public void setDereferencer(URIDereferencer dereferencer) { +    this.dereferencer = dereferencer; +  } + +} | 
