diff options
Diffstat (limited to 'sql/encryption_keys.cc')
-rw-r--r-- | sql/encryption_keys.cc | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/sql/encryption_keys.cc b/sql/encryption_keys.cc index b31ec270a8f..8a9a17a5452 100644 --- a/sql/encryption_keys.cc +++ b/sql/encryption_keys.cc @@ -1,7 +1,23 @@ +/* Copyright (C) 2015 MariaDB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + #include <my_global.h> #include <mysql/plugin_encryption.h> #include "log.h" #include "sql_plugin.h" +#include <my_crypt.h> /* there can be only one encryption plugin enabled */ static plugin_ref encryption_key_manager= 0; @@ -34,6 +50,34 @@ uint get_encryption_key(uint version, uchar* key, uint *size) return BAD_ENCRYPTION_KEY_VERSION; } +int encrypt_data(const uchar* source, uint source_length, + uchar* dest, uint* dest_length, + const uchar* key, uint key_length, + const uchar* iv, uint iv_length, + int no_padding, uint key_version) +{ + if (encryption_key_manager) + return handle->encrypt(source, source_length, + dest, dest_length, key, key_length, + iv, iv_length, no_padding, key_version); + return 1; +} + + +int decrypt_data(const uchar* source, uint source_length, + uchar* dest, uint* dest_length, + const uchar* key, uint key_length, + const uchar* iv, uint iv_length, + int no_padding, uint key_version) +{ + if (encryption_key_manager) + return handle->decrypt(source, source_length, + dest, dest_length, key, key_length, + iv, iv_length, no_padding, key_version); + return 1; +} + + int initialize_encryption_plugin(st_plugin_int *plugin) { if (encryption_key_manager) @@ -49,6 +93,13 @@ int initialize_encryption_plugin(st_plugin_int *plugin) encryption_key_manager= plugin_lock(NULL, plugin_int_to_ref(plugin)); handle= (struct st_mariadb_encryption*) plugin->plugin->info; + + /* default encryption algorithm */ + if (!handle->encrypt) + handle->encrypt= (encrypt_decrypt_func)my_aes_encrypt_cbc; + if (!handle->decrypt) + handle->decrypt= (encrypt_decrypt_func)my_aes_decrypt_cbc; + return 0; } |