1 %define certsvc_test_build 0
4 Summary: Certification service
7 Group: Security/Certificate Management
9 Source0: %{name}-%{version}.tar.gz
11 BuildRequires: coreutils
12 BuildRequires: findutils
13 BuildRequires: pkgconfig(dlog)
14 BuildRequires: pkgconfig(klay)
15 BuildRequires: openssl3
16 BuildRequires: pkgconfig(openssl3)
17 BuildRequires: pkgconfig(libpcrecpp)
18 BuildRequires: pkgconfig(xmlsec1)
19 BuildRequires: pkgconfig(libxml-2.0)
20 BuildRequires: pkgconfig(libxslt)
21 BuildRequires: pkgconfig(libsystemd)
22 BuildRequires: pkgconfig(key-manager)
23 BuildRequires: pkgconfig(libtzplatform-config)
24 BuildRequires: pkgconfig(sqlite3)
25 BuildRequires: ca-certificates
26 BuildRequires: ca-certificates-devel
27 BuildRequires: ca-certificates-tizen-devel
28 Requires: ca-certificates
29 Requires: ca-certificates-tizen
30 Requires: security-config
31 # to prevent auto require lower version of libc including examples/resource/player/bin/player
32 # https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering?rd=PackagingDrafts/AutoProvidesAndRequiresFiltering
33 %global __requires_exclude_from examples/
36 %global user_name security_fw
37 %global group_name security_fw
38 %global server_stream /tmp/.cert-server.socket
39 %global smack_domain_name System
41 %global bin_dir %{?TZ_SYS_BIN:%TZ_SYS_BIN}%{!?TZ_SYS_BIN:%_bindir}
42 %global lib_dir %{?TZ_SYS_LIB:%TZ_SYS_LIB}%{!?TZ_SYS_LIB:%_libdir}
43 %global etc_dir %{?TZ_SYS_ETC:%TZ_SYS_ETC}%{!?TZ_SYS_ETC:/opt/etc}
44 %global rw_data_dir %{?TZ_SYS_SHARE:%TZ_SYS_SHARE}%{!?TZ_SYS_SHARE:/opt/share}
45 %global ro_data_dir %{?TZ_SYS_RO_SHARE:%TZ_SYS_RO_SHARE}%{!?TZ_SYS_RO_SHARE:%_datadir}
46 %global rw_app_dir %{?TZ_SYS_RW_APP:%TZ_SYS_RW_APP}%{!?TZ_SYS_RW_APP:/opt/usr/apps}
48 %global cert_svc_path %rw_data_dir/cert-svc
49 %global cert_svc_ro_path %ro_data_dir/cert-svc
50 %global cert_svc_db_path %cert_svc_path/dbspace
51 %global cert_svc_pkcs12 %cert_svc_path/pkcs12
52 %global cert_svc_ca_bundle %cert_svc_path/ca-certificate.crt
53 %global cert_svc_examples %cert_svc_ro_path/examples
54 %global cert_svc_tests %rw_app_dir/cert-svc-tests
60 Summary: Certification service (development files)
61 Group: Development/Libraries
62 Requires: %{name} = %{version}-%{release}
65 Certification service (development files)
67 %if 0%{?certsvc_test_build}
69 Summary: Certification service (tests)
70 Group: Security/Testing
71 Requires: ca-certificates-tizen
72 Requires: %{name} = %{version}-%{release}
73 Requires: %{name}-test-binaries = %{version}-%{release}
76 Certification service (tests)
78 %package test-binaries
79 Summary: Certification service (test binaries)
80 Group: Security/Testing
82 Requires: %{name}-test = %{version}-%{release}
84 %description test-binaries
85 Certification service (test binaries)
92 %if 0%{?tizen_build_devel_mode}
93 export CFLAGS="$CFLAGS -DTIZEN_ENGINEER_MODE"
94 export CXXFLAGS="$CXXFLAGS -DTIZEN_ENGINEER_MODE"
95 export FFLAGS="$FFLAGS -DTIZEN_ENGINEER_MODE"
99 export CFLAGS="$CFLAGS -DTIZEN_EMULATOR_MODE"
100 export CXXFLAGS="$CXXFLAGS -DTIZEN_EMULATOR_MODE"
101 export FFLAGS="$FFLAGS -DTIZEN_EMULATOR_MODE"
104 # gcc v9 and new Tizen toolchain adds Wall and this code pretty much always checks string & buffer lenghts
105 export CFLAGS="$CFLAGS -Wno-stringop-truncation -Wno-stringop-overflow"
106 export CXXFLAGS="$CXXFLAGS -Wno-stringop-truncation -Wno-stringop-overflow"
108 %{!?build_type:%define build_type "Release"}
109 %cmake . -DVERSION=%version \
110 -DINCLUDEDIR=%_includedir \
111 -DUSER_NAME=%user_name \
112 -DGROUP_NAME=%group_name \
113 -DSERVER_STREAM=%server_stream \
114 -DSMACK_DOMAIN_NAME=%smack_domain_name \
115 -DRO_DATA_DIR=%ro_data_dir \
118 -DTZ_SYS_CA_CERTS=%TZ_SYS_CA_CERTS \
119 -DTZ_SYS_CA_CERTS_ORIG=%TZ_SYS_CA_CERTS_ORIG \
120 -DTZ_SYS_CA_BUNDLE=%TZ_SYS_CA_BUNDLE \
121 -DTZ_SYS_RO_CA_CERTS=%TZ_SYS_RO_CA_CERTS \
122 -DTZ_SYS_RO_CA_BUNDLE=%TZ_SYS_RO_CA_BUNDLE \
123 -DCERT_SVC_CA_BUNDLE=%cert_svc_ca_bundle \
124 -DCERT_SVC_PATH=%cert_svc_path \
125 -DCERT_SVC_RO_PATH=%cert_svc_ro_path \
126 -DCERT_SVC_PKCS12=%cert_svc_pkcs12 \
127 -DCERT_SVC_DB_PATH=%cert_svc_db_path \
128 %if 0%{?certsvc_test_build}
129 -DCERTSVC_TEST_BUILD=1 \
130 -DCERT_SVC_TESTS=%cert_svc_tests \
131 -DCERT_SVC_EXAMPLES=%cert_svc_examples \
133 -DCMAKE_BUILD_TYPE=%build_type \
134 -DSYSTEMD_UNIT_DIR=%_unitdir
140 %install_service sockets.target.wants cert-server.socket
142 mkdir -p %buildroot%cert_svc_pkcs12
144 touch %buildroot%cert_svc_db_path/certs-meta.db-journal
146 ln -sf %TZ_SYS_CA_BUNDLE %buildroot%cert_svc_ca_bundle
151 systemctl stop cert-server.service
156 systemctl daemon-reload
159 systemctl start cert-server.socket
163 systemctl restart cert-server.socket
166 %postun -p /sbin/ldconfig
169 %manifest %name.manifest
171 %_unitdir/cert-server.service
172 %_unitdir/cert-server.socket
173 %_unitdir/sockets.target.wants/cert-server.socket
174 %_libdir/libcert-svc-vcore.so.*
176 %dir %attr(-, %{user_name}, %{group_name}) %cert_svc_path
177 %dir %attr(-, %{user_name}, %{group_name}) %cert_svc_pkcs12
178 %dir %attr(-, %{user_name}, %{group_name}) %cert_svc_db_path
179 %attr(-, %{user_name}, %{group_name}) %cert_svc_ca_bundle
180 %attr(-, %{user_name}, %{group_name}) %cert_svc_db_path/certs-meta.db
181 %attr(-, %{user_name}, %{group_name}) %cert_svc_db_path/certs-meta.db-journal
182 %attr(-, %{user_name}, %{group_name}) %cert_svc_ro_path
185 %manifest %name.manifest
188 %_libdir/libcert-svc-vcore.so
190 %if 0%{?certsvc_test_build}
192 %manifest %name.manifest
193 %bin_dir/cert-svc-test*
196 %cert_svc_tests/certs
197 %_libdir/libcert-svc-validator-plugin.so
199 %bin_dir/cert-svc-example*
203 %manifest %name.manifest