Add automation for code coverage
[platform/core/security/cert-svc.git] / etc / db / initialize_store_db.sh
1 #!/bin/bash
2
3 DB_PATH=$1
4 SYSTEM_SSL_DIR=$2
5
6 ROOT_CERT_SQL=root-cert.sql
7
8 function get_field()
9 {
10         local fname=$1
11         local field=$2
12
13         echo "`openssl x509 -in $fname -subject -noout -nameopt multiline \
14                         | grep $field \
15                         | cut -f 2 -d =`"
16 }
17
18 function get_common_name()
19 {
20         local fname=$1
21         local common_name=
22
23         common_name=`get_field $fname commonName`
24         if [[ $common_name == "" ]]; then
25                 common_name=`get_field $fname organizationUnitName`
26         fi
27         if [[ $common_name == "" ]]; then
28                 common_name=`get_field $fname organizationName`
29         fi
30         if [[ $common_name == "" ]]; then
31                 common_name=`get_field $fname emailAddress`
32         fi
33
34         echo "${common_name:1}" # cut first whitespace
35 }
36
37 function initialize_store_version()
38 {
39         sqlite3 $DB_PATH "INSERT INTO schema_info (version, description) \
40                                           VALUES (2, 'Tizen 3.0');"
41 }
42
43 function initialize_store_data()
44 {
45         echo "BEGIN TRANSACTION;" >> $ROOT_CERT_SQL
46         for fname in `find $SYSTEM_SSL_DIR/* | sort`
47         do
48                 gname=`echo ${fname##*/}`
49                 if [[ ! $gname =~ ^[0-9a-z]{8}\.[0-9]$ ]]; then
50                         continue
51                 fi
52
53                 cert=`openssl x509 -in $fname -outform PEM`
54                 subject_hash=`openssl x509 -in $fname -subject_hash -noout`
55                 subject_hash_old=`openssl x509 -in $fname -subject_hash_old -noout`
56                 common_name=`get_common_name $fname`
57                 echo "INSERT INTO ssl (gname, certificate, file_hash, subject_hash,\
58 common_name, enabled, is_root_app_enabled) VALUES\
59 ('$gname', '$cert', '$subject_hash', '$subject_hash_old','$common_name', \
60 1, 1);" >> $ROOT_CERT_SQL
61         done
62         echo "END TRANSACTION;" >> $ROOT_CERT_SQL
63 }
64
65 touch $ROOT_CERT_SQL
66
67 initialize_store_version
68 initialize_store_data
69
70 sqlite3 $DB_PATH ".read $ROOT_CERT_SQL" && rm $ROOT_CERT_SQL