// ---------------------------------------------------
+class CryptoNone : public CryptoHandler {
+public:
+ CryptoNone() { }
+ ~CryptoNone() {}
+ int get_type() const {
+ return CEPH_CRYPTO_NONE;
+ }
+ int create(bufferptr& secret);
+ int validate_secret(bufferptr& secret);
+ void encrypt(const bufferptr& secret, const bufferlist& in,
+ bufferlist& out, std::string &error) const;
+ void decrypt(const bufferptr& secret, const bufferlist& in,
+ bufferlist& out, std::string &error) const;
+};
+
int CryptoNone::create(bufferptr& secret)
{
return 0;
// ---------------------------------------------------
+
+class CryptoAES : public CryptoHandler {
+public:
+ CryptoAES() { }
+ ~CryptoAES() {}
+ int get_type() const {
+ return CEPH_CRYPTO_AES;
+ }
+ int create(bufferptr& secret);
+ int validate_secret(bufferptr& secret);
+ void encrypt(const bufferptr& secret, const bufferlist& in,
+ bufferlist& out, std::string &error) const;
+ void decrypt(const bufferptr& secret, const bufferlist& in,
+ bufferlist& out, std::string &error) const;
+};
+
+
#ifdef USE_CRYPTOPP
# define AES_KEY_LEN ((size_t)CryptoPP::AES::DEFAULT_KEYLENGTH)
# define AES_BLOCK_LEN ((size_t)CryptoPP::AES::BLOCKSIZE)
{
bl.append(encode_base64());
}
+
+
+// ------------------
+
+CryptoHandler *CryptoHandler::create(int type)
+{
+ switch (type) {
+ case CEPH_CRYPTO_NONE:
+ return new CryptoNone;
+ case CEPH_CRYPTO_AES:
+ return new CryptoAES;
+ default:
+ return NULL;
+ }
+}
bufferlist& out, std::string &error) const = 0;
virtual void decrypt(const bufferptr& secret, const bufferlist& in,
bufferlist& out, std::string &error) const = 0;
+
+ static CryptoHandler *create(int type);
};
extern int get_random_bytes(char *buf, int len);
extern uint64_t get_random(uint64_t min_val, uint64_t max_val);
-class CryptoNone : public CryptoHandler {
-public:
- CryptoNone() { }
- ~CryptoNone() {}
- int get_type() const {
- return CEPH_CRYPTO_NONE;
- }
- int create(bufferptr& secret);
- int validate_secret(bufferptr& secret);
- void encrypt(const bufferptr& secret, const bufferlist& in,
- bufferlist& out, std::string &error) const;
- void decrypt(const bufferptr& secret, const bufferlist& in,
- bufferlist& out, std::string &error) const;
-};
-
-class CryptoAES : public CryptoHandler {
-public:
- CryptoAES() { }
- ~CryptoAES() {}
- int get_type() const {
- return CEPH_CRYPTO_AES;
- }
- int create(bufferptr& secret);
- int validate_secret(bufferptr& secret);
- void encrypt(const bufferptr& secret, const bufferlist& in,
- bufferlist& out, std::string &error) const;
- void decrypt(const bufferptr& secret, const bufferlist& in,
- bufferlist& out, std::string &error) const;
-};
-
#endif
_admin_socket->register_command("log dump", "log dump", _admin_hook, "dump recent log entries to log file");
_admin_socket->register_command("log reopen", "log reopen", _admin_hook, "reopen log file");
- _crypto_none = new CryptoNone;
- _crypto_aes = new CryptoAES;
+ _crypto_none = CryptoHandler::create(CEPH_CRYPTO_NONE);
+ _crypto_aes = CryptoHandler::create(CEPH_CRYPTO_AES);
}
CephContext::~CephContext()
struct md_config_t;
class CephContextHook;
class CephContextObs;
-class CryptoNone;
-class CryptoAES;
class CryptoHandler;
namespace ceph {
std::map<std::string, AssociatedSingletonObject*> _associated_objs;
// crypto
- CryptoNone *_crypto_none;
- CryptoAES *_crypto_aes;
+ CryptoHandler *_crypto_none;
+ CryptoHandler *_crypto_aes;
// experimental
CephContextObs *_cct_obs;