705562c59c4aabde3d0d90e42d060d1ad23284b8
[platform/core/test/security-tests.git] / src / ckm / privileged / CMakeLists.txt
1 # Copyright (c) 2013-2019 Samsung Electronics Co., Ltd All Rights Reserved
2 #
3 #   Licensed under the Apache License, Version 2.0 (the "License");
4 #   you may not use this file except in compliance with the License.
5 #   You may obtain a copy of the License at
6 #
7 #       http://www.apache.org/licenses/LICENSE-2.0
8 #
9 #   Unless required by applicable law or agreed to in writing, software
10 #   distributed under the License is distributed on an "AS IS" BASIS,
11 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 #   See the License for the specific language governing permissions and
13 #   limitations under the License.
14 #
15 # @file        CMakeLists.txt
16 # @author      Bartlomiej Grzelewski (b.grzelewski@samsung.com)
17 # @author      Krzysztof Jackiewicz (k.jackiewicz@samsung.com)
18 # @brief
19 #
20
21 INCLUDE(GNUInstallDirs)
22
23 SET(EIV_TEST_XML_FILENAME "encrypted_initial_values.xml")
24 SET(EIV_TEST_XML ${CMAKE_CURRENT_SOURCE_DIR}/${EIV_TEST_XML_FILENAME})
25 SET(EIV_KEY_TO_BE_IMPORTED "KeyOne16BytesLen")
26 SET(EIV_PLAIN_MESSAGE "ShortTestMessage")
27 SET(EIV_MESSAGE_ENCRYPTION_IV "abcdefghijklmnop")
28
29 SET(EIV_TEST_ASYM_XML_FILENAME "encrypted_initial_values_asym.xml")
30 SET(EIV_TEST_ASYM_XML ${CMAKE_CURRENT_SOURCE_DIR}/${EIV_TEST_ASYM_XML_FILENAME})
31
32 # encrypt ShortTestMessage using the imported key and 'abcdefghijklmnop' IV
33 EXECUTE_PROCESS(
34     COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/aes_128_cbc_encrypt.sh ${EIV_KEY_TO_BE_IMPORTED} ${EIV_MESSAGE_ENCRYPTION_IV}
35     OUTPUT_VARIABLE EIV_ENCRYPTED_MESSAGE_HEX
36     ERROR_VARIABLE EIV_ENCRYPTION_STDERR
37     RESULT_VARIABLE EIV_ENCRYPTION_RESULT
38 )
39
40 IF(NOT ${EIV_ENCRYPTION_RESULT} STREQUAL "0")
41     MESSAGE(FATAL_ERROR "Encryption failed: ${EIV_ENCRYPTION_STDERR}")
42 ENDIF(NOT ${EIV_ENCRYPTION_RESULT} STREQUAL "0")
43
44 SET(EIV_FILES ${EIV_TEST_XML} ${EIV_TEST_ASYM_XML})
45
46 # prepare initial values xml target
47 ADD_CUSTOM_COMMAND(OUTPUT ${EIV_FILES}
48     COMMAND echo -n THIS/STRING/MUST/BE/REPLACED/IN/REAL/DEVICE= | base64 --decode > /tmp/encryption_key
49
50     COMMAND echo -n ${EIV_KEY_TO_BE_IMPORTED} > /tmp/key
51     COMMAND ${CMAKE_INSTALL_FULL_BINDIR}/ckm_initial_values -d /tmp/key -k /tmp/encryption_key -n TEI_0 -t Key -s AES -b hardware > ${EIV_TEST_XML}
52
53     COMMAND openssl genpkey -algorithm RSA -outform DER > /tmp/prvkey
54     COMMAND openssl rsa -in /tmp/prvkey -inform DER -pubout -outform DER > /tmp/pubkey
55     COMMAND ${CMAKE_INSTALL_FULL_BINDIR}/ckm_initial_values -d /tmp/prvkey -k /tmp/encryption_key -n TEI_RSA_PRV -t Key -s RSA_PRV > ${EIV_TEST_ASYM_XML}
56     COMMAND ${CMAKE_INSTALL_FULL_BINDIR}/ckm_initial_values -d /tmp/pubkey -k /tmp/encryption_key -n TEI_RSA_PUB -t Key -s RSA_PUB -x ${EIV_TEST_ASYM_XML}
57
58     COMMAND openssl genpkey -algorithm RSA -outform PEM > /tmp/prvkey.pem
59     COMMAND openssl pkcs8 -topk8 -inform PEM -in /tmp/prvkey.pem -outform DER -nocrypt -out /tmp/prvkey
60     COMMAND openssl rsa -in /tmp/prvkey -inform DER -pubout -outform DER > /tmp/pubkey
61     COMMAND ${CMAKE_INSTALL_FULL_BINDIR}/ckm_initial_values -d /tmp/prvkey -k /tmp/encryption_key -n TEI_RSA_PKCS8_PRV -t Key -s RSA_PRV -x ${EIV_TEST_ASYM_XML}
62     COMMAND ${CMAKE_INSTALL_FULL_BINDIR}/ckm_initial_values -d /tmp/pubkey -k /tmp/encryption_key -n TEI_RSA_PKCS8_PUB -t Key -s RSA_PUB -x ${EIV_TEST_ASYM_XML}
63
64     COMMAND openssl genpkey -genparam -algorithm DSA -pkeyopt dsa_paramgen_bits:1024 -pkeyopt dsa_paramgen_q_bits:160 > /tmp/params.pem
65     COMMAND openssl genpkey -paramfile /tmp/params.pem -outform DER > /tmp/prvkey
66     COMMAND openssl dsa -in /tmp/prvkey -inform DER -pubout -outform DER > /tmp/pubkey
67     COMMAND ${CMAKE_INSTALL_FULL_BINDIR}/ckm_initial_values -d /tmp/prvkey -k /tmp/encryption_key -n TEI_DSA_PRV -t Key -s DSA_PRV -x ${EIV_TEST_ASYM_XML}
68     COMMAND ${CMAKE_INSTALL_FULL_BINDIR}/ckm_initial_values -d /tmp/pubkey -k /tmp/encryption_key -n TEI_DSA_PUB -t Key -s DSA_PUB -x ${EIV_TEST_ASYM_XML}
69
70     COMMENT "Generating encrypted initial values test xml"
71     VERBATIM
72 )
73
74 ADD_CUSTOM_TARGET(TARGET_EIV_TEST_XML DEPENDS ${EIV_FILES})
75
76 INSTALL(FILES ${EIV_FILES} DESTINATION ${CKM_TEST_DIR})
77
78 # ckm-tests
79 PKG_CHECK_MODULES(CKM_DEP
80     REQUIRED
81     libsmack
82     dbus-1
83 )
84
85 SET(CKM_SOURCES
86     access_provider2.cpp
87     async-api.cpp
88     capi-access_control.cpp
89     ckm-privileged-common.cpp
90     initial-values.cpp
91     main.cpp
92     system-db.cpp
93 )
94
95 INCLUDE_DIRECTORIES(SYSTEM ${CKM_DEP_INCLUDE_DIRS})
96 INCLUDE_DIRECTORIES(
97     ${PROJECT_SOURCE_DIR}/src/common
98     ..
99     .
100 )
101
102 ADD_EXECUTABLE(${TARGET_CKM_PRIVILEGED_TESTS} ${CKM_SOURCES})
103
104 ADD_DEPENDENCIES(${TARGET_CKM_PRIVILEGED_TESTS} TARGET_EIV_TEST_XML)
105
106 TARGET_LINK_LIBRARIES(${TARGET_CKM_PRIVILEGED_TESTS}
107     ${TARGET_CKM_TEST_COMMON}
108     ${CKM_DEP_LIBRARIES}
109     ${COMMON_TARGET_TEST}
110 )
111
112 TARGET_COMPILE_DEFINITIONS(${TARGET_CKM_PRIVILEGED_TESTS}
113     PRIVATE EIV_PLAIN_MESSAGE="${EIV_PLAIN_MESSAGE}"
114     PRIVATE EIV_ENCRYPTED_MESSAGE_HEX="${EIV_ENCRYPTED_MESSAGE_HEX}"
115     PRIVATE EIV_MESSAGE_ENCRYPTION_IV="${EIV_MESSAGE_ENCRYPTION_IV}"
116     PRIVATE EIV_TEST_XML_FILENAME="${EIV_TEST_XML_FILENAME}"
117     PRIVATE EIV_TEST_ASYM_XML_FILENAME="${EIV_TEST_ASYM_XML_FILENAME}"
118 )
119
120 INSTALL(TARGETS ${TARGET_CKM_PRIVILEGED_TESTS} DESTINATION bin)