Initialize Tizen 2.3
[framework/osp/security-service.git] / tool / mk-cert-db.sh
1 #!/bin/bash
2
3 SRC_PATH=/opt/etc/ssl/certs
4 CRT=certs/ca-certificate.crt
5 DBSPACE_DIR=dbspace
6 USERCERT_DIR=certs/usercert/key
7 ROOTCERT_DIR=certs/rootcert
8 ROOTCERT_PATH=/opt/usr/share/$ROOTCERT_DIR
9 ROOTCERT_DB=$DBSPACE_DIR/.security-rootcert.db
10 USERCERT_DB=$DBSPACE_DIR/.security-usercert.db
11
12 check_error()
13 {
14 error_code=$?
15 if [ "$error_code" != "0" ]
16 then
17         exit $error_code
18 fi
19 }
20
21 mkdir -p $ROOTCERT_DIR
22 check_error
23 mkdir -p $USERCERT_DIR
24 check_error
25 mkdir -p $DBSPACE_DIR
26 check_error
27
28 sqlite3 -line $ROOTCERT_DB 'CREATE TABLE IF NOT EXISTS rootcert (certId INTEGER PRIMARY KEY AUTOINCREMENT, certType SMALLINT DEFAULT 0, certFormat SMALLINT DEFAULT 0, fileName VARCHAR, subjectNameLen SMALLINT DEFAULT 20, subjectName VARCHAR, issuerNameLen SMALLINT DEFAULT 20, issuerName VARCHAR, parentCa SMALLINT, installed VARCHAR, serialNo VARCHAR, serialNoLen SMALLINT DEFAULT 20)'
29 check_error
30
31 sqlite3 -line $USERCERT_DB 'CREATE TABLE IF NOT EXISTS usercert (certId INTEGER PRIMARY KEY AUTOINCREMENT, certPubKeyHash VARCHAR DEFAULT null, certFormat SMALLINT DEFAULT 0, fileName VARCHAR, subjectNameLen SMALLINT DEFAULT 20, subjectName VARCHAR, issuerNameLen SMALLINT DEFAULT 20, issuerName VARCHAR, prvKeyPath VARCHAR DEFAULT null, prvKeyLen SMALLINT DEFAULT 0, parentCa SMALLINT DEFAULT 0, installed VARCHAR, serialNo VARCHAR, serialNoLen SMALLINT DEFAULT 20)'
32 check_error
33
34 echo "Insert certificates ..."
35 let CNT=1
36 for NAME in `find $SRC_PATH -type f`
37 do
38         CNT_STR=`printf '%03d' $CNT`
39         PEM=$NAME
40         DER=$ROOTCERT_DIR/$CNT_STR.cert
41
42         echo "[$CNT_STR.cert] "
43
44         openssl x509 -in $PEM -inform PEM -out $DER -outform DER
45         check_error
46
47         SUBJECT_NAME=`openssl x509 -in $DER -inform DER -noout -subject | sed "s#^subject=[ \t]*##"`
48         check_error
49         SUBJECT_NAME_LEN=`echo -n "$SUBJECT_NAME" | wc -c`
50         check_error
51         let SUBJECT_NAME_LEN=($SUBJECT_NAME_LEN+2)/3*4
52         check_error
53         SUBJECT_NAME=`echo -n "$SUBJECT_NAME" | base64 -w 0`
54         check_error
55
56         ISSUER_NAME=`openssl x509 -in $DER -inform DER -noout -issuer | sed "s#^issuer=[ \t]*##"`
57         check_error
58         ISSUER_NAME_LEN=`echo -n "$ISSUER_NAME" | wc -c`
59         check_error
60         let ISSUER_NAME_LEN=($ISSUER_NAME_LEN+2)/3*4
61         check_error
62         ISSUER_NAME=`echo -n "$ISSUER_NAME" | base64 -w 0`
63         check_error
64
65         SERIAL_NO_LEN=`openssl x509 -in $DER -inform DER -noout -serial | sed "s#^serial=[ \t]*##" | xxd -r -p | wc -c`
66         check_error
67         let SERIAL_NO_LEN=($SERIAL_NO_LEN+2)/3*4
68         check_error
69         SERIAL_NO=`openssl x509 -in $DER -inform DER -noout -serial | sed "s#^serial=[ \t]*##" | xxd -r -p | base64 -w 0`
70         check_error
71
72         openssl x509 -in $DER -inform DER -outform PEM >> $CRT
73         check_error
74
75         sqlite3 -line $ROOTCERT_DB "INSERT INTO rootcert (certId, certType, certFormat, fileName, subjectNameLen, subjectName, issuerNameLen, issuerName, parentCa, installed, serialNo, serialNoLen) VALUES ($CNT, 4, 1, '$ROOTCERT_PATH/$CNT_STR.cert', $SUBJECT_NAME_LEN, '$SUBJECT_NAME', $ISSUER_NAME_LEN, '$ISSUER_NAME', $CNT, 'T', '$SERIAL_NO', $SERIAL_NO_LEN)"
76         check_error
77
78         let CNT=$CNT+1
79 done
80 echo "Insert certificates ... done"