-
-bool AbstractMetadataProvider::matches(const pair<const XMLCh*,Credential*>& cred, const CredentialCriteria* criteria) const
-{
- if (criteria) {
- // Check for a usage mismatch.
- if ((criteria->getUsage()==CredentialCriteria::SIGNING_CREDENTIAL || criteria->getUsage()==CredentialCriteria::TLS_CREDENTIAL) &&
- XMLString::equals(cred.first,KeyDescriptor::KEYTYPE_ENCRYPTION))
- return false;
- else if (criteria->getUsage()==CredentialCriteria::ENCRYPTION_CREDENTIAL && XMLString::equals(cred.first,KeyDescriptor::KEYTYPE_SIGNING))
- return false;
-
- if (cred.second->getPublicKey()) {
- // See if we have to match a specific key.
- auto_ptr<Credential> critcred(
- XMLToolingConfig::getConfig().getKeyInfoResolver()->resolve(*criteria,Credential::RESOLVE_KEYS)
- );
- if (critcred.get())
- if (!critcred->isEqual(*(cred.second->getPublicKey())))
- return false;
- }
- }
- return true;
-}