@@ -24,10 +24,10 @@ print_log() {
2424 echo " [$LOG_TAG ] $@ " >> $LOG_PATH
2525}
2626
27- move_user_cert () {
27+ move_custom_cert () {
2828 print_log " Backup user custom certificates"
2929 if [ " $( ls -A /data/local/tmp/cert) " ]; then
30- cp -f /data/local/tmp/cert/* $MODDIR /certificates/
30+ cp -f /data/local/tmp/cert/* $MODDIR /certificates
3131 cp -f /data/local/tmp/cert/* /data/misc/user/0/cacerts-added/
3232 else
3333 print_log " The directory '/data/local/tmp/cert' is empty."
@@ -56,6 +56,28 @@ fix_system_permissions() {
5656 print_log " move cert status:$? "
5757}
5858
59+ fix_system_permissions14 () {
60+ # diff
61+ print_log " fix permissions: $1 "
62+ chown -R system:system " $1 "
63+ chown root:shell " $1 "
64+ chmod -R 644 " $1 "
65+ chmod 755 " $1 "
66+ print_log " fix permissions: $? "
67+ }
68+
69+ set_selinux_context (){
70+ [ " $( getenforce) " = " Enforcing" ] || return 0
71+ default_selinux_context=u:object_r:system_file:s0
72+ selinux_context=$( ls -Zd $1 | awk ' {print $1}' )
73+
74+ if [ -n " $selinux_context " ] && [ " $selinux_context " != " ?" ]; then
75+ chcon -R $selinux_context $2
76+ else
77+ chcon -R $default_selinux_context $2
78+ fi
79+ }
80+
5981# Android version <= 13 execute
6082if [ " $sdk_version_number " -le 33 ]; then
6183 print_log " start move cert !"
@@ -65,28 +87,38 @@ if [ "$sdk_version_number" -le 33 ]; then
6587 cp -u /data/misc/user/0/cacerts-added/* $MODDIR /certificates/
6688 # Android 13 or lower versions perform
6789 print_log " Backup user custom certificates"
68- move_user_cert
90+ move_custom_cert
6991 fix_user_permissions
7092
71- print_log " mount: /system/etc/security/cacerts/ "
72- mount -t tmpfs tmpfs /system/etc/security/cacerts/
93+ print_log " mount: /system/etc/security/cacerts"
94+ mount -t tmpfs tmpfs /system/etc/security/cacerts
7395 print_log " mount status:$? "
7496
75- print_log " move cert: /system/etc/security/cacerts/ "
76- cp -f $MODDIR /certificates/* /system/etc/security/cacerts/
97+ print_log " move cert: /system/etc/security/cacerts"
98+ cp -f $MODDIR /certificates/* /system/etc/security/cacerts
7799 print_log " move cert status:$? "
78-
100+ fix_system_permissions
79101 print_log " certificates installed"
80102else
81103
82104 print_log " start move cert !"
83105 print_log " current sdk version is $sdk_version_number "
84106 print_log " Backup system certificates"
85- cp -u /apex/com.android.conscrypt/cacerts/* /data/adb/modules/MoveCertificate/certificates
86- cp -u /data/misc/user/0/cacerts-added/* /data/adb/modules/MoveCertificate/certificates
107+ mount -t tmpfs tmpfs $MODDIR /certificates
108+ cp -u /apex/com.android.conscrypt/cacerts/* $MODDIR /certificates
109+ cp -u /data/misc/user/0/cacerts-added/* $MODDIR /certificates
87110 print_log " Backup user custom certificates"
88- move_user_cert
111+ move_custom_cert
89112 fix_user_permissions
90- fix_system_permissions /data/adb/modules/MoveCertificate /certificates
113+ fix_system_permissions14 $MODDIR /certificates
91114
115+ print_log " find system conscrypt directory"
116+ apex_dir=$( find /apex -type d -name " com.android.conscrypt@*" )
117+ print_log " find conscrypt directory: $apex_dir "
118+
119+ set_selinux_context /apex/com.android.conscrypt/cacerts $MODDIR /certificates
120+ # These two directories are mapped to the same block
121+ mount -o bind $MODDIR /certificates /apex/com.android.conscrypt/cacerts
122+ mount -o bind $MODDIR /certificates $apex_dir /cacerts
123+ print_log " certificates installed"
92124fi
0 commit comments