The XML Security library has been modified, so that there is NO verification
of the certificate during sign or verification operation. On Windows this was
done in the function xmlSecMSCryptoX509StoreVerify (file
src/mscrypto/x509vfy.c) and on UNIX in xmlSecNssX509StoreVerify
(file src/nss/x509vfy.c).
This change requires that the XML Signature contains in
Signature/KeyInfo/X509Data only entries which represent the same
certificate.
The implementation creates certificates from all of the X509Data children
(X509IssuerSerial, X509Certificate) and used to iterate over all certificates,
verify them and return the first "good" certificate. Now the first one is
used.
The X509IssuerSerial information is used by XML Security Library to find the
certificate in the certificate store on the machine. The X509Certificate entry
is used to create a certificate no matter if this is already contained in the
certificate store.
Do not forget: Suggest to XML Security Library to provide a way to carry out
signature operations without verification of certificates. There is flag
XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS that can be set in a
xmlSecKeyInfoCtx (see function xmlSecNssKeyDataX509XmlRead, in file src/nss/x509.c),
which indicates such a possibility but it does not work.