summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsangwan.kwon <sangwan.kwon@samsung.com>2016-09-08 13:34:00 +0900
committersangwan kwon <sangwan.kwon@samsung.com>2016-09-07 22:34:10 -0700
commit07d63322d79148440b4f48d74e2165ce235b8545 (patch)
treedb93040fcd2684969642f285aec7e42b01aab70f
parenta114c059b85275c3b4ede0fc59a921e1ac6523e3 (diff)
downloadcert-svc-07d63322d79148440b4f48d74e2165ce235b8545.tar.gz
cert-svc-07d63322d79148440b4f48d74e2165ce235b8545.tar.bz2
cert-svc-07d63322d79148440b4f48d74e2165ce235b8545.zip
Add schema version to db and check on cert-server
* This is for support db upgrade. Change-Id: I602a38d1e3e6286621955fd9bbefe8d1f6082059
-rw-r--r--etc/cert_svc_store_db.sql4
-rwxr-xr-xetc/initialize_store_db.sh13
-rw-r--r--vcore/server/include/cert-server-db.h5
-rw-r--r--vcore/server/src/cert-server-db.c30
4 files changed, 49 insertions, 3 deletions
diff --git a/etc/cert_svc_store_db.sql b/etc/cert_svc_store_db.sql
index 958351d..b0ef682 100644
--- a/etc/cert_svc_store_db.sql
+++ b/etc/cert_svc_store_db.sql
@@ -2,6 +2,10 @@ PRAGMA foreign_keys = ON;
BEGIN TRANSACTION;
+CREATE TABLE schema_info (
+ version INT PRIMARY KEY not null,
+ description TEXT);
+
CREATE TABLE ssl (
gname TEXT PRIMARY KEY not null,
certificate TEXT not null,
diff --git a/etc/initialize_store_db.sh b/etc/initialize_store_db.sh
index 17d54c5..3d1fd63 100755
--- a/etc/initialize_store_db.sh
+++ b/etc/initialize_store_db.sh
@@ -34,7 +34,13 @@ function get_common_name()
echo "${common_name:1}" # cut first whitespace
}
-function initialize_store()
+function initialize_store_version()
+{
+ sqlite3 $DB_PATH "INSERT INTO schema_info (version, description) \
+ VALUES (2, 'Tizen 3.0');"
+}
+
+function initialize_store_data()
{
echo "BEGIN TRANSACTION;" >> $ROOT_CERT_SQL
for fname in `find $SYSTEM_SSL_DIR/* | sort`
@@ -51,7 +57,7 @@ function initialize_store()
echo "INSERT INTO ssl \
(gname, certificate, file_hash, subject_hash, \
- common_name, enabled, is_root_app_enabled) values \
+ common_name, enabled, is_root_app_enabled) VALUES \
(\"$gname\", \"$cert\", \"$subject_hash\", \"$subject_hash_old\", \
\"$common_name\", 1, 1);" >> $ROOT_CERT_SQL
done
@@ -60,7 +66,8 @@ function initialize_store()
touch $ROOT_CERT_SQL
-initialize_store
+initialize_store_version
+initialize_store_data
cat $ROOT_CERT_SQL | sqlite3 $DB_PATH
diff --git a/vcore/server/include/cert-server-db.h b/vcore/server/include/cert-server-db.h
index f73ec9e..20ae86f 100644
--- a/vcore/server/include/cert-server-db.h
+++ b/vcore/server/include/cert-server-db.h
@@ -28,6 +28,11 @@
extern sqlite3 *cert_store_db;
+typedef enum schema_version_t {
+ TIZEN_2_4 = 1,
+ TIZEN_3_0 = 2
+} schema_version;
+
int initialize_db(void);
void deinitialize_db(void);
int execute_insert_update_query(const char *query);
diff --git a/vcore/server/src/cert-server-db.c b/vcore/server/src/cert-server-db.c
index e5ff2ed..163087f 100644
--- a/vcore/server/src/cert-server-db.c
+++ b/vcore/server/src/cert-server-db.c
@@ -26,6 +26,33 @@
sqlite3 *cert_store_db = NULL;
+
+void check_schema_version(void)
+{
+ sqlite3_stmt *stmt = NULL;
+ char *query = NULL;
+
+ query = sqlite3_mprintf("SELECT version FROM schema_info WHERE version=%d",
+ TIZEN_3_0);
+
+ int result = execute_select_query(query, &stmt);
+
+ if (result != CERTSVC_SUCCESS) {
+ SLOGE("Failed to get schema version.");
+ return;
+ }
+
+ if (sqlite3_step(stmt) == SQLITE_ROW)
+ SLOGI("Database version is 2(Tizen 3.0)");
+ else
+ SLOGW("Database should be upgrade.");
+
+ if (query)
+ sqlite3_free(query);
+ if (stmt)
+ sqlite3_finalize(stmt);
+}
+
int initialize_db(void)
{
int result = CERTSVC_SUCCESS;
@@ -40,6 +67,9 @@ int initialize_db(void)
return CERTSVC_FAIL;
}
+ /* Check schema version for consistent on platform upgrade */
+ check_schema_version();
+
return CERTSVC_SUCCESS;
}