View Javadoc
1   /**
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements. See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership. The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License. You may obtain a copy of the License at
9    *
10   * http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied. See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.wss4j.dom.resolvers;
20  
21  import org.apache.xml.security.signature.XMLSignatureInput;
22  import org.apache.xml.security.signature.XMLSignatureByteInput;
23  import org.apache.xml.security.utils.resolver.ResourceResolverContext;
24  import org.apache.xml.security.utils.resolver.ResourceResolverException;
25  import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
26  
27  /*
28   * Fake Resolver for SwA (SOAP with Attachment)
29   */
30  public class ResolverAttachment extends ResourceResolverSpi {
31  
32      private static final byte[] EMPTY_BYTE_ARRAY = new byte[0];
33  
34      @Override
35      public XMLSignatureInput engineResolveURI(ResourceResolverContext context) throws ResourceResolverException {
36          XMLSignatureInput xmlSignatureInput = new XMLSignatureByteInput(EMPTY_BYTE_ARRAY);
37          xmlSignatureInput.setSourceURI(context.uriToResolve);
38          return xmlSignatureInput;
39      }
40  
41      /*
42       * http://docs.oasis-open.org/wss-m/wss/v1.1.1/os/wss-SwAProfile-v1.1.1-os.html
43       * 5.2 Referencing Attachments
44       * For simplicity and interoperability this profile limits WS-Security references
45       * to attachments to CID scheme URLs. Attachments referenced from WS-Security signature
46       * references or cipher references MUST be referenced using CID scheme URLs.
47       */
48      @Override
49      public boolean engineCanResolveURI(ResourceResolverContext context) {
50          if (context.uriToResolve == null) {
51              return false;
52          }
53          return context.uriToResolve.startsWith("cid:");
54      }
55  
56  }