XML Digital Signatures " Chapter 5 171 <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> <Reference URI="#WeatherReport" Type="http://www.w3.org/2000/09/ xmldsig#Manifest"> <Transforms> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <DigestValue></DigestValue> </Reference> </SignedInfo> <SignatureValue/> <KeyInfo> <KeyValue/> </KeyInfo> </Signature> </Envelope> The list of Reference elements inside a manifest is independent of any Reference list in the SignedInfo element. At most, one of the manifest Reference elements may leave out the URI attribute. Notice that within the Manifest itself, the Reference elements still have their required DigestValue elements.These will be filled in during the signature genera- tion using the (canonicalized and transformed) data to which the URI refers.The DigestValue within the Reference element that is inside SignedInfo will be the digest for the manifest itself, not the data to which the manifest refers.This subtle change gives us another useful ability:We can handle partial failures of the signa- ture validation. Before a change in any of the weather reports results in a failure of the entire signature.With the use of a Manifest, the overall signature will still be valid, but the individual Reference digest within the Manifest where the change occurred will fail.The others will still succeed.This tool is very powerful because it gives an application that uses the XML signature mechanism the ability to know exactly where the change has happened, and it can then efficiently take the appropriate action. Imagine an entire Web site with a hundred pages that are signed using a single XML digital signature. Imagine that someone makes an unauthorized change to www.syngress.com Figure 5.16 Continued