Move credential usage enum to Credential class.
[shibboleth/xmltooling.git] / xmltooling / security / BasicX509Credential.h
index b6accbe..f76465b 100644 (file)
@@ -36,6 +36,11 @@ namespace xmltooling {
     class XMLTOOL_API BasicX509Credential : public virtual X509Credential
     {
     protected:
+        /**
+         * Constructor.
+         * 
+         * @param ownCerts  true iff any certificates subsequently stored should be freed by destructor
+         */
         BasicX509Credential(bool ownCerts) : m_key(NULL), m_ownCerts(ownCerts), m_crl(NULL), m_keyInfo(NULL), m_compactKeyInfo(NULL) {
         }
 
@@ -79,67 +84,11 @@ namespace xmltooling {
     public:
         virtual ~BasicX509Credential();
         
-        const char* getAlgorithm() const {
-            if (m_key) {
-                switch (m_key->getKeyType()) {
-                    case XSECCryptoKey::KEY_RSA_PRIVATE:
-                    case XSECCryptoKey::KEY_RSA_PUBLIC:
-                    case XSECCryptoKey::KEY_RSA_PAIR:
-                        return "RSA";
-
-                    case XSECCryptoKey::KEY_DSA_PRIVATE:
-                    case XSECCryptoKey::KEY_DSA_PUBLIC:
-                    case XSECCryptoKey::KEY_DSA_PAIR:
-                        return "DSA";
-                    
-                    case XSECCryptoKey::KEY_HMAC:
-                        return "HMAC";
-
-                    case XSECCryptoKey::KEY_SYMMETRIC: {
-                        XSECCryptoSymmetricKey* skey = static_cast<XSECCryptoSymmetricKey*>(m_key);
-                        switch (skey->getSymmetricKeyType()) {
-                            case XSECCryptoSymmetricKey::KEY_3DES_192:
-                                return "DESede";
-                            case XSECCryptoSymmetricKey::KEY_AES_128:
-                                return "AES";
-                            case XSECCryptoSymmetricKey::KEY_AES_192:
-                                return "AES";
-                            case XSECCryptoSymmetricKey::KEY_AES_256:
-                                return "AES";
-                        }
-                    }
-                }
-            }
-            return NULL;
-        }
-
-        unsigned int getKeySize() const {
-            if (m_key) {
-                switch (m_key->getKeyType()) {
-                    case XSECCryptoKey::KEY_RSA_PRIVATE:
-                    case XSECCryptoKey::KEY_RSA_PUBLIC:
-                    case XSECCryptoKey::KEY_RSA_PAIR: {
-                        XSECCryptoKeyRSA* rkey = static_cast<XSECCryptoKeyRSA*>(m_key);
-                        return rkey->getLength();
-                    }
-
-                    case XSECCryptoKey::KEY_SYMMETRIC: {
-                        XSECCryptoSymmetricKey* skey = static_cast<XSECCryptoSymmetricKey*>(m_key);
-                        switch (skey->getSymmetricKeyType()) {
-                            case XSECCryptoSymmetricKey::KEY_3DES_192:
-                                return 192;
-                            case XSECCryptoSymmetricKey::KEY_AES_128:
-                                return 128;
-                            case XSECCryptoSymmetricKey::KEY_AES_192:
-                                return 192;
-                            case XSECCryptoSymmetricKey::KEY_AES_256:
-                                return 256;
-                        }
-                    }
-                }
-            }
-            return 0;
+        UsageTypes getUsage() const {
+            return UNSPECIFIED_CREDENTIAL;
         }
+        const char* getAlgorithm() const;
+        unsigned int getKeySize() const;
 
         XSECCryptoKey* getPrivateKey() const {
             if (m_key) {