Bind transaction on whole queries
[platform/core/security/cert-svc.git] / etc / 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()
38 {
39         echo "BEGIN TRANSACTION;" >> $ROOT_CERT_SQL
40         for fname in `find $SYSTEM_SSL_DIR/* | sort`
41         do
42                 gname=`echo ${fname##*/}`
43                 if [[ ! $gname =~ ^[0-9a-z]{8}\.[0-9]$ ]]; then
44                         continue
45                 fi
46
47                 cert=`openssl x509 -in $fname -outform PEM`
48                 subject_hash=`openssl x509 -in $fname -subject_hash -noout`
49                 subject_hash_old=`openssl x509 -in $fname -subject_hash_old -noout`
50                 common_name=`get_common_name $fname`
51
52                 echo "INSERT INTO ssl \
53                                 (gname, certificate, file_hash, subject_hash, \
54                                 common_name, enabled, is_root_app_enabled) values \
55                                 (\"$gname\", \"$cert\", \"$subject_hash\", \"$subject_hash_old\", \
56                                 \"$common_name\", 1, 1);" >> $ROOT_CERT_SQL
57         done
58         echo "END TRANSACTION;" >> $ROOT_CERT_SQL
59 }
60
61 touch $ROOT_CERT_SQL
62
63 initialize_store
64
65 cat $ROOT_CERT_SQL | sqlite3 $DB_PATH
66
67 rm $ROOT_CERT_SQL