*/
/**
- * @file Signature.h
+ * @file xmltooling/signature/Signature.h
*
* XMLObject representing XML Digital Signature, version 20020212, Signature element.
*/
static const XMLCh LOCAL_NAME[];
/**
- * Sets the canonicalization method for the ds:SignedInfo element
+ * Gets the canonicalization method for the ds:SignedInfo element.
+ *
+ * @return the canonicalization method
+ */
+ virtual const XMLCh* getCanonicalizationMethod() const=0;
+
+ /**
+ * Gets the signing algorithm for the signature.
+ *
+ * @return the signature algorithm
+ */
+ virtual const XMLCh* getSignatureAlgorithm() const=0;
+
+ /**
+ * Sets the canonicalization method for the ds:SignedInfo element.
*
* @param c14n the canonicalization method
*/
/**
* Compute and append the signature based on the assigned
* ContentReference, KeyInfo, and signing key.
+ *
+ * @param credential optional source of signing key and KeyInfo
*/
- virtual void sign()=0;
+ virtual void sign(const xmltooling::Credential* credential=NULL)=0;
/**
* Type-safe clone operation.
unsigned int in_len
);
+ /**
+ * Populates a set of key names using the information found in a native KeyInfo object.
+ *
+ * @param keyInfo a native KeyInfo object
+ * @param names a set of names to populate
+ */
+ static void extractNames(DSIGKeyInfoList* keyInfo, std::set<std::string>& names);
+
protected:
Signature() {}
};
class XMLTOOL_API SignatureBuilder : public xmltooling::XMLObjectBuilder
{
public:
+#ifdef HAVE_COVARIANT_RETURNS
virtual Signature* buildObject(
+#else
+ virtual xmltooling::XMLObject* buildObject(
+#endif
const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL, const xmltooling::QName* schemaType=NULL
) const;