I am using opensaml to sign my SAML and I am also successfully able to validate it using OpenSAML's SignatureValidator.
SignatureValidator signValidator = new SignatureValidator( publicCredential );
signValidator.validate( signature );
The IdP uses Component space to validate on their side however they are unable to validate it using the same SAML and publicCertificate.
bool retVal = SAMLMessageSignature.Verify(samlResponseXml, x509Certificate);// returning false
The Signature algorithm in SAML is RSASHA1. From their logs we were able to see that the signature's hash value is different. Here are the logs: