X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-opensaml.git;a=blobdiff_plain;f=saml%2Fsaml2%2Fmetadata%2FMetadata.h;h=a2134342fd654f4a1e72858ae78ebd59da5f7546;hp=e609f66671ecaaad84f6f4194744b4d2ef2f978c;hb=0547a02ac67aeb6607ac96dadb25aae560aecf20;hpb=f7ed3649e606c31484a0339eb855de0ab0ca6163 diff --git a/saml/saml2/metadata/Metadata.h b/saml/saml2/metadata/Metadata.h index e609f66..a213434 100644 --- a/saml/saml2/metadata/Metadata.h +++ b/saml/saml2/metadata/Metadata.h @@ -33,6 +33,11 @@ #define DECL_SAML2MDOBJECTBUILDER(cname) \ DECL_XMLOBJECTBUILDER(SAML_API,cname,samlconstants::SAML20MD_NS,samlconstants::SAML20MD_PREFIX) +namespace xmltooling { + class XMLTOOL_API Credential; + class XMLTOOL_API CredentialResolver; +} + namespace xmlencryption { class XMLTOOL_API EncryptionMethod; }; @@ -45,6 +50,9 @@ namespace opensaml { */ namespace saml2md { + class SAML_API DigestMethod; + class SAML_API SigningMethod; + /** * Base class for metadata objects that feature a cacheDuration attribute. */ @@ -181,6 +189,12 @@ namespace opensaml { DECL_TYPED_CHILDREN(KeyDescriptor); DECL_TYPED_CHILD(Organization); DECL_TYPED_CHILDREN(ContactPerson); + /** Returns the first digest method supported by the role and the underlying implementation, if any. */ + virtual const DigestMethod* getDigestMethod() const; + /** Returns the first signing method supported by the role and the underlying implementation, if any, along with a matching credential. */ + virtual std::pair getSigningMethod( + const xmltooling::CredentialResolver& resolver, xmltooling::CredentialCriteria& cc + ) const; END_XMLOBJECT; BEGIN_XMLOBJECT2(SAML_API,RoleDescriptorType,RoleDescriptor,xmltooling::ElementExtensibleXMLObject,SAML 2.0 RoleDescriptor extension); @@ -395,6 +409,20 @@ namespace opensaml { static const XMLCh TYPE_NAME[]; END_XMLOBJECT; + BEGIN_XMLOBJECT(SAML_API,DigestMethod,xmltooling::ElementExtensibleXMLObject,SAML Metadata Extension for Algorithm Support DigestMethod element); + DECL_STRING_ATTRIB(Algorithm,ALGORITHM); + /** DigestMethodType local name */ + static const XMLCh TYPE_NAME[]; + END_XMLOBJECT; + + BEGIN_XMLOBJECT(SAML_API,SigningMethod,xmltooling::ElementExtensibleXMLObject,SAML Metadata Extension for Algorithm Support SigningMethod element); + DECL_STRING_ATTRIB(Algorithm,ALGORITHM); + DECL_INTEGER_ATTRIB(MinKeySize,MINKEYSIZE); + DECL_INTEGER_ATTRIB(MaxKeySize,MAXKEYSIZE); + /** SigningMethodType local name */ + static const XMLCh TYPE_NAME[]; + END_XMLOBJECT; + /** * Predicate to test a role for validity and protocol support. */ @@ -493,6 +521,8 @@ namespace opensaml { DECL_XMLOBJECTBUILDER(SAML_API,ActionNamespace,samlconstants::SAML20MD_QUERY_EXT_NS,samlconstants::SAML20MD_QUERY_EXT_PREFIX); DECL_XMLOBJECTBUILDER(SAML_API,SourceID,samlconstants::SAML1MD_NS,samlconstants::SAML1MD_PREFIX); DECL_XMLOBJECTBUILDER(SAML_API,EntityAttributes,samlconstants::SAML20MD_ENTITY_ATTRIBUTE_NS,samlconstants::SAML20MD_ENTITY_ATTRIBUTE_PREFIX); + DECL_XMLOBJECTBUILDER(SAML_API,DigestMethod,samlconstants::SAML20MD_ALGSUPPORT_NS,samlconstants::SAML20MD_ALGSUPPORT_PREFIX); + DECL_XMLOBJECTBUILDER(SAML_API,SigningMethod,samlconstants::SAML20MD_ALGSUPPORT_NS,samlconstants::SAML20MD_ALGSUPPORT_PREFIX); /** * Builder for localizedNameType objects.