jdk/src/share/classes/com/sun/org/apache/xml/internal/security/signature/Manifest.java
changeset 10694 cf59e2badd14
parent 1337 e8d6cef36199
child 18266 26e69da689b9
equal deleted inserted replaced
10693:6e9ebed2e783 10694:cf59e2badd14
    26 import java.util.ArrayList;
    26 import java.util.ArrayList;
    27 import java.util.HashMap;
    27 import java.util.HashMap;
    28 import java.util.Iterator;
    28 import java.util.Iterator;
    29 import java.util.List;
    29 import java.util.List;
    30 import java.util.Set;
    30 import java.util.Set;
       
    31 import java.util.Map;
    31 
    32 
    32 import javax.xml.parsers.ParserConfigurationException;
    33 import javax.xml.parsers.ParserConfigurationException;
    33 
    34 
    34 import com.sun.org.apache.xml.internal.security.c14n.CanonicalizationException;
    35 import com.sun.org.apache.xml.internal.security.c14n.CanonicalizationException;
    35 import com.sun.org.apache.xml.internal.security.c14n.InvalidCanonicalizerException;
    36 import com.sun.org.apache.xml.internal.security.c14n.InvalidCanonicalizerException;
    60   /** {@link java.util.logging} logging facility */
    61   /** {@link java.util.logging} logging facility */
    61   static java.util.logging.Logger log =
    62   static java.util.logging.Logger log =
    62         java.util.logging.Logger.getLogger(Manifest.class.getName());
    63         java.util.logging.Logger.getLogger(Manifest.class.getName());
    63 
    64 
    64    /** Field _references */
    65    /** Field _references */
    65    List _references;
    66    List<Reference> _references;
    66    Element[] _referencesEl;
    67    Element[] _referencesEl;
    67 
    68 
    68    /** Field verificationResults[] */
    69    /** Field verificationResults[] */
    69    private boolean verificationResults[] = null;
    70    private boolean verificationResults[] = null;
    70 
    71 
    71    /** Field _resolverProperties */
    72    /** Field _resolverProperties */
    72    HashMap _resolverProperties = null;
    73    Map<String,String> _resolverProperties = null;
    73 
    74 
    74    /** Field _perManifestResolvers */
    75    /** Field _perManifestResolvers */
    75    List _perManifestResolvers = null;
    76    List<ResourceResolver> _perManifestResolvers = null;
    76 
    77 
    77    /**
    78    /**
    78     * Consturts {@link Manifest}
    79     * Consturts {@link Manifest}
    79     *
    80     *
    80     * @param doc the {@link Document} in which <code>XMLsignature</code> is placed
    81     * @param doc the {@link Document} in which <code>XMLsignature</code> is placed
    83 
    84 
    84       super(doc);
    85       super(doc);
    85 
    86 
    86       XMLUtils.addReturnToElement(this._constructionElement);
    87       XMLUtils.addReturnToElement(this._constructionElement);
    87 
    88 
    88       this._references = new ArrayList();
    89       this._references = new ArrayList<Reference>();
    89    }
    90    }
    90 
    91 
    91    /**
    92    /**
    92     * Constructor Manifest
    93     * Constructor Manifest
    93     *
    94     *
   115                                    I18n.translate("xml.WrongContent", exArgs));
   116                                    I18n.translate("xml.WrongContent", exArgs));
   116          }
   117          }
   117       }
   118       }
   118 
   119 
   119       // create Vector
   120       // create Vector
   120       this._references = new ArrayList(le);
   121       this._references = new ArrayList<Reference>(le);
   121 
   122 
   122       for (int i = 0; i < le; i++) {
   123       for (int i = 0; i < le; i++) {
   123          this._references.add(null);
   124          this._references.add(null);
   124       }
   125       }
   125    }
   126    }
   173            throws XMLSignatureException, ReferenceNotInitializedException {
   174            throws XMLSignatureException, ReferenceNotInitializedException {
   174 
   175 
   175          for (int i = 0; i < this.getLength(); i++) {
   176          for (int i = 0; i < this.getLength(); i++) {
   176 
   177 
   177             // update the cached Reference object, the Element content is automatically updated
   178             // update the cached Reference object, the Element content is automatically updated
   178             Reference currentRef = (Reference) this._references.get(i);
   179             Reference currentRef = this._references.get(i);
   179 
   180 
   180             currentRef.generateDigestValue();
   181             currentRef.generateDigestValue();
   181          }
   182          }
   182    }
   183    }
   183 
   184 
   206             Reference ref = new Reference(_referencesEl[i], this._baseURI, this);
   207             Reference ref = new Reference(_referencesEl[i], this._baseURI, this);
   207 
   208 
   208             this._references.set(i, ref);
   209             this._references.set(i, ref);
   209          }
   210          }
   210 
   211 
   211          return (Reference) this._references.get(i);
   212          return this._references.get(i);
   212 
   213 
   213    }
   214    }
   214 
   215 
   215    /**
   216    /**
   216     * Sets the <code>Id</code> attribute
   217     * Sets the <code>Id</code> attribute
   321                log.log(java.util.logging.Level.FINE, "We have to follow a nested Manifest");
   322                log.log(java.util.logging.Level.FINE, "We have to follow a nested Manifest");
   322 
   323 
   323                 try {
   324                 try {
   324                   XMLSignatureInput signedManifestNodes =
   325                   XMLSignatureInput signedManifestNodes =
   325                     currentRef.dereferenceURIandPerformTransforms(null);
   326                     currentRef.dereferenceURIandPerformTransforms(null);
   326                   Set nl = signedManifestNodes.getNodeSet();
   327                   Set<Node> nl = signedManifestNodes.getNodeSet();
   327                   Manifest referencedManifest = null;
   328                   Manifest referencedManifest = null;
   328                   Iterator nlIterator = nl.iterator();
   329                   Iterator<Node> nlIterator = nl.iterator();
   329 
   330 
   330                   findManifest: while (nlIterator.hasNext()) {
   331                   findManifest: while (nlIterator.hasNext()) {
   331                      Node n = (Node) nlIterator.next();
   332                      Node n =  nlIterator.next();
   332 
   333 
   333                      if ((n.getNodeType() == Node.ELEMENT_NODE) && ((Element) n)
   334                      if ((n.getNodeType() == Node.ELEMENT_NODE) && ((Element) n)
   334                              .getNamespaceURI()
   335                              .getNamespaceURI()
   335                              .equals(Constants.SignatureSpecNS) && ((Element) n)
   336                              .equals(Constants.SignatureSpecNS) && ((Element) n)
   336                              .getLocalName().equals(Constants._TAG_MANIFEST)) {
   337                              .getLocalName().equals(Constants._TAG_MANIFEST)) {
   447 
   448 
   448       if (resolver == null) {
   449       if (resolver == null) {
   449           return;
   450           return;
   450       }
   451       }
   451       if (_perManifestResolvers==null)
   452       if (_perManifestResolvers==null)
   452           _perManifestResolvers = new ArrayList();
   453           _perManifestResolvers = new ArrayList<ResourceResolver>();
   453       this._perManifestResolvers.add(resolver);
   454       this._perManifestResolvers.add(resolver);
   454 
   455 
   455    }
   456    }
   456 
   457 
   457    /**
   458    /**
   463 
   464 
   464       if (resolverSpi == null) {
   465       if (resolverSpi == null) {
   465           return;
   466           return;
   466       }
   467       }
   467       if (_perManifestResolvers==null)
   468       if (_perManifestResolvers==null)
   468                   _perManifestResolvers = new ArrayList();
   469                   _perManifestResolvers = new ArrayList<ResourceResolver>();
   469       this._perManifestResolvers.add(new ResourceResolver(resolverSpi));
   470       this._perManifestResolvers.add(new ResourceResolver(resolverSpi));
   470 
   471 
   471    }
   472    }
   472 
   473 
   473    /**
   474    /**
   477     * @param key the key
   478     * @param key the key
   478     * @param value the value
   479     * @param value the value
   479     */
   480     */
   480    public void setResolverProperty(String key, String value) {
   481    public void setResolverProperty(String key, String value) {
   481            if (_resolverProperties==null) {
   482            if (_resolverProperties==null) {
   482                    _resolverProperties=new HashMap(10);
   483                    _resolverProperties=new HashMap<String, String>(10);
   483            }
   484            }
   484       this._resolverProperties.put(key, value);
   485       this._resolverProperties.put(key, value);
   485    }
   486    }
   486 
   487 
   487    /**
   488    /**
   489     *
   490     *
   490     * @param key the key
   491     * @param key the key
   491     * @return the value
   492     * @return the value
   492     */
   493     */
   493    public String getResolverProperty(String key) {
   494    public String getResolverProperty(String key) {
   494       return (String) this._resolverProperties.get(key);
   495       return this._resolverProperties.get(key);
   495    }
   496    }
   496 
   497 
   497    /**
   498    /**
   498     * Method getSignedContentItem
   499     * Method getSignedContentItem
   499     *
   500     *