X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Flibhashkit%2Fencrypt.cc;h=dbc051ae2d5e81c9f8b3f4d41763c274bf9adba2;hb=2aab18117a2b078dd0eb366f3766a1fef06da695;hp=6446c0188a390fc5ec110a904688780a52cb510d;hpb=ec4b275c7dab0af781c8e2571021d4821736eef9;p=awesomized%2Flibmemcached diff --git a/src/libhashkit/encrypt.cc b/src/libhashkit/encrypt.cc index 6446c018..dbc051ae 100644 --- a/src/libhashkit/encrypt.cc +++ b/src/libhashkit/encrypt.cc @@ -15,20 +15,50 @@ #include "libhashkit/common.h" +#ifdef WITH_OPENSSL +# include +#endif + hashkit_string_st *hashkit_encrypt(hashkit_st *kit, const char *source, size_t source_length) { - return aes_encrypt(static_cast(kit->_key), source, source_length); +#ifdef WITH_OPENSSL + return aes_encrypt((encryption_context_t *) kit->_cryptographic_context, + (const unsigned char *) source, source_length); +#else + return aes_encrypt((aes_key_t *) kit->_cryptographic_context, source, + source_length); +#endif } hashkit_string_st *hashkit_decrypt(hashkit_st *kit, const char *source, size_t source_length) { - return aes_decrypt(static_cast(kit->_key), source, source_length); +#ifdef WITH_OPENSSL + return aes_decrypt((encryption_context_t *) kit->_cryptographic_context, + (const unsigned char *) source, source_length); +#else + return aes_decrypt((aes_key_t *)kit->_cryptographic_context, source, source_length); +#endif } +#ifdef WITH_OPENSSL +bool hashkit_key(hashkit_st *kit, const char *key, const size_t key_length) { + kit->_cryptographic_context = (encryption_context_t *) malloc(sizeof(encryption_context_t)); + ((encryption_context_t *) kit->_cryptographic_context)->encryption_context = EVP_CIPHER_CTX_new(); + ((encryption_context_t *) kit->_cryptographic_context)->decryption_context = EVP_CIPHER_CTX_new(); + if (((encryption_context_t *) kit->_cryptographic_context)->encryption_context == NULL + || ((encryption_context_t *) kit->_cryptographic_context)->decryption_context == NULL) + { + return false; + } + return aes_initialize((const unsigned char *) key, key_length, + (encryption_context_t *) kit->_cryptographic_context); +} +#else bool hashkit_key(hashkit_st *kit, const char *key, const size_t key_length) { - if (kit->_key) { - free(kit->_key); + if (kit->_cryptographic_context) { + free(kit->_cryptographic_context); } - kit->_key = aes_create_key(key, key_length); + kit->_cryptographic_context = aes_create_key(key, key_length); - return bool(kit->_key); + return bool(kit->_cryptographic_context); } +#endif \ No newline at end of file