You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by sc...@apache.org on 2010/09/01 21:36:57 UTC

svn commit: r991666 - in /xml/security/trunk/c: ./ src/dsig/ src/framework/ src/xenc/impl/

Author: scantor
Date: Wed Sep  1 19:36:57 2010
New Revision: 991666

URL: http://svn.apache.org/viewvc?rev=991666&view=rev
Log:
Distinguish classes of algorithms using method on AlgHandler.

Modified:
    xml/security/trunk/c/CHANGELOG.txt
    xml/security/trunk/c/src/dsig/DSIGAlgorithmHandlerDefault.cpp
    xml/security/trunk/c/src/dsig/DSIGAlgorithmHandlerDefault.hpp
    xml/security/trunk/c/src/framework/XSECAlgorithmHandler.hpp
    xml/security/trunk/c/src/xenc/impl/XENCAlgorithmHandlerDefault.cpp
    xml/security/trunk/c/src/xenc/impl/XENCAlgorithmHandlerDefault.hpp

Modified: xml/security/trunk/c/CHANGELOG.txt
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/CHANGELOG.txt?rev=991666&r1=991665&r2=991666&view=diff
==============================================================================
--- xml/security/trunk/c/CHANGELOG.txt (original)
+++ xml/security/trunk/c/CHANGELOG.txt Wed Sep  1 19:36:57 2010
@@ -16,6 +16,7 @@ Changes since 1.5.1
 * Add selected XML Signature 1.1 KeyInfo extensions (SC)
 * Add elliptic curve signatures via ECDSA (SC)
 * Support debugging of Reference/SignedInfo data (SC)
+* Support distinguishing types of algorithms using AlgorithmHandler (SC)
 
 Changes between 1.5 and 1.5.1
 =====================================

Modified: xml/security/trunk/c/src/dsig/DSIGAlgorithmHandlerDefault.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/dsig/DSIGAlgorithmHandlerDefault.cpp?rev=991666&r1=991665&r2=991666&view=diff
==============================================================================
--- xml/security/trunk/c/src/dsig/DSIGAlgorithmHandlerDefault.cpp (original)
+++ xml/security/trunk/c/src/dsig/DSIGAlgorithmHandlerDefault.cpp Wed Sep  1 19:36:57 2010
@@ -185,6 +185,21 @@ void convertRawToBase64String(safeBuffer
 
 }
 
+XSECAlgorithmHandler::AlgorithmClassType DSIGAlgorithmHandlerDefault::getAlgorithmClass(const XMLCh* alg) const {
+
+	signatureMethod sm;
+	hashMethod hm;
+
+	if (XSECmapURIToHashMethod(alg, hm))
+        return ALG_DIGEST;
+
+	if (XSECmapURIToSignatureMethods(alg, sm, hm)) {
+        return (sm == SIGNATURE_HMAC) ? ALG_HMAC : ALG_DSIG;
+    }
+
+    return ALG_NONE;
+}
+
 // --------------------------------------------------------------------------------
 //			Clone
 // --------------------------------------------------------------------------------

Modified: xml/security/trunk/c/src/dsig/DSIGAlgorithmHandlerDefault.hpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/dsig/DSIGAlgorithmHandlerDefault.hpp?rev=991666&r1=991665&r2=991666&view=diff
==============================================================================
--- xml/security/trunk/c/src/dsig/DSIGAlgorithmHandlerDefault.hpp (original)
+++ xml/security/trunk/c/src/dsig/DSIGAlgorithmHandlerDefault.hpp Wed Sep  1 19:36:57 2010
@@ -45,6 +45,7 @@ public:
 	
 	virtual ~DSIGAlgorithmHandlerDefault() {};
 
+    virtual AlgorithmClassType getAlgorithmClass(const XMLCh* alg) const;
 
 	virtual XSECAlgorithmHandler * clone(void) const;
 

Modified: xml/security/trunk/c/src/framework/XSECAlgorithmHandler.hpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/framework/XSECAlgorithmHandler.hpp?rev=991666&r1=991665&r2=991666&view=diff
==============================================================================
--- xml/security/trunk/c/src/framework/XSECAlgorithmHandler.hpp (original)
+++ xml/security/trunk/c/src/framework/XSECAlgorithmHandler.hpp Wed Sep  1 19:36:57 2010
@@ -78,6 +78,34 @@ public:
 
 	//@}
 
+	/**
+	 * \brief Algorithm types understood by the library
+	 *
+	 * This type defines the list of algorithm classes that the library
+	 * understands.
+	 */
+
+	enum AlgorithmClassType {
+
+		ALG_NONE,
+        ALG_DIGEST,
+        ALG_DSIG,
+        ALG_HMAC,
+        ALG_ENC,
+        ALG_KEYWRAP,
+        ALG_KEYTRAN,
+        ALG_KEYAGREE,
+        ALG_KEYDERIV
+	};
+
+	/**
+	 * \brief Returns the general class of an algorithm.
+     *
+     * @param alg   algorithm URI
+	 */
+
+	virtual AlgorithmClassType getAlgorithmClass(const XMLCh* alg) const {return ALG_NONE;}
+
 	/** @name Encryption Methods */
 	//@{
 

Modified: xml/security/trunk/c/src/xenc/impl/XENCAlgorithmHandlerDefault.cpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/xenc/impl/XENCAlgorithmHandlerDefault.cpp?rev=991666&r1=991665&r2=991666&view=diff
==============================================================================
--- xml/security/trunk/c/src/xenc/impl/XENCAlgorithmHandlerDefault.cpp (original)
+++ xml/security/trunk/c/src/xenc/impl/XENCAlgorithmHandlerDefault.cpp Wed Sep  1 19:36:57 2010
@@ -71,6 +71,27 @@ unsigned char s_AES_IV [] = {
 
 };
 
+XSECAlgorithmHandler::AlgorithmClassType XENCAlgorithmHandlerDefault::getAlgorithmClass(const XMLCh* alg) const {
+
+    if (strEquals(alg, DSIGConstants::s_unicodeStrURIRSA_1_5) ||
+        strEquals(alg, DSIGConstants::s_unicodeStrURIRSA_OAEP_MGFP1))
+        return ALG_KEYTRAN;
+
+	if (strEquals(alg, DSIGConstants::s_unicodeStrURI3DES_CBC) ||
+        strEquals(alg, DSIGConstants::s_unicodeStrURIAES128_CBC) ||
+        strEquals(alg, DSIGConstants::s_unicodeStrURIAES192_CBC) ||
+        strEquals(alg, DSIGConstants::s_unicodeStrURIAES256_CBC))
+        return ALG_ENC;
+
+	if (strEquals(alg, DSIGConstants::s_unicodeStrURIKW_3DES) ||
+        strEquals(alg, DSIGConstants::s_unicodeStrURIKW_AES128) ||
+        strEquals(alg, DSIGConstants::s_unicodeStrURIKW_AES192) ||
+        strEquals(alg, DSIGConstants::s_unicodeStrURIKW_AES256))
+        return ALG_KEYWRAP;
+
+    return ALG_NONE;
+}
+
 // --------------------------------------------------------------------------------
 //			Compare URI to key type
 // --------------------------------------------------------------------------------

Modified: xml/security/trunk/c/src/xenc/impl/XENCAlgorithmHandlerDefault.hpp
URL: http://svn.apache.org/viewvc/xml/security/trunk/c/src/xenc/impl/XENCAlgorithmHandlerDefault.hpp?rev=991666&r1=991665&r2=991666&view=diff
==============================================================================
--- xml/security/trunk/c/src/xenc/impl/XENCAlgorithmHandlerDefault.hpp (original)
+++ xml/security/trunk/c/src/xenc/impl/XENCAlgorithmHandlerDefault.hpp Wed Sep  1 19:36:57 2010
@@ -45,6 +45,7 @@ public:
 	
 	virtual ~XENCAlgorithmHandlerDefault() {};
 
+    virtual AlgorithmClassType getAlgorithmClass(const XMLCh* alg) const;
 
 	virtual unsigned int decryptToSafeBuffer(
 		TXFMChain * cipherText,