最近看一段Java代码,用来验证XML签名
类名ExplicitKeySignatureTrustEngine,用于评估 XML或原始签名 的可信性和有效性。
注释是这样的,为了验证可信性,需要提供一组可信密钥,用来与成功验证了签名的密钥比较,如果一致,那么才可行。
具体方法如下,从XML的KeyInfo中找出密钥,逐个作为密钥验证签名。如果此密钥验证成功,再与所提供的可信密钥比较。如果从XML的KeyInfo中找出密钥未能验证签名,那么用所提供的可信密钥直接进行验证。最后返回结果。
问题是,这不是多此一举吗?直接用所提供的可信密钥尝试进行验证不就可以了吗?
代码在http://svn.middleware.georgetown.edu/view/java-xmltooling/trunk/src/org/opensaml/xml/signature/impl/ExplicitKeySignatureTrustEngine.java?revision=382&view=markup&pathrev=382,这似乎是一个比较大的开源项目。