From f2ba0705f8d10fda2e1c7e3f3c963b874d5b9d25 Mon Sep 17 00:00:00 2001 From: Manasij Sur Roy Date: Thu, 15 Dec 2016 17:51:54 +0530 Subject: [PATCH] FIDO UAF ASM Framework initial version - Authenticator Specific Module (ASM) acts as abstraction layer on top of Authenticator(s). - Tizen FIDO UAF ASM supports various types of FIDO Authenticators via plugin architecture. - Both Bound and Roaming types supported. - BT and IoTivity connectivity supported. - Only First Factor support is provided. - Applications can not directly call ASM, instead they need to use fido-client APIs. - Includes a test authenticator : To interact with FIDO server, the product must have commercial authenticator(s). (Test Authenticator certificates are just self signed dummy, so it will fail if used with commercial FIDO server) Change-Id: If654570eeaad6072e9f87220c25627fefe5b3335 Signed-off-by: Manasij Sur Roy --- .gitignore | 5 + CMakeLists.txt | 21 + Instructions.txt | 55 + LICENSE.APLv2 | 202 ++ NOTICE | 3 + ble_roaming_agent/CMakeLists.txt | 45 + ble_roaming_agent/inc/BTRoamingKeys.h | 18 + ble_roaming_agent/src/bt_ragent_main.c | 41 + ble_roaming_agent/src/fido_gatt_server.c | 312 +++ ble_roaming_agent/src/fido_gatt_server.h | 9 + bt_roaming_agent/CMakeLists.txt | 45 + bt_roaming_agent/inc/BTRoamingKeys.h | 25 + bt_roaming_agent/inc/bt_server.h | 8 + bt_roaming_agent/src/bt_ragent_main.c | 37 + bt_roaming_agent/src/bt_server.c | 506 +++++ common/AsmHelper.h | 92 + common/cryptoutil/inc/asmcrypto.h | 78 + common/cryptoutil/src/AsmCrypto.cpp | 1381 +++++++++++++ common/datatypes/auth/AuthnrTypes.h | 403 ++++ common/datatypes/inc/AsmAuthRequest.h | 61 + common/datatypes/inc/AsmAuthResponse.h | 47 + common/datatypes/inc/AsmDeregRequest.h | 44 + common/datatypes/inc/AsmDeregResponse.h | 34 + common/datatypes/inc/AsmGetInfoRequest.h | 30 + common/datatypes/inc/AsmGetRegsRequest.h | 16 + common/datatypes/inc/AsmGetRegsResponse.h | 64 + common/datatypes/inc/AsmOpenSettingsRequest.h | 16 + common/datatypes/inc/AsmOpenSettingsResponse.h | 16 + common/datatypes/inc/AsmRegRequest.h | 52 + common/datatypes/inc/AsmRegResponse.h | 46 + common/datatypes/inc/AsmRequest.h | 103 + common/datatypes/inc/AsmResponse.h | 54 + common/datatypes/inc/GetInfoResponse.h | 44 + common/datatypes/src/AsmAuthRequest.cpp | 59 + common/datatypes/src/AsmAuthResponse.cpp | 41 + common/datatypes/src/AsmDeregRequest.cpp | 41 + common/datatypes/src/AsmDeregResponse.cpp | 16 + common/datatypes/src/AsmGetRegsRequest.cpp | 16 + common/datatypes/src/AsmGetRegsResponse.cpp | 59 + common/datatypes/src/AsmOpenSettingsRequest.cpp | 16 + common/datatypes/src/AsmOpenSettingsResponse.cpp | 16 + common/datatypes/src/AsmRegRequest.cpp | 63 + common/datatypes/src/AsmRegResponse.cpp | 41 + common/datatypes/src/AsmRequest.cpp | 112 + common/datatypes/src/AsmResponse.cpp | 53 + common/datatypes/src/AuthnrTypes.cpp | 16 + common/dbus_interfaces/CMakeLists.txt | 39 + common/dbus_interfaces/fido-asm.xml | 30 + common/fido-ra-acl-server.dat | Bin 0 -> 1017 bytes common/jsonutil/inc/JsonUtil.h | 80 + common/jsonutil/src/JsonUtil.cpp | 677 ++++++ common/uafv1tlvutil/inc/AttBasicFullTlvEncoder.h | 44 + common/uafv1tlvutil/inc/AttBasicSurrTlvEncoder.h | 44 + .../uafv1tlvutil/inc/AuthAssertionInfoTlvEncoder.h | 37 + .../uafv1tlvutil/inc/AuthCountersInfoTlvEncoder.h | 37 + common/uafv1tlvutil/inc/BufferTlvEncoder.h | 37 + common/uafv1tlvutil/inc/DeRegReqTlvEncoder.h | 44 + common/uafv1tlvutil/inc/DeRegRespTlvEncoder.h | 44 + common/uafv1tlvutil/inc/GetInfoReqTlvEncoder.h | 42 + common/uafv1tlvutil/inc/GetInfoRespTlvEncoder.h | 93 + common/uafv1tlvutil/inc/ITlvEncoder.h | 36 + common/uafv1tlvutil/inc/IntTlvEncoder.h | 37 + .../uafv1tlvutil/inc/RegAssertionInfoTlvEncoder.h | 42 + .../uafv1tlvutil/inc/RegAuthAssertionTlvEncoder.h | 51 + .../uafv1tlvutil/inc/RegCountersInfoTlvEncoder.h | 36 + common/uafv1tlvutil/inc/RegReqTlvEncoder.h | 44 + common/uafv1tlvutil/inc/RegRespTlvEncoder.h | 57 + .../uafv1tlvutil/inc/SignAuthAssertionTlvEncoder.h | 47 + common/uafv1tlvutil/inc/SignReqTlvEncoder.h | 44 + common/uafv1tlvutil/inc/SignRespTlvEncoder.h | 70 + common/uafv1tlvutil/inc/SignedDataTlvEncoder.h | 48 + common/uafv1tlvutil/inc/StringTlvEncoder.h | 37 + common/uafv1tlvutil/inc/Tlv.h | 114 + common/uafv1tlvutil/inc/TlvData.h | 91 + common/uafv1tlvutil/inc/Uafv1KrdTlvEncoder.h | 49 + common/uafv1tlvutil/src/AttBasicFullTlvEncoder.cpp | 113 + common/uafv1tlvutil/src/AttBasicSurrTlvEncoder.cpp | 101 + .../src/AuthAssertionInfoTlvEncoder.cpp | 96 + .../src/AuthCountersInfoTlvEncoder.cpp | 74 + common/uafv1tlvutil/src/BufferTlvEncoder.cpp | 51 + common/uafv1tlvutil/src/DeRegReqTlvEncoder.cpp | 135 ++ common/uafv1tlvutil/src/DeRegRespTlvEncoder.cpp | 83 + common/uafv1tlvutil/src/GetInfoReqTlvEncoder.cpp | 61 + common/uafv1tlvutil/src/GetInfoRespTlvEncoder.cpp | 678 ++++++ common/uafv1tlvutil/src/IntTlvEncoder.cpp | 65 + .../src/RegAssertionInfoTlvEncoder.cpp | 116 ++ .../src/RegAuthAssertionTlvEncoder.cpp | 163 ++ .../uafv1tlvutil/src/RegCountersInfoTlvEncoder.cpp | 99 + common/uafv1tlvutil/src/RegReqTlvEncoder.cpp | 170 ++ common/uafv1tlvutil/src/RegRespTlvEncoder.cpp | 135 ++ .../src/SignAuthAssertionTlvEncoder.cpp | 124 ++ common/uafv1tlvutil/src/SignReqTlvEncoder.cpp | 176 ++ common/uafv1tlvutil/src/SignRespTlvEncoder.cpp | 221 ++ common/uafv1tlvutil/src/SignedDataTlvEncoder.cpp | 160 ++ common/uafv1tlvutil/src/StringTlvEncoder.cpp | 52 + common/uafv1tlvutil/src/Tlv.cpp | 263 +++ common/uafv1tlvutil/src/TlvEncoderFactory.cpp | 74 + common/uafv1tlvutil/src/Uafv1KrdTlvEncoder.cpp | 157 ++ common/uiutil/inc/AcUiAdaptor.h | 50 + common/uiutil/inc/AsmUiCommonTypes.h | 45 + common/uiutil/inc/AuthUiFactory.h | 41 + common/uiutil/inc/IAuthUiAdaptor.h | 20 + common/uiutil/inc/PinAuthUiAdaptor.h | 45 + common/uiutil/inc/TCUiAdaptor.h | 45 + common/uiutil/src/AcUiAdaptor.cpp | 198 ++ common/uiutil/src/AuthUiFactory.cpp | 37 + common/uiutil/src/PinAuthUiAdaptor.cpp | 202 ++ common/uiutil/src/TCUiAdaptor.cpp | 153 ++ fido-asm.manifest | 9 + fido-ble-ragent.manifest | 5 + fido-bt-ragent.manifest | 5 + fido-roaming-agent.manifest | 5 + fido_tizen_auth.der | Bin 0 -> 940 bytes fido_tizen_auth.key | 30 + fido_tizen_auth_b64.txt | 20 + org.tizen.asmui.manifest | 5 + packaging/fido-asm.service | 10 + packaging/fido-asm.spec | 352 ++++ packaging/fido-ble-roaming-agent.service | 10 + packaging/fido-bt-roaming-agent.service | 10 + packaging/fido-roaming-agent.service | 10 + packaging/org.tizen.fido-asm.conf | 31 + packaging/org.tizen.fido-asm.service | 8 + roaming_agent/CMakeLists.txt | 47 + roaming_agent/inc/RoamingKeys.h | 16 + roaming_agent/src/iotcon_handler.c | 504 +++++ roaming_agent/src/iotcon_handler.h | 15 + roaming_agent/src/ragent_main.c | 43 + server/CMakeLists.txt | 75 + server/auth_discovery/inc/AuthIndexHanlder.h | 26 + server/auth_discovery/inc/AuthManager.h | 31 + server/auth_discovery/inc/BAuthStub.h | 72 + server/auth_discovery/inc/BleAdProvider.h | 39 + server/auth_discovery/inc/BleCon.h | 48 + server/auth_discovery/inc/BoundADProvider.h | 57 + server/auth_discovery/inc/BtAdProvider.h | 39 + server/auth_discovery/inc/BtCon.h | 45 + server/auth_discovery/inc/IADProvider.h | 38 + server/auth_discovery/inc/IAuthConnection.h | 19 + server/auth_discovery/inc/IAuthStub.h | 59 + server/auth_discovery/inc/IoTCon.h | 28 + server/auth_discovery/inc/IotADProvider.h | 57 + server/auth_discovery/inc/LocalCon.h | 21 + server/auth_discovery/inc/RAuthStub.h | 107 + server/auth_discovery/inc/RoamingUtil.h | 46 + server/auth_discovery/src/AuthIndexHanlder.cpp | 137 ++ server/auth_discovery/src/AuthManager.cpp | 189 ++ server/auth_discovery/src/BAuthStub.cpp | 522 +++++ server/auth_discovery/src/BleAdProvider.cpp | 413 ++++ server/auth_discovery/src/BleCon.cpp | 103 + server/auth_discovery/src/BoundADProvider.cpp | 364 ++++ server/auth_discovery/src/BtADProvider.cpp | 255 +++ server/auth_discovery/src/BtCon.cpp | 354 ++++ server/auth_discovery/src/IoTCon.cpp | 113 + server/auth_discovery/src/IotADProvider.cpp | 214 ++ server/auth_discovery/src/RAuthStub.cpp | 306 +++ server/auth_discovery/src/RoamingUtil.cpp | 443 ++++ server/fido_asm.json | 8 + server/inc/AsmStorage.h | 176 ++ server/inc/ClientListener.h | 76 + server/ops/inc/AsmOp.h | 52 + server/ops/inc/AsmOpFactory.h | 36 + server/ops/inc/AuthenticateOp.h | 34 + server/ops/inc/DeregOp.h | 38 + server/ops/inc/GetInfoOp.h | 38 + server/ops/inc/GetRegsOp.h | 37 + server/ops/inc/OpenSettingOp.h | 35 + server/ops/inc/RegisterOp.h | 41 + server/ops/src/AsmOp.cpp | 37 + server/ops/src/AsmOpFactory.cpp | 110 + server/ops/src/AuthenticateOp.cpp | 89 + server/ops/src/DeregOp.cpp | 57 + server/ops/src/GetInfoOp.cpp | 167 ++ server/ops/src/GetRegsOp.cpp | 55 + server/ops/src/OpenSettingOp.cpp | 31 + server/ops/src/RegisterOp.cpp | 106 + server/src/AsmStorage.cpp | 1234 +++++++++++ server/src/ClientListener.cpp | 446 ++++ server/src/asm_main.cpp | 26 + server/states/inc/AuthenticateState.h | 39 + server/states/inc/DeregState.h | 39 + server/states/inc/EnrollState.h | 37 + server/states/inc/GetRegsState.h | 16 + server/states/inc/IAsmOpState.h | 36 + server/states/inc/InitState.h | 33 + server/states/inc/RegisterState.h | 39 + server/states/inc/TCState.h | 38 + server/states/inc/VerifyState.h | 34 + server/states/src/AuthenticateState.cpp | 456 ++++ server/states/src/DeregState.cpp | 176 ++ server/states/src/EnrollState.cpp | 210 ++ server/states/src/GetRegsState.cpp | 126 ++ server/states/src/InitState.cpp | 40 + server/states/src/RegisterState.cpp | 234 +++ server/states/src/TCState.cpp | 171 ++ server/states/src/VerifyState.cpp | 255 +++ silent_auth/CMakeLists.txt | 56 + silent_auth/silent_auth_entry.cpp | 1147 +++++++++++ silent_auth/silent_auth_entry.h | 58 + test/RADemoTV/.cproject | 609 ++++++ test/RADemoTV/.exportMap | 4 + test/RADemoTV/.gitignore | 1 + test/RADemoTV/.package-stamp | 1 + test/RADemoTV/.project | 46 + test/RADemoTV/.rds_delta | 6 + test/RADemoTV/.sdk_delta.info | Bin 0 -> 5889 bytes test/RADemoTV/.sign/.manifest.tmp | 33 + test/RADemoTV/.sign/author-signature.xml | 182 ++ test/RADemoTV/.sign/signature1.xml | 184 ++ test/RADemoTV/.tproject | 12 + test/RADemoTV/Instruction.txt | 188 ++ .../accessibility/screen_reader/custom_frame.edc | 126 ++ .../accessibility/screen_reader/description.edc | 157 ++ .../accessibility/screen_reader/reading_order.edc | 382 ++++ test/RADemoTV/button.edc | 347 ++++ test/RADemoTV/datetime.edc | 130 ++ test/RADemoTV/default/inc/my_button_header.edc | 61 + test/RADemoTV/default/my_button.edc | 709 +++++++ .../accessibility/screen_reader/custom_frame.edc | 126 ++ .../accessibility/screen_reader/description.edc | 157 ++ .../accessibility/screen_reader/reading_order.edc | 382 ++++ test/RADemoTV/edc_resource/button.edc | 347 ++++ test/RADemoTV/edc_resource/datetime.edc | 130 ++ .../edc_resource/default/inc/my_button_header.edc | 61 + test/RADemoTV/edc_resource/default/my_button.edc | 709 +++++++ test/RADemoTV/edc_resource/entry.edc | 36 + test/RADemoTV/edc_resource/genlist.edc | 108 + test/RADemoTV/edc_resource/label.edc | 585 ++++++ test/RADemoTV/edc_resource/layout.edc | 98 + test/RADemoTV/edc_resource/pagecontrol.edc | 79 + test/RADemoTV/edc_resource/popup_custom.edc | 1047 ++++++++++ test/RADemoTV/edc_resource/progressbar.edc | 184 ++ test/RADemoTV/edc_resource/slider.edc | 152 ++ test/RADemoTV/entry.edc | 36 + test/RADemoTV/genlist.edc | 108 + test/RADemoTV/inc/fido_handler.h | 30 + test/RADemoTV/inc/rademotv.h | 42 + test/RADemoTV/inc/storage_handler.h | 27 + test/RADemoTV/inc/util.h | 51 + test/RADemoTV/label.edc | 585 ++++++ test/RADemoTV/layout.edc | 98 + test/RADemoTV/manasij.p12 | Bin 0 -> 2785 bytes test/RADemoTV/pagecontrol.edc | 79 + test/RADemoTV/popup_custom.edc | 1047 ++++++++++ test/RADemoTV/progressbar.edc | 184 ++ test/RADemoTV/project_def.prop | 11 + test/RADemoTV/res/images/Clock_tabs_icon_alarm.png | Bin 0 -> 3608 bytes test/RADemoTV/res/images/Clock_tabs_icon_timer.png | Bin 0 -> 3288 bytes .../res/images/Clock_tabs_icon_world_clock.png | Bin 0 -> 3689 bytes .../res/images/Clock_tabs_icon_world_stopwatch.png | Bin 0 -> 3534 bytes test/RADemoTV/res/images/arrow-down.png | Bin 0 -> 9565 bytes test/RADemoTV/res/images/arrow-left.png | Bin 0 -> 7499 bytes test/RADemoTV/res/images/arrow-left1.png | Bin 0 -> 35446 bytes test/RADemoTV/res/images/arrow-right.png | Bin 0 -> 7210 bytes test/RADemoTV/res/images/arrow-up.png | Bin 0 -> 7750 bytes test/RADemoTV/res/images/btn_style_nor.png | Bin 0 -> 1686 bytes .../res/images/contacts_ic_circle_btn_call.png | Bin 0 -> 1536 bytes .../res/images/contacts_ic_circle_btn_email.png | Bin 0 -> 1589 bytes .../res/images/contacts_ic_circle_btn_note.png | Bin 0 -> 1170 bytes test/RADemoTV/res/images/core_floating_icon_01.png | Bin 0 -> 2963 bytes test/RADemoTV/res/images/core_floating_icon_02.png | Bin 0 -> 3612 bytes .../RADemoTV/res/images/core_icon_expand_close.png | Bin 0 -> 3081 bytes test/RADemoTV/res/images/core_icon_expand_open.png | Bin 0 -> 3054 bytes test/RADemoTV/res/images/custom_highlight.png | Bin 0 -> 486 bytes test/RADemoTV/res/images/custom_highlight2.png | Bin 0 -> 367 bytes test/RADemoTV/res/images/grid_image/1_raw.png | Bin 0 -> 690612 bytes test/RADemoTV/res/images/grid_image/2_raw.png | Bin 0 -> 274246 bytes test/RADemoTV/res/images/horz_scrollbar.png | Bin 0 -> 46086 bytes test/RADemoTV/res/images/tizen.png | Bin 0 -> 28340 bytes test/RADemoTV/res/offline_auth_req.json | 30 + test/RADemoTV/res/offline_dereg_req.json | 17 + test/RADemoTV/res/offline_reg_req.json | 32 + test/RADemoTV/res/ui-controls.edc | 36 + test/RADemoTV/shared/res/fido.png | Bin 0 -> 5689 bytes test/RADemoTV/shared/res/rademotv.png | Bin 0 -> 57662 bytes test/RADemoTV/slider.edc | 152 ++ test/RADemoTV/src/fido_handler.c | 542 +++++ test/RADemoTV/src/rademotv.c | 531 +++++ test/RADemoTV/src/storage_handler.c | 85 + test/RADemoTV/tizen-manifest.xml | 11 + test/conformance_test/FIDOSample/.cproject | 610 ++++++ test/conformance_test/FIDOSample/.exportMap | 4 + test/conformance_test/FIDOSample/.package-stamp | 1 + test/conformance_test/FIDOSample/.project | 26 + test/conformance_test/FIDOSample/.rds_delta | 6 + test/conformance_test/FIDOSample/.sdk_delta.info | Bin 0 -> 1935 bytes .../FIDOSample/.sign/.manifest.tmp | 7 + .../FIDOSample/.sign/author-signature.xml | 78 + .../FIDOSample/.sign/signature1.xml | 80 + test/conformance_test/FIDOSample/.tproject | 12 + test/conformance_test/FIDOSample/inc/fidosample.h | 37 + test/conformance_test/FIDOSample/project_def.prop | 11 + test/conformance_test/FIDOSample/res/auth_req.json | 25 + .../conformance_test/FIDOSample/res/dereg_req.json | 17 + test/conformance_test/FIDOSample/res/reg_req.json | 26 + .../FIDOSample/shared/res/fidosample.png | Bin 0 -> 57662 bytes test/conformance_test/FIDOSample/src/fidosample.c | 711 +++++++ .../conformance_test/FIDOSample/tizen-manifest.xml | 13 + test/conformance_test/manasij.p12 | Bin 0 -> 2785 bytes test/org.example.rademotv-1.0.0-arm.tpk | Bin 0 -> 1288492 bytes test/shell_tc/CMakeLists.txt | 77 + test/shell_tc/fido_asm_shell_tc.cpp | 2175 ++++++++++++++++++++ test/shell_tc/fido_asm_shell_tc_util.cpp | 110 + test/shell_tc/fido_asm_shell_tc_util.h | 38 + ui/CMakeLists.txt | 61 + ui/data/org.tizen.asmui.png | Bin 0 -> 57662 bytes ui/data/org.tizen.asmui.xml | 16 + ui/org.tizen.asmui.png | Bin 0 -> 57662 bytes ui/org.tizen.asmui.rule | 24 + ui/org.tizen.asmui.xml | 16 + ui/src/asm_ui.c | 761 +++++++ ui/src/asm_ui_ipc.c | 94 + ui/src/asm_ui_ipc.h | 28 + 313 files changed, 38417 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 Instructions.txt create mode 100644 LICENSE.APLv2 create mode 100644 NOTICE create mode 100644 ble_roaming_agent/CMakeLists.txt create mode 100644 ble_roaming_agent/inc/BTRoamingKeys.h create mode 100644 ble_roaming_agent/src/bt_ragent_main.c create mode 100644 ble_roaming_agent/src/fido_gatt_server.c create mode 100644 ble_roaming_agent/src/fido_gatt_server.h create mode 100644 bt_roaming_agent/CMakeLists.txt create mode 100644 bt_roaming_agent/inc/BTRoamingKeys.h create mode 100644 bt_roaming_agent/inc/bt_server.h create mode 100644 bt_roaming_agent/src/bt_ragent_main.c create mode 100644 bt_roaming_agent/src/bt_server.c create mode 100644 common/AsmHelper.h create mode 100644 common/cryptoutil/inc/asmcrypto.h create mode 100644 common/cryptoutil/src/AsmCrypto.cpp create mode 100644 common/datatypes/auth/AuthnrTypes.h create mode 100644 common/datatypes/inc/AsmAuthRequest.h create mode 100644 common/datatypes/inc/AsmAuthResponse.h create mode 100644 common/datatypes/inc/AsmDeregRequest.h create mode 100644 common/datatypes/inc/AsmDeregResponse.h create mode 100644 common/datatypes/inc/AsmGetInfoRequest.h create mode 100644 common/datatypes/inc/AsmGetRegsRequest.h create mode 100644 common/datatypes/inc/AsmGetRegsResponse.h create mode 100644 common/datatypes/inc/AsmOpenSettingsRequest.h create mode 100644 common/datatypes/inc/AsmOpenSettingsResponse.h create mode 100644 common/datatypes/inc/AsmRegRequest.h create mode 100644 common/datatypes/inc/AsmRegResponse.h create mode 100644 common/datatypes/inc/AsmRequest.h create mode 100644 common/datatypes/inc/AsmResponse.h create mode 100644 common/datatypes/inc/GetInfoResponse.h create mode 100644 common/datatypes/src/AsmAuthRequest.cpp create mode 100644 common/datatypes/src/AsmAuthResponse.cpp create mode 100644 common/datatypes/src/AsmDeregRequest.cpp create mode 100644 common/datatypes/src/AsmDeregResponse.cpp create mode 100644 common/datatypes/src/AsmGetRegsRequest.cpp create mode 100644 common/datatypes/src/AsmGetRegsResponse.cpp create mode 100644 common/datatypes/src/AsmOpenSettingsRequest.cpp create mode 100644 common/datatypes/src/AsmOpenSettingsResponse.cpp create mode 100644 common/datatypes/src/AsmRegRequest.cpp create mode 100644 common/datatypes/src/AsmRegResponse.cpp create mode 100644 common/datatypes/src/AsmRequest.cpp create mode 100644 common/datatypes/src/AsmResponse.cpp create mode 100644 common/datatypes/src/AuthnrTypes.cpp create mode 100644 common/dbus_interfaces/CMakeLists.txt create mode 100644 common/dbus_interfaces/fido-asm.xml create mode 100644 common/fido-ra-acl-server.dat create mode 100644 common/jsonutil/inc/JsonUtil.h create mode 100644 common/jsonutil/src/JsonUtil.cpp create mode 100644 common/uafv1tlvutil/inc/AttBasicFullTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/AttBasicSurrTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/AuthAssertionInfoTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/AuthCountersInfoTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/BufferTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/DeRegReqTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/DeRegRespTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/GetInfoReqTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/GetInfoRespTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/ITlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/IntTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/RegAssertionInfoTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/RegAuthAssertionTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/RegCountersInfoTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/RegReqTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/RegRespTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/SignAuthAssertionTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/SignReqTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/SignRespTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/SignedDataTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/StringTlvEncoder.h create mode 100644 common/uafv1tlvutil/inc/Tlv.h create mode 100644 common/uafv1tlvutil/inc/TlvData.h create mode 100644 common/uafv1tlvutil/inc/Uafv1KrdTlvEncoder.h create mode 100644 common/uafv1tlvutil/src/AttBasicFullTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/AttBasicSurrTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/AuthAssertionInfoTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/AuthCountersInfoTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/BufferTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/DeRegReqTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/DeRegRespTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/GetInfoReqTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/GetInfoRespTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/IntTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/RegAssertionInfoTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/RegAuthAssertionTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/RegCountersInfoTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/RegReqTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/RegRespTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/SignAuthAssertionTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/SignReqTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/SignRespTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/SignedDataTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/StringTlvEncoder.cpp create mode 100644 common/uafv1tlvutil/src/Tlv.cpp create mode 100644 common/uafv1tlvutil/src/TlvEncoderFactory.cpp create mode 100644 common/uafv1tlvutil/src/Uafv1KrdTlvEncoder.cpp create mode 100644 common/uiutil/inc/AcUiAdaptor.h create mode 100644 common/uiutil/inc/AsmUiCommonTypes.h create mode 100644 common/uiutil/inc/AuthUiFactory.h create mode 100644 common/uiutil/inc/IAuthUiAdaptor.h create mode 100644 common/uiutil/inc/PinAuthUiAdaptor.h create mode 100644 common/uiutil/inc/TCUiAdaptor.h create mode 100644 common/uiutil/src/AcUiAdaptor.cpp create mode 100644 common/uiutil/src/AuthUiFactory.cpp create mode 100644 common/uiutil/src/PinAuthUiAdaptor.cpp create mode 100644 common/uiutil/src/TCUiAdaptor.cpp create mode 100644 fido-asm.manifest create mode 100644 fido-ble-ragent.manifest create mode 100644 fido-bt-ragent.manifest create mode 100644 fido-roaming-agent.manifest create mode 100644 fido_tizen_auth.der create mode 100644 fido_tizen_auth.key create mode 100644 fido_tizen_auth_b64.txt create mode 100644 org.tizen.asmui.manifest create mode 100644 packaging/fido-asm.service create mode 100644 packaging/fido-asm.spec create mode 100644 packaging/fido-ble-roaming-agent.service create mode 100644 packaging/fido-bt-roaming-agent.service create mode 100644 packaging/fido-roaming-agent.service create mode 100644 packaging/org.tizen.fido-asm.conf create mode 100644 packaging/org.tizen.fido-asm.service create mode 100644 roaming_agent/CMakeLists.txt create mode 100644 roaming_agent/inc/RoamingKeys.h create mode 100644 roaming_agent/src/iotcon_handler.c create mode 100644 roaming_agent/src/iotcon_handler.h create mode 100644 roaming_agent/src/ragent_main.c create mode 100644 server/CMakeLists.txt create mode 100644 server/auth_discovery/inc/AuthIndexHanlder.h create mode 100644 server/auth_discovery/inc/AuthManager.h create mode 100644 server/auth_discovery/inc/BAuthStub.h create mode 100644 server/auth_discovery/inc/BleAdProvider.h create mode 100644 server/auth_discovery/inc/BleCon.h create mode 100644 server/auth_discovery/inc/BoundADProvider.h create mode 100644 server/auth_discovery/inc/BtAdProvider.h create mode 100644 server/auth_discovery/inc/BtCon.h create mode 100644 server/auth_discovery/inc/IADProvider.h create mode 100644 server/auth_discovery/inc/IAuthConnection.h create mode 100644 server/auth_discovery/inc/IAuthStub.h create mode 100644 server/auth_discovery/inc/IoTCon.h create mode 100644 server/auth_discovery/inc/IotADProvider.h create mode 100644 server/auth_discovery/inc/LocalCon.h create mode 100644 server/auth_discovery/inc/RAuthStub.h create mode 100644 server/auth_discovery/inc/RoamingUtil.h create mode 100644 server/auth_discovery/src/AuthIndexHanlder.cpp create mode 100644 server/auth_discovery/src/AuthManager.cpp create mode 100644 server/auth_discovery/src/BAuthStub.cpp create mode 100644 server/auth_discovery/src/BleAdProvider.cpp create mode 100644 server/auth_discovery/src/BleCon.cpp create mode 100644 server/auth_discovery/src/BoundADProvider.cpp create mode 100644 server/auth_discovery/src/BtADProvider.cpp create mode 100644 server/auth_discovery/src/BtCon.cpp create mode 100644 server/auth_discovery/src/IoTCon.cpp create mode 100644 server/auth_discovery/src/IotADProvider.cpp create mode 100644 server/auth_discovery/src/RAuthStub.cpp create mode 100644 server/auth_discovery/src/RoamingUtil.cpp create mode 100644 server/fido_asm.json create mode 100644 server/inc/AsmStorage.h create mode 100644 server/inc/ClientListener.h create mode 100644 server/ops/inc/AsmOp.h create mode 100644 server/ops/inc/AsmOpFactory.h create mode 100644 server/ops/inc/AuthenticateOp.h create mode 100644 server/ops/inc/DeregOp.h create mode 100644 server/ops/inc/GetInfoOp.h create mode 100644 server/ops/inc/GetRegsOp.h create mode 100644 server/ops/inc/OpenSettingOp.h create mode 100644 server/ops/inc/RegisterOp.h create mode 100644 server/ops/src/AsmOp.cpp create mode 100644 server/ops/src/AsmOpFactory.cpp create mode 100644 server/ops/src/AuthenticateOp.cpp create mode 100644 server/ops/src/DeregOp.cpp create mode 100644 server/ops/src/GetInfoOp.cpp create mode 100644 server/ops/src/GetRegsOp.cpp create mode 100644 server/ops/src/OpenSettingOp.cpp create mode 100644 server/ops/src/RegisterOp.cpp create mode 100644 server/src/AsmStorage.cpp create mode 100644 server/src/ClientListener.cpp create mode 100644 server/src/asm_main.cpp create mode 100644 server/states/inc/AuthenticateState.h create mode 100644 server/states/inc/DeregState.h create mode 100644 server/states/inc/EnrollState.h create mode 100644 server/states/inc/GetRegsState.h create mode 100644 server/states/inc/IAsmOpState.h create mode 100644 server/states/inc/InitState.h create mode 100644 server/states/inc/RegisterState.h create mode 100644 server/states/inc/TCState.h create mode 100644 server/states/inc/VerifyState.h create mode 100644 server/states/src/AuthenticateState.cpp create mode 100644 server/states/src/DeregState.cpp create mode 100644 server/states/src/EnrollState.cpp create mode 100644 server/states/src/GetRegsState.cpp create mode 100644 server/states/src/InitState.cpp create mode 100644 server/states/src/RegisterState.cpp create mode 100644 server/states/src/TCState.cpp create mode 100644 server/states/src/VerifyState.cpp create mode 100644 silent_auth/CMakeLists.txt create mode 100644 silent_auth/silent_auth_entry.cpp create mode 100644 silent_auth/silent_auth_entry.h create mode 100644 test/RADemoTV/.cproject create mode 100644 test/RADemoTV/.exportMap create mode 100644 test/RADemoTV/.gitignore create mode 100644 test/RADemoTV/.package-stamp create mode 100644 test/RADemoTV/.project create mode 100644 test/RADemoTV/.rds_delta create mode 100644 test/RADemoTV/.sdk_delta.info create mode 100644 test/RADemoTV/.sign/.manifest.tmp create mode 100644 test/RADemoTV/.sign/author-signature.xml create mode 100644 test/RADemoTV/.sign/signature1.xml create mode 100644 test/RADemoTV/.tproject create mode 100644 test/RADemoTV/Instruction.txt create mode 100644 test/RADemoTV/accessibility/screen_reader/custom_frame.edc create mode 100644 test/RADemoTV/accessibility/screen_reader/description.edc create mode 100644 test/RADemoTV/accessibility/screen_reader/reading_order.edc create mode 100644 test/RADemoTV/button.edc create mode 100644 test/RADemoTV/datetime.edc create mode 100644 test/RADemoTV/default/inc/my_button_header.edc create mode 100644 test/RADemoTV/default/my_button.edc create mode 100644 test/RADemoTV/edc_resource/accessibility/screen_reader/custom_frame.edc create mode 100644 test/RADemoTV/edc_resource/accessibility/screen_reader/description.edc create mode 100644 test/RADemoTV/edc_resource/accessibility/screen_reader/reading_order.edc create mode 100644 test/RADemoTV/edc_resource/button.edc create mode 100644 test/RADemoTV/edc_resource/datetime.edc create mode 100644 test/RADemoTV/edc_resource/default/inc/my_button_header.edc create mode 100644 test/RADemoTV/edc_resource/default/my_button.edc create mode 100644 test/RADemoTV/edc_resource/entry.edc create mode 100644 test/RADemoTV/edc_resource/genlist.edc create mode 100644 test/RADemoTV/edc_resource/label.edc create mode 100644 test/RADemoTV/edc_resource/layout.edc create mode 100644 test/RADemoTV/edc_resource/pagecontrol.edc create mode 100644 test/RADemoTV/edc_resource/popup_custom.edc create mode 100644 test/RADemoTV/edc_resource/progressbar.edc create mode 100644 test/RADemoTV/edc_resource/slider.edc create mode 100644 test/RADemoTV/entry.edc create mode 100644 test/RADemoTV/genlist.edc create mode 100644 test/RADemoTV/inc/fido_handler.h create mode 100644 test/RADemoTV/inc/rademotv.h create mode 100644 test/RADemoTV/inc/storage_handler.h create mode 100644 test/RADemoTV/inc/util.h create mode 100644 test/RADemoTV/label.edc create mode 100644 test/RADemoTV/layout.edc create mode 100644 test/RADemoTV/manasij.p12 create mode 100644 test/RADemoTV/pagecontrol.edc create mode 100644 test/RADemoTV/popup_custom.edc create mode 100644 test/RADemoTV/progressbar.edc create mode 100644 test/RADemoTV/project_def.prop create mode 100644 test/RADemoTV/res/images/Clock_tabs_icon_alarm.png create mode 100644 test/RADemoTV/res/images/Clock_tabs_icon_timer.png create mode 100644 test/RADemoTV/res/images/Clock_tabs_icon_world_clock.png create mode 100644 test/RADemoTV/res/images/Clock_tabs_icon_world_stopwatch.png create mode 100644 test/RADemoTV/res/images/arrow-down.png create mode 100644 test/RADemoTV/res/images/arrow-left.png create mode 100644 test/RADemoTV/res/images/arrow-left1.png create mode 100644 test/RADemoTV/res/images/arrow-right.png create mode 100644 test/RADemoTV/res/images/arrow-up.png create mode 100644 test/RADemoTV/res/images/btn_style_nor.png create mode 100644 test/RADemoTV/res/images/contacts_ic_circle_btn_call.png create mode 100644 test/RADemoTV/res/images/contacts_ic_circle_btn_email.png create mode 100644 test/RADemoTV/res/images/contacts_ic_circle_btn_note.png create mode 100644 test/RADemoTV/res/images/core_floating_icon_01.png create mode 100644 test/RADemoTV/res/images/core_floating_icon_02.png create mode 100644 test/RADemoTV/res/images/core_icon_expand_close.png create mode 100644 test/RADemoTV/res/images/core_icon_expand_open.png create mode 100644 test/RADemoTV/res/images/custom_highlight.png create mode 100644 test/RADemoTV/res/images/custom_highlight2.png create mode 100644 test/RADemoTV/res/images/grid_image/1_raw.png create mode 100644 test/RADemoTV/res/images/grid_image/2_raw.png create mode 100644 test/RADemoTV/res/images/horz_scrollbar.png create mode 100644 test/RADemoTV/res/images/tizen.png create mode 100644 test/RADemoTV/res/offline_auth_req.json create mode 100644 test/RADemoTV/res/offline_dereg_req.json create mode 100644 test/RADemoTV/res/offline_reg_req.json create mode 100644 test/RADemoTV/res/ui-controls.edc create mode 100644 test/RADemoTV/shared/res/fido.png create mode 100644 test/RADemoTV/shared/res/rademotv.png create mode 100644 test/RADemoTV/slider.edc create mode 100644 test/RADemoTV/src/fido_handler.c create mode 100644 test/RADemoTV/src/rademotv.c create mode 100644 test/RADemoTV/src/storage_handler.c create mode 100644 test/RADemoTV/tizen-manifest.xml create mode 100644 test/conformance_test/FIDOSample/.cproject create mode 100644 test/conformance_test/FIDOSample/.exportMap create mode 100644 test/conformance_test/FIDOSample/.package-stamp create mode 100644 test/conformance_test/FIDOSample/.project create mode 100644 test/conformance_test/FIDOSample/.rds_delta create mode 100644 test/conformance_test/FIDOSample/.sdk_delta.info create mode 100644 test/conformance_test/FIDOSample/.sign/.manifest.tmp create mode 100644 test/conformance_test/FIDOSample/.sign/author-signature.xml create mode 100644 test/conformance_test/FIDOSample/.sign/signature1.xml create mode 100644 test/conformance_test/FIDOSample/.tproject create mode 100644 test/conformance_test/FIDOSample/inc/fidosample.h create mode 100644 test/conformance_test/FIDOSample/project_def.prop create mode 100644 test/conformance_test/FIDOSample/res/auth_req.json create mode 100644 test/conformance_test/FIDOSample/res/dereg_req.json create mode 100644 test/conformance_test/FIDOSample/res/reg_req.json create mode 100644 test/conformance_test/FIDOSample/shared/res/fidosample.png create mode 100644 test/conformance_test/FIDOSample/src/fidosample.c create mode 100644 test/conformance_test/FIDOSample/tizen-manifest.xml create mode 100644 test/conformance_test/manasij.p12 create mode 100644 test/org.example.rademotv-1.0.0-arm.tpk create mode 100644 test/shell_tc/CMakeLists.txt create mode 100644 test/shell_tc/fido_asm_shell_tc.cpp create mode 100644 test/shell_tc/fido_asm_shell_tc_util.cpp create mode 100644 test/shell_tc/fido_asm_shell_tc_util.h create mode 100644 ui/CMakeLists.txt create mode 100644 ui/data/org.tizen.asmui.png create mode 100644 ui/data/org.tizen.asmui.xml create mode 100644 ui/org.tizen.asmui.png create mode 100644 ui/org.tizen.asmui.rule create mode 100644 ui/org.tizen.asmui.xml create mode 100644 ui/src/asm_ui.c create mode 100644 ui/src/asm_ui_ipc.c create mode 100644 ui/src/asm_ui_ipc.h diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..080e5b2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*.config +*.creator +*.user +*.files +*.includes diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..1cdee6f --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,21 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(fido-asm) + +SET(PREFIX ${CMAKE_INSTALL_PREFIX}) +SET(EXEC_PREFIX "\${prefix}") +SET(INCLUDEDIR "\${prefix}/include ") + +##ADD_SUBDIRECTORY(common) +ADD_SUBDIRECTORY(server) +##ADD_SUBDIRECTORY(test/shell_tc) +ADD_SUBDIRECTORY(silent_auth) +ADD_SUBDIRECTORY(ui) +ADD_SUBDIRECTORY(roaming_agent) +ADD_SUBDIRECTORY(common/dbus_interfaces) +ADD_SUBDIRECTORY(bt_roaming_agent) +ADD_SUBDIRECTORY(ble_roaming_agent) +ADD_DEPENDENCIES(fido-asm fido-asm-dbus) +ADD_DEPENDENCIES(fido-bt-ragent-service fido-asm-dbus) +ADD_DEPENDENCIES(fido-ble-ragent-service fido-asm-dbus) +ADD_DEPENDENCIES(fido-roaming-agent-service fido-asm-dbus) +ADD_DEPENDENCIES(asmui fido-asm-dbus) diff --git a/Instructions.txt b/Instructions.txt new file mode 100644 index 0000000..dc9da25 --- /dev/null +++ b/Instructions.txt @@ -0,0 +1,55 @@ +- FIDO Reference ASM is a newly implemented ASM capable of supporting multiple FIDO spec compliant Authenticators. +- Target platform version is Tizen 3.x. + +- It generates the following: + 1. fido-asm rpm + 2. fido-asm devel rpm + 3. org.tizen.asmui rpm + 4. Multiple Authenticator plugin rpms (To be added) + +- Installation: + 1. rpm -ivh --force --nodeps + 2. rpm -ivh --force --nodeps [Only for internal unit level testing] + 3. sync and reboot + 4. rpm -ivh --force --nodeps + 5. If you are using July Binary then + chsmack -e System::Privileged /usr/bin/tpk-backend + 6. tpk-backend -y org.tizen.asmui --preload + +- Instllation: Roaming Authenticator + 1. Pre-condition: Two TM1 devices must be connected to same Multicast AP. + 2. Let TM1S = Server Device (Mobile), TM1C = Client Device (TV) + 3. On Server Device,- + a. Install fido-asm, fido-asm-ui and fido-pin-auth + b. sync and reboot + 4. On Client Device,- + a. Install fido-client, fido-asm and FIDOSample + b. sync and reboot. + 5. After reboot, give some time to both devices to connect to the AP. + 6. On Client Device, open FIDOSample app and test: + a. Find Authenticator + b. Registration + c. Authentication + +- Testing: + 1. FIDOSample can be used to test, however the json must have AAID matched with one of the installed Authenticator's. + 2. fido-devel rpm can be used for all unit level testing (except UI), after installation, + run /opt/usr/devel/fido_asm/tc/fido-asm-shell-tc and select unit testing options. + 3. For UI testing, first enable ASM_UI_TEST in server/ClientListener.cpp, then build fido-asm, reboot. + - Then, for Transaction UI testing, run from device shell,- + dbus-send --system \ + --dest=org.tizen.fidoasm \ + --type=method_call \ + --print-reply \ + /org/tizen/fidoasm \ + org.tizen.fidoasm.asm_request \ + string:'tc' + - For Account UI testing, run from device shell,- + dbus-send --system \ + --dest=org.tizen.fidoasm \ + --type=method_call \ + --print-reply \ + /org/tizen/fidoasm \ + org.tizen.fidoasm.asm_request \ + string:'acc' + - Mobile Emulator default theme might create visibility issue for UI, use General Purpose emulator.(To be fixed later) diff --git a/LICENSE.APLv2 b/LICENSE.APLv2 new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/LICENSE.APLv2 @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..0e0f016 --- /dev/null +++ b/NOTICE @@ -0,0 +1,3 @@ +Copyright (c) Samsung Electronics Co., Ltd. All rights reserved. +Except as noted, this software is licensed under Apache License, Version 2. +Please, see the LICENSE.APLv2 file for Apache License terms and conditions. diff --git a/ble_roaming_agent/CMakeLists.txt b/ble_roaming_agent/CMakeLists.txt new file mode 100644 index 0000000..f11cdcd --- /dev/null +++ b/ble_roaming_agent/CMakeLists.txt @@ -0,0 +1,45 @@ +SET(BLE_RAGENT_DAEMON fido-ble-ragent-service) + +INCLUDE(FindPkgConfig) +pkg_check_modules(BLE_RAGENT_DAEMON_PKGS REQUIRED + dlog + glib-2.0 + capi-base-common + pkgmgr-info + gio-2.0 + gio-unix-2.0 + gmodule-2.0 + cynara-client + cynara-session + cynara-creds-gdbus + capi-network-connection + capi-base-common + capi-appfw-application + capi-appfw-app-manager + aul + json-glib-1.0 + capi-system-info + capi-system-system-settings + capi-network-bluetooth +) + +FOREACH(flag ${BLE_RAGENT_DAEMON_PKGS_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIE") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS}") +SET(PKGS_LDFLAGS "${BLE_RAGENT_DAEMON_PKGS_LDFLAGS} -pie") + +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/ble_roaming_agent/inc/) + +FILE( GLOB BLE_RAGENT_DAEMON_SRCS_CC + src/*.c +) + +ADD_EXECUTABLE(${BLE_RAGENT_DAEMON} ${BLE_RAGENT_DAEMON_SRCS_CC}) + +TARGET_LINK_LIBRARIES(${BLE_RAGENT_DAEMON} ${BLE_RAGENT_DAEMON_PKGS_LDFLAGS} fido-asm-dbus "-ldl") + +INSTALL(TARGETS ${BLE_RAGENT_DAEMON} DESTINATION bin) diff --git a/ble_roaming_agent/inc/BTRoamingKeys.h b/ble_roaming_agent/inc/BTRoamingKeys.h new file mode 100644 index 0000000..5c066b8 --- /dev/null +++ b/ble_roaming_agent/inc/BTRoamingKeys.h @@ -0,0 +1,18 @@ +#include + +#ifndef _BT_ROAMINGKEYS_H +#define _BT_ROAMINGKEYS_H + +#define RA_BLE_FRAME_MAX_SIZE 20 +/*TODO: Change to some other uids*/ +#define RA_BLE_ADVERTISING_UUID "89D3502B-0F36-433A-8EF4-C502AD55F8DC" +#define RA_BLE_SERVICE_UUID "89D3502B-0F36-433A-8EF4-C502AD55F8DC" +#define RA_BLE_UUID_REQUEST "9B3C81D8-57B1-4A8A-B8DF-0E56F7CA51C2" +#define RA_BLE_UUID_RESPONSE "2F7CABCE-808D-411F-9A0C-BB92BA96C102" +#define RA_BLE_SERVICE_REVISION "1.0" +#define RA_BLE_FRAME_MAX_SIZE 20 +#define RA_BLE_DATA_MAX_SIZE 65536 + +#define BT_DISC_TIMEOUT_SEC 5 + +#endif // _BT_ROAMINGKEYS_H diff --git a/ble_roaming_agent/src/bt_ragent_main.c b/ble_roaming_agent/src/bt_ragent_main.c new file mode 100644 index 0000000..01f52f4 --- /dev/null +++ b/ble_roaming_agent/src/bt_ragent_main.c @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include + +#include "fido_gatt_server.h" +#include "AsmHelper.h" + +int +main(int argc, char *argv[]) +{ + _INFO("Starting BT Roaming Agent Service"); + + GMainLoop *mainloop = g_main_loop_new(NULL, FALSE); + + int ret = fido_gatt_server_init(); + _INFO("fido_gatt_server_init=[%d]", ret); + + g_main_loop_run(mainloop); + + _INFO("Stopping BT Roaming Agent Service"); + ret = fido_gatt_server_shutdown(); + _INFO("[%d]", ret); + + return 0; +} diff --git a/ble_roaming_agent/src/fido_gatt_server.c b/ble_roaming_agent/src/fido_gatt_server.c new file mode 100644 index 0000000..d53328e --- /dev/null +++ b/ble_roaming_agent/src/fido_gatt_server.c @@ -0,0 +1,312 @@ + +#include +#include +#include +#include + +#include + +#include "fido_gatt_server.h" +#include "BTRoamingKeys.h" +#include "AsmHelper.h" +#include "fido-client-ipc-stub.h" + +#include +#include +#include +#include + +static bool __isStarted = false; + +static Fidoasm* +__asm_get_dbus_proxy(void) +{ +#if !GLIB_CHECK_VERSION(2, 35, 0) + g_type_init(); +#endif + + GDBusConnection *connection = NULL; + GError *error = NULL; + + connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error); + + /* Create the object */ + Fidoasm *dbus_proxy = fidoasm_proxy_new_sync(connection, + G_DBUS_PROXY_FLAGS_NONE, + "org.tizen.fidoasm", + "/org/tizen/fidoasm", + NULL, + &error); + + if (error != NULL) + _ERR("bluetooth fidoasm_proxy_new_sync failed %s", error->message); + + return dbus_proxy; +} + +static void +__ra_notify_cb(int result, const char *remote_address, bt_gatt_server_h server, + bt_gatt_h characteristic, bool completed, void *user_data) +{ + _INFO("bluetooth ragent __ra_notify_cb=[%d]", result); +} + +static void +__ra__write_value_requested_cb(const char *remote_address, int request_id, bt_gatt_server_h server, + bt_gatt_h gatt_handle, int offset, + const char *value, int len, void *user_data) +{ + _INFO("bluetooth ragent __ra__write_value_requested_cb=[%s]", value); + + /*Call ASM dbus and receive the response*/ + Fidoasm *asm_proxy = __asm_get_dbus_proxy(); + if (asm_proxy == NULL) { + _ERR("bluetooth Failed to get ASM proxy"); + bt_gatt_server_send_response(request_id, BT_GATT_REQUEST_TYPE_WRITE, + offset, -1, NULL, 0); + return; + } + + + const char *tlvReqB64 = value; + char *tlvRespB64 = NULL; + GError *gErr = NULL; + int tz_err = 0; + fidoasm_call_asm_request_sync(asm_proxy, tlvReqB64, + &tz_err, &tlvRespB64, NULL, &gErr); + if (gErr != NULL) { + + bt_gatt_server_send_response(request_id, BT_GATT_REQUEST_TYPE_WRITE, + offset, -1, NULL, 0); + _ERR("bluetooth Failed returned from ASM"); + return; + } + + int ret = bt_gatt_set_value(gatt_handle, tlvRespB64, strlen(tlvRespB64)); + _INFO("bluetooth ragent bt_gatt_set_value=[%d]", ret); + + bt_gatt_server_send_response(request_id, BT_GATT_REQUEST_TYPE_WRITE, offset, 0, NULL, 0); + + ret = bt_gatt_server_notify_characteristic_changed_value(gatt_handle, __ra_notify_cb, remote_address, NULL); + _INFO("bluetooth ragent bt_gatt_server_notify_characteristic_changed_value=[%d]", ret); +} + +static void +__advertising_state_changed_cb(int result, bt_advertiser_h advertiser, + bt_adapter_le_advertising_state_e adv_state, void* user_data) +{ + _INFO("bluetooth ragent __advertising_state_changed_cb=[%d]", adv_state); +} + +#define MAX_BLE_SIZE 1024 + +static void +onGattConchanged(int result, bool connected, const char *remote_address, void *user_data) +{ + _INFO("remote_address=[%s]", remote_address); + _INFO("connected=[%d]", connected); + _INFO("[%d]", result); +} + +static int +__fido_gatt_server_start(void) +{ + _INFO("bluetooth Request to start GATT server"); + + if (__isStarted == true) { + _INFO("bluetooth Already started"); + return 0; + } + + _INFO("bluetooth New GATT server"); + __isStarted = true; + + bt_gatt_set_connection_state_changed_cb(onGattConchanged, NULL); + + int ret = BT_ERROR_NONE; + bt_gatt_server_h server = NULL; + bt_gatt_h service = NULL; + bt_gatt_h ctrl_pt_write_req = NULL; + bt_gatt_h ctrl_pt_notif_resp = NULL; + int permissions = BT_GATT_PERMISSION_READ | BT_GATT_PERMISSION_WRITE; + + /*Notification enabled */ + char *reqVal = (char*)calloc(MAX_BLE_SIZE, sizeof(char)); + char *respVal = (char*)calloc(MAX_BLE_SIZE, sizeof(char)); + + ret = bt_gatt_server_initialize(); + if (ret != BT_ERROR_NONE) { + _ERR("bluetooth ragent bt_gatt_server_initialize=[%d]", ret); + goto FAIL; + } + + ret = bt_gatt_server_create(&server); + if (ret != BT_ERROR_NONE) { + _ERR("bluetooth ragent bt_gatt_server_create=[%d]", ret); + goto FAIL; + } + + _INFO("bluetooth ragent gatt service create"); + ret = bt_gatt_service_create(RA_BLE_SERVICE_UUID, BT_GATT_SERVICE_TYPE_PRIMARY, &service); + if (ret != BT_ERROR_NONE) + goto FAIL; + + _INFO("bluetooth ragent Create GATT Characteristic"); + /* Create GATT Characteristic */ + ret = bt_gatt_characteristic_create(RA_BLE_UUID_REQUEST, + permissions, + BT_GATT_PROPERTY_WRITE, + reqVal, + MAX_BLE_SIZE, + &ctrl_pt_write_req); + if (ret != BT_ERROR_NONE) + goto FAIL; + + ret = bt_gatt_characteristic_create(RA_BLE_UUID_RESPONSE, + permissions, + BT_GATT_PROPERTY_NOTIFY, + respVal, + MAX_BLE_SIZE, + &ctrl_pt_notif_resp); + + _INFO("bluetooth ragent set GATT Characterisitic Callback"); + + ret = bt_gatt_server_set_write_value_requested_cb(ctrl_pt_write_req, + __ra__write_value_requested_cb, NULL); + if (ret != BT_ERROR_NONE) + goto FAIL; + + _INFO("bluetooth ragent Add GATT Characteristic in service"); + /* add GATT Characteristic in service */ + ret = bt_gatt_service_add_characteristic(service, ctrl_pt_write_req); + if (ret != BT_ERROR_NONE) + goto FAIL; + + ret = bt_gatt_service_add_characteristic(service, ctrl_pt_notif_resp); + if (ret != BT_ERROR_NONE) + goto FAIL; + + _INFO("bluetooth ragent Register GATT Service"); + ret = bt_gatt_server_register_service(server, service); + if (ret != BT_ERROR_NONE) { + _INFO("bluetooth ragent can not register gatt service."); + goto FAIL; + } + + + _INFO("bluetooth ragent GATT Server Done"); + + ret = bt_gatt_server_start(); + if (ret != BT_ERROR_NONE) { + _INFO("bluetooth ragent bt_gatt_server_start failed = [%d]", ret); + goto FAIL; + } + + _INFO("bluetooth ragent GATT Server started"); + + _INFO("bluetooth ragent starting LE adv"); + bt_advertiser_h adv_handle = NULL; + ret = bt_adapter_le_create_advertiser(&adv_handle); + if (ret != BT_ERROR_NONE) { + _INFO("bluetooth ragent bt_adapter_le_create_advertiser failed = [%d]", ret); + goto FAIL; + } + + _INFO("bluetooth ragent after bt_adapter_le_create_advertiser"); + + ret = bt_adapter_le_set_advertising_connectable(adv_handle, true); + if (ret != BT_ERROR_NONE) { + _INFO("bluetooth ragent bt_adapter_le_set_advertising_connectable failed = [%d]", ret); + goto FAIL; + } + + _INFO("bluetooth ragent after bt_adapter_le_set_advertising_connectable"); + + ret = bt_adapter_le_add_advertising_service_uuid(adv_handle, + BT_ADAPTER_LE_PACKET_ADVERTISING, RA_BLE_ADVERTISING_UUID); + if (ret != BT_ERROR_NONE) { + _INFO("bluetooth ragent bt_adapter_le_add_advertising_service_uuid failed = [%d]", ret); + goto FAIL; + } + + _INFO("bluetooth ragent after bt_adapter_le_add_advertising_service_uuid"); + + ret = bt_adapter_le_set_advertising_device_name(adv_handle, + BT_ADAPTER_LE_PACKET_SCAN_RESPONSE, true); + if (ret != BT_ERROR_NONE) { + _INFO("bluetooth ragent bt_adapter_le_set_advertising_device_name failed = [%d]", ret); + goto FAIL; + } + + _INFO("bluetooth ragent after bt_adapter_le_set_advertising_device_name"); + + ret = bt_adapter_le_start_advertising_new(adv_handle, + __advertising_state_changed_cb, adv_handle); + if (ret != BT_ERROR_NONE) { + _INFO("bluetooth ragent bt_adapter_le_start_advertising_new failed = [%d]", ret); + goto FAIL; + } + + _INFO("bluetooth ragent LE adv done"); + return 0; + +FAIL: + _INFO("bluetooth ragent ERROR"); + bt_gatt_characteristic_destroy(ctrl_pt_write_req); + bt_gatt_characteristic_destroy(ctrl_pt_notif_resp); + bt_gatt_service_destroy(service); + bt_gatt_server_destroy(server); + + return -1; +} + +static int +__fido_gatt_server_stop(void) +{ + _INFO("bluetooth Stopping GATT server"); + __isStarted = false; + bt_gatt_server_deinitialize(); + return 0; +} + +static void +__bt_state_changed_cb(int result, bt_adapter_state_e adapter_state, void* user_data) +{ + _INFO("bluetooth __bt_state_changed_cb=[%d]", adapter_state); + if (adapter_state == BT_ADAPTER_ENABLED) { + __fido_gatt_server_start(); + } +} + +int +fido_gatt_server_shutdown(void) +{ + return __fido_gatt_server_stop(); +} + +int +fido_gatt_server_init(void) +{ + int ret = bt_initialize(); + if ((ret != BT_ERROR_NONE) && (ret != BT_ERROR_ALREADY_DONE)) { + _ERR("bluetooth bt_init failed = [%d]", ret); + return -1; + } + + __isStarted = false; + + bt_adapter_set_state_changed_cb(__bt_state_changed_cb, NULL); + + bt_adapter_state_e adapter_state = BT_ADAPTER_DISABLED; + ret = bt_adapter_get_state(&adapter_state); + if (ret != BT_ERROR_NONE) { + _ERR("bluetooth bt_adapter_get_state failed = [%d]", ret); + return -1; + } + + if (adapter_state == BT_ADAPTER_ENABLED) { + return __fido_gatt_server_start(); + } + + return 0; +} diff --git a/ble_roaming_agent/src/fido_gatt_server.h b/ble_roaming_agent/src/fido_gatt_server.h new file mode 100644 index 0000000..b03954b --- /dev/null +++ b/ble_roaming_agent/src/fido_gatt_server.h @@ -0,0 +1,9 @@ +#ifndef _FIDO_GATT_SERVER_H_ +#define _FIDO_GATT_SERVER_H_ + + +int fido_gatt_server_init(void); +int fido_gatt_server_shutdown(void); + + +#endif /* _FIDO_GATT_SERVER_H_ */ diff --git a/bt_roaming_agent/CMakeLists.txt b/bt_roaming_agent/CMakeLists.txt new file mode 100644 index 0000000..401f562 --- /dev/null +++ b/bt_roaming_agent/CMakeLists.txt @@ -0,0 +1,45 @@ +SET(BT_RAGENT_DAEMON fido-bt-ragent-service) + +INCLUDE(FindPkgConfig) +pkg_check_modules(BT_RAGENT_DAEMON_PKGS REQUIRED + dlog + glib-2.0 + capi-base-common + pkgmgr-info + gio-2.0 + gio-unix-2.0 + gmodule-2.0 + cynara-client + cynara-session + cynara-creds-gdbus + capi-network-connection + capi-base-common + capi-appfw-application + capi-appfw-app-manager + aul + json-glib-1.0 + capi-system-info + capi-system-system-settings + capi-network-bluetooth +) + +FOREACH(flag ${BT_RAGENT_DAEMON_PKGS_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIE") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS}") +SET(PKGS_LDFLAGS "${BT_RAGENT_DAEMON_PKGS_LDFLAGS} -pie") + +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/bt_roaming_agent/inc/) + +FILE( GLOB BT_RAGENT_DAEMON_SRCS_CC + src/*.c +) + +ADD_EXECUTABLE(${BT_RAGENT_DAEMON} ${BT_RAGENT_DAEMON_SRCS_CC}) + +TARGET_LINK_LIBRARIES(${BT_RAGENT_DAEMON} ${BT_RAGENT_DAEMON_PKGS_LDFLAGS} fido-asm-dbus "-ldl") + +INSTALL(TARGETS ${BT_RAGENT_DAEMON} DESTINATION bin) diff --git a/bt_roaming_agent/inc/BTRoamingKeys.h b/bt_roaming_agent/inc/BTRoamingKeys.h new file mode 100644 index 0000000..c4a8809 --- /dev/null +++ b/bt_roaming_agent/inc/BTRoamingKeys.h @@ -0,0 +1,25 @@ +#include + +#ifndef _BT_ROAMINGKEYS_H +#define _BT_ROAMINGKEYS_H + +#define RA_RESOURCE_URI "/fido/auth/roaming/pin" +#define RA_RESOURCE_TYPE "org.tizen.fidoauthroamingpin" + +#define RA_QUERY_KEY_REQUEST "ra_query_prcoess_tlv" +#define RA_QUERY_KEY_SERVER_ID "ra_query_server_id" +#define RA_QUERY_KEY_RESPONSE "ra_response" + +#define RA_BLE_FRAME_MAX_SIZE 20 +/*TODO: Change to some other uids*/ +#define RA_BLE_ADVERTISING_UUID "89D3502B-0F36-433A-8EF4-C502AD55F8DC" +#define RA_BLE_SERVICE_UUID "89D3502B-0F36-433A-8EF4-C502AD55F8DC" +#define RA_BLE_UUID_REQUEST "9B3C81D8-57B1-4A8A-B8DF-0E56F7CA51C2" +#define RA_BLE_UUID_RESPONSE "2F7CABCE-808D-411F-9A0C-BB92BA96C102" +#define RA_BLE_SERVICE_REVISION "1.0" +#define RA_BLE_FRAME_MAX_SIZE 20 +#define RA_BLE_DATA_MAX_SIZE 65536 + +#define BT_DISC_TIMEOUT_SEC 5 + +#endif // _BT_ROAMINGKEYS_H diff --git a/bt_roaming_agent/inc/bt_server.h b/bt_roaming_agent/inc/bt_server.h new file mode 100644 index 0000000..6e2653b --- /dev/null +++ b/bt_roaming_agent/inc/bt_server.h @@ -0,0 +1,8 @@ +#ifndef BT_SERVER_H +#define BT_SERVER_H + +int bt_server_start(void); + +int bt_server_stop(void); + +#endif // BT_SERVER_H diff --git a/bt_roaming_agent/src/bt_ragent_main.c b/bt_roaming_agent/src/bt_ragent_main.c new file mode 100644 index 0000000..8341908 --- /dev/null +++ b/bt_roaming_agent/src/bt_ragent_main.c @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include + +#include "AsmHelper.h" +#include "bt_server.h" + +int +main(int argc, char *argv[]) +{ + _INFO("Starting BT Roaming Agent Service"); + + GMainLoop *mainloop = g_main_loop_new(NULL, FALSE); + + int ret = bt_server_start(); + _INFO("bt_server_start=[%d]", ret); + + g_main_loop_run(mainloop); + + return 0; +} diff --git a/bt_roaming_agent/src/bt_server.c b/bt_roaming_agent/src/bt_server.c new file mode 100644 index 0000000..7603002 --- /dev/null +++ b/bt_roaming_agent/src/bt_server.c @@ -0,0 +1,506 @@ + +#include +#include "bt_server.h" + +#include "AsmHelper.h" +#include "BTRoamingKeys.h" +#include "fido-client-ipc-stub.h" + +#include +#include +#include +#include +#include +#include + +#define RA_BT_SERVICE_UUID "00001101-0000-1000-8000-00805F9B34FB" +#define RA_LEN_DELIM ':' +#define RA_LEN_DELIM_STR ":" +#define DELIM_LEN 2 +#define D_LEN_MAX_LEN 12 + +/*Proper error*/ +#define ERR_RESP "ZXJyb3I" + +typedef struct _bt_server { + char *client_addr; + bool is_authorized; + int server_socket_fd; + int client_socket_fd; + char *client_req; + int client_req_len; + int expected_len; + int rem_len; + int active_timer_id; +} bt_server_t; + +typedef struct _bt_timer_info { + int timer_id; + bt_server_t *caller; +} bt_timer_info_t; + +static bt_server_t *server = NULL; + +static bt_server_t* +__create_server_handle(void) +{ + bt_server_t *s = (bt_server_t*)calloc(1, sizeof(bt_server_t)); + s->client_addr = NULL; + s->is_authorized = false; + s->server_socket_fd = -1; + s->client_socket_fd = -1; + s->client_req_len = 0; + s->client_req = NULL; + s->expected_len = 0; + s->rem_len = 0; + s->active_timer_id = 0; + + return s; +} + + +static void +__destroy_server_handle(bt_server_t *s) +{ + RET_IF_FAIL_VOID(s != NULL); + + SAFE_DELETE(s->client_addr); + SAFE_DELETE(s->client_req); + s->client_req_len = 0; + SAFE_DELETE(s); +} + +static Fidoasm* +__asm_get_dbus_proxy(void) +{ +#if !GLIB_CHECK_VERSION(2, 35, 0) + g_type_init(); +#endif + + GDBusConnection *connection = NULL; + GError *error = NULL; + + connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error); + + /* Create the object */ + Fidoasm *dbus_proxy = fidoasm_proxy_new_sync(connection, + G_DBUS_PROXY_FLAGS_NONE, + "org.tizen.fidoasm", + "/org/tizen/fidoasm", + NULL, + &error); + + if (error != NULL) + _ERR("bluetooth bluetooth fidoasm_proxy_new_sync failed %s", error->message); + + return dbus_proxy; +} + + +static void +__sock_state_changed_cb(int result, bt_socket_connection_state_e connection_state, + bt_socket_connection_s *connection, void *user_data) +{ + if (result != BT_ERROR_NONE) { + _ERR("bluetooth [%d]", result); + return; + } + + if (connection_state == BT_SOCKET_CONNECTED) { + _INFO("bluetooth Connected = [%s][%s][%d]", connection->remote_address, connection->service_uuid, + connection->local_role); + + /*Allows only one*/ + SAFE_DELETE(server->client_addr); + server->client_addr = _SAFE_DUP(connection->remote_address); + return; + } + + if (connection_state == BT_SOCKET_DISCONNECTED) { + _INFO("bluetooth DisConnected = [%s][%s][%d]", connection->remote_address, connection->service_uuid, + connection->local_role); + return; + } +} + +static int +__bt_send_data(int sock_fd, char *data) +{ + if (data == NULL) { + data = strdup(ERR_RESP); + _ERR("bluetooth Failed returned from ASM"); + } + + int d_len = strlen(data); + int full_data_max_len = d_len + DELIM_LEN + D_LEN_MAX_LEN; + char *full_data = (char*)(calloc(full_data_max_len, sizeof(char))); + + snprintf(full_data, full_data_max_len, "%d%s%s", d_len, RA_LEN_DELIM_STR, data); + + int full_data_len = strlen(full_data); + _INFO("Sending data of len=[%d]", full_data_len); + + int ret = bt_socket_send_data(sock_fd, full_data, full_data_len); + _INFO("bt_socket_send_data=[%d]", ret); + + return 0; +} + +static void +__receive_finished(bt_server_t *server) +{ + if (server->client_req == NULL) { + _ERR("bluetooth No request"); + return; + } + + if (server->expected_len == 0) { + _INFO("Ignoring timeout, since data received fully before timeout"); + return; + } + + server->expected_len = 0; + server->rem_len = 0; + + char *fullDataString = (char*)calloc(server->client_req_len + 1, sizeof(char)); + memcpy(fullDataString, server->client_req, server->client_req_len); + + _INFO("bluetooth Total pack length = [%d]", server->client_req_len); + + /*Call ASM dbus and receive the response*/ + Fidoasm *asm_proxy = __asm_get_dbus_proxy(); + if (asm_proxy == NULL) { + _ERR("bluetooth bluetooth Failed to get ASM proxy"); + + server->active_timer_id = 0; + __bt_send_data(server->client_socket_fd, NULL); + return; + } + + /*const char *tlvReqB64 = server->client_req;*/ + char *tlvReqB64 = (char*)calloc(server->client_req_len + 1, sizeof(char)); + memcpy(tlvReqB64, server->client_req, server->client_req_len); + + char *tlvRespB64 = NULL; + GError *gErr = NULL; + int tz_err = 0; + fidoasm_call_ra_request_sync(asm_proxy, tlvReqB64, + &tz_err, &tlvRespB64, NULL, &gErr); + if (tlvRespB64 == NULL) { + + server->active_timer_id = 0; + __bt_send_data(server->client_socket_fd, NULL); + return; + } + + int ret = -1; + if (server->is_authorized == false) { + ret = bt_device_set_authorization(server->client_addr, BT_DEVICE_AUTHORIZED); + _INFO("bluetooth bt_device_set_authorization= [%d]", ret); + } + + _INFO("%s", tlvRespB64); + int respLen = strlen(tlvRespB64); + _INFO("%d", respLen); + ret = __bt_send_data(server->client_socket_fd, tlvRespB64); + + server->active_timer_id = 0; + + /*TODO free client_req?*/ + server->client_req = NULL; + server->client_req_len = 0; + server->client_socket_fd = -1; + + return; +} + +static void +__timer_expired(gpointer data) +{ + _INFO("bluetooth __timer_expired"); + + bt_timer_info_t *bt_timer_info = (bt_timer_info_t*)data; + if (bt_timer_info == NULL) + return; + + bt_server_t *server = (bt_server_t*)bt_timer_info->caller; + if (server == NULL) + return; + + _INFO("timeout id=[%d], active id =[%d]", bt_timer_info->timer_id, server->active_timer_id); + + if (bt_timer_info->timer_id != server->active_timer_id) { + _INFO("timeout ignored"); + bt_timer_info->caller = NULL; + free(bt_timer_info); + return; + } + + if (server->client_req == NULL) { + _ERR("bluetooth No request"); + return; + } + + if (server->expected_len == 0) { + _INFO("Ignoring timeout, since data received fully before timeout"); + return; + } + + server->expected_len = 0; + server->rem_len = 0; + server->active_timer_id = 0; + bt_timer_info->caller = NULL; + free(bt_timer_info); + + /*TODO free client_req?*/ + server->client_req = NULL; + server->client_req_len = 0; + server->client_socket_fd = -1; + + return; +} + +static gboolean +__discoverTimeOutCb(gpointer user_data) +{ + _INFO("bluetooth bluetooth discoverTimeOutCb"); + + return G_SOURCE_REMOVE; +} + +static void +__bt_sock_data_received_cb(bt_socket_received_data_s* data, void* user_data) +{ + if (data == NULL) { + _ERR("bluetooth No received data!"); + return; + } + + _INFO("bluetooth Socket fd: %d", data->socket_fd); + _INFO("bluetooth Data: %s", data->data); + _INFO("bluetooth Size: %d", data->data_size); + + char *pack = NULL; + int fullPackLen = 0; + int cur_pack_len = 0; + //bt_server_t *server = (bt_server_t*)user_data; + server->client_socket_fd = data->socket_fd; + /*Packets may arrive segmented, so use timer to get long data*/ + if (server->client_req == NULL) { + + int recv_d_len = data->data_size; + if (recv_d_len <= 0) { + _ERR("Empty data frame"); + __bt_send_data(server->client_socket_fd, NULL); + return; + } + + int i = 0; + + while (1) { + + if (data->data[i] == RA_LEN_DELIM) + break; + if ((i == data->data_size) || (data->data[i] == '\0')) { + i = 0; + break; + } + i++; + } + + if (i <= 0) { + _ERR("Missing :"); + __bt_send_data(server->client_socket_fd, NULL); + return; + } + + int d_first_frame_len = data->data_size - (i + 1); + if (d_first_frame_len <= 0) { + _ERR("Empty data frame following :"); + __bt_send_data(server->client_socket_fd, NULL); + return; + } + + char *d_len_str = (char*)calloc(12, sizeof(char)); + memcpy(d_len_str, data->data, i); + /*snprintf(d_len_str, i, "%s", data->data);*/ + d_len_str[i] = '\0'; + _INFO("[%s]", d_len_str); + + int d_len = 0; + sscanf(d_len_str, "%d", &d_len); + + _INFO("Data Len frame=[%d]", d_len); + + server->expected_len = d_len; + + pack = (char*)calloc(d_first_frame_len + 1, sizeof(char)); + char *data_pack = data->data; + data_pack += i + 1; + memcpy(pack, data_pack, d_first_frame_len); + + server->rem_len = server->expected_len - d_first_frame_len; + cur_pack_len = d_first_frame_len; + + if (server->rem_len > 0) { + _INFO("Need framing"); + bt_timer_info_t *bt_timer_info = (bt_timer_info_t*)calloc(1, sizeof(bt_timer_info_t)); + bt_timer_info->caller = server; + if (server->active_timer_id > 1000) + server->active_timer_id = 0; + else + server->active_timer_id++; + + bt_timer_info->timer_id = server->active_timer_id; + + _INFO("bluetooth bluetooth [%d] sec timeout starting", 6); + g_timeout_add_seconds_full(G_PRIORITY_DEFAULT, 6, __discoverTimeOutCb, bt_timer_info, + __timer_expired); + } + + } else { + + pack = (char*)calloc(data->data_size, sizeof(char)); + memcpy(pack, data->data, data->data_size); + + server->rem_len = server->rem_len - data->data_size; + cur_pack_len = data->data_size; + } + + if (server->client_req != NULL) + fullPackLen = cur_pack_len + server->client_req_len; + else + fullPackLen = cur_pack_len; + + char *fullPackNew = (char*)calloc(fullPackLen, sizeof(char)); + + if (server->client_req != NULL) + memcpy(fullPackNew, server->client_req, server->client_req_len); + + memcpy(fullPackNew + server->client_req_len, pack, cur_pack_len); + + server->client_req_len = fullPackLen; + if (server->client_req != NULL) + free(server->client_req); + server->client_req = fullPackNew; + + free(pack); + + if (server->rem_len <= 0) { + _INFO("Received all"); + __receive_finished(server); + } +} + +static void +__bt_authorization_changed_cb(bt_device_authorization_e authorization, + char *remote_address, void *user_data) +{ + _INFO("bluetooth Authorization changed=[%d][%s]", authorization, remote_address); + if (authorization == BT_DEVICE_AUTHORIZED) + server->is_authorized = true; + else + server->is_authorized = false; +} + +/* + * Bonding is not performed via framework, user needs to pair manually, to ensure + * security. +*/ +static int +__start_rfcomm(bt_server_t *server_loc) +{ + _INFO(""); + static bool is_started = false; + if (is_started == false) { + + _INFO("bluetooth "); + int sock_fd_temp = -1; + int ret = bt_socket_create_rfcomm(RA_BT_SERVICE_UUID, &sock_fd_temp); + if (ret != BT_ERROR_NONE) { + _ERR("bluetooth bt_socket_create_rfcomm() failed."); + return -1; + } + + _INFO("bluetooth socket fd = [%d]", sock_fd_temp); + server->server_socket_fd = sock_fd_temp; + + _INFO("bluetooth before bt_socket_set_connection_state_changed_cb"); + ret = bt_socket_set_connection_state_changed_cb(__sock_state_changed_cb, + server); + if (ret != BT_ERROR_NONE) { + _ERR("bluetooth [bt_socket_listen_and_accept_rfcomm] failed."); + return -1; + } + + _INFO("bluetooth before bt_socket_listen_and_accept_rfcomm"); + ret = bt_socket_listen_and_accept_rfcomm(server->server_socket_fd, 1); + if (ret != BT_ERROR_NONE) { + _ERR("[bt_socket_listen_and_accept_rfcomm] failed."); + return -1; + } + + _INFO("bluetooth before bt_socket_set_data_received_cb"); + ret = bt_socket_set_data_received_cb(__bt_sock_data_received_cb, server); + if (ret != BT_ERROR_NONE) { + _ERR("[bt_socket_set_data_received_cb] failed."); + return -1; + } + + ret = bt_device_set_authorization_changed_cb(__bt_authorization_changed_cb, server); + _INFO("bluetooth %d", ret); + is_started = true; + } + + _INFO("bluetooth "); + return 0; +} + +static void +adapter_state_changed_cb(int result, bt_adapter_state_e adapter_state, void* user_data) +{ + _INFO("bluetooth %d", result); + _INFO("bluetooth %d", adapter_state); + if (adapter_state == BT_ADAPTER_ENABLED) { + __start_rfcomm(user_data); + } +} + +int +bt_server_start(void) +{ + int ret = bt_initialize(); + if (ret != BT_ERROR_NONE) { + _ERR("bluetooth bt_socket_create_rfcomm() failed."); + return -1; + } + + server = __create_server_handle(); + + ret = bt_adapter_set_state_changed_cb(adapter_state_changed_cb, NULL); + + bt_adapter_state_e adapter_state = BT_ADAPTER_ENABLED; + + ret = bt_adapter_get_state(&adapter_state); + if (ret != BT_ERROR_NONE) { + _ERR("bluetooth bt_socket_create_rfcomm() failed."); + return -1; + } + + _INFO("bluetooth %d", adapter_state); + + if (adapter_state == BT_ADAPTER_ENABLED) { + return __start_rfcomm(server); + } + return 0; +} + +int +bt_server_stop(void) +{ + _INFO("bluetooth "); + bt_socket_destroy_rfcomm(server->server_socket_fd); + __destroy_server_handle(server); + server = NULL; + return 0; +} diff --git a/common/AsmHelper.h b/common/AsmHelper.h new file mode 100644 index 0000000..5850666 --- /dev/null +++ b/common/AsmHelper.h @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef ASMHELPER_H +#define ASMHELPER_H + +#include +#include + +#define RET_IF_FAIL_VOID(cond) do {\ + if (!(cond)){\ + return;\ + }\ +} while(0) + +#define RET_IF_FAIL(cond, err) do {\ + if (!(cond)){\ + return err;\ + }\ +} while(0) + +#define CATCH_IF_FAIL(cond) do {\ + if (!(cond)){\ + goto CATCH;\ + }\ +} while(0) + +#define CATCH_IF_FAIL_X(cond, expr) do {\ + if (!(cond)){\ + expr;\ + goto CATCH;\ + }\ +} while(0) + +#define GOTO_IF_FAIL(cond, catch_block) do {\ + if (!(cond)){\ + goto catch_block;\ + }\ +} while(0) + +#define SAFE_DELETE(x) do {\ + if (x != NULL) {\ + free(x); \ + x = NULL;\ + }\ +} while(0) + +#define _SAFE_DUP(x) ((x) ? strdup(x) : NULL) + +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "org.tizen.fido.asm" + +#ifndef _ERR +#define _ERR(fmt, args...) LOGE("[%s:%d] "fmt"\n", __func__, __LINE__, ##args) +#endif + +#ifndef _DBG +#define _DBG(fmt, args...) LOGD("[%s:%d] "fmt"\n", __func__, __LINE__, ##args) +#endif + +#ifndef _INFO +#define _INFO(fmt, args...) LOGI("[%s:%d] "fmt"\n", __func__, __LINE__, ##args) +#endif + +#ifndef _BEGIN +#define _BEGIN LOGI("[%s:%d] START \n", __func__, __LINE__) +#endif + +#ifndef _END +#define _END LOGI("[%s:%d] END \n", __func__, __LINE__) +#endif + +#define ALLOC(type) (type *)calloc(1, sizeof(type)) +#define NALLOC(num, type) (type *)calloc(num, sizeof(type)) + +#endif // ASMHELPER_H diff --git a/common/cryptoutil/inc/asmcrypto.h b/common/cryptoutil/inc/asmcrypto.h new file mode 100644 index 0000000..90fff27 --- /dev/null +++ b/common/cryptoutil/inc/asmcrypto.h @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __asmcrypto_H__ +#define __asmcrypto_H__ + +#include +#include +#include +#include + +class AsmCrypto { + +public: + static int genRandom(unsigned char *random, int num); + static bool genHash256(const void* input, unsigned long length, unsigned char* md); + static int genRSAKeyPair(char *pubkey, char *prikey, const char *passwd, int keysize); + static int genRSASignValue(const char *privkey, const char * passwd, const unsigned char * msg, unsigned int len, unsigned char *sign,unsigned int *signlen); + static int genB64Encode(const unsigned char *input, int inlen, unsigned char * output, int *outlen); + static unsigned char *ToBase64Url(const unsigned char *input, int inputLen); + static int genB64Decodes(const unsigned char *input, int inlen, unsigned char * output, int *outlen); + static unsigned char *FromBase64Url(const unsigned char *input, int inputLen); + static int aesEncrypt(const unsigned char *plaintext, int plaintext_len, const unsigned char *key, + const unsigned char *iv, unsigned char *ciphertext); + static int aesDecrypt(const unsigned char *ciphertext, int ciphertext_len, const unsigned char *key, + const unsigned char *iv, unsigned char *plaintext); + static int createRSAKeyPair(int ksz, char **pubkey, int *pubkey_len, char **prikey, int *prikey_len); + static int createSha256Digest(const unsigned char *ip, int ip_len, char **op); + static unsigned char* readDer(const char *der_file_name, int *len); + static unsigned char *signRSA(const unsigned char *m, unsigned char *pri_key); + + /*Caller must call AuthenrStub::Hash on this*/ + static std::string getKHAccessToken(std::string appId, bool isBound); + + static int signWithRSAPSSMGF1(const char *message, int m_len, + const char *privKeyFile, const char *pwd, + unsigned char **signature, int *sig_len); + + static int digestSignRSAPSSMGF1(const char *message, int m_len, + const char *privKeyFile, const char *pwd, + unsigned char **signature, int *sig_len); + + static std::string getDeviceId(void); + static char* getAppId(char *appIdPubKey); + + static unsigned char* fidoSignWithKey(const unsigned char *msg, int msg_len, + const unsigned char *private_key, int priv_key_len, + int *sig_len); + + static unsigned char* fidoSign(const unsigned char *msg, int msg_len, const char *private_key_file, + const char *pwd, int *sig_len); + + static std::string getAsmToken(void); +private: + + static int onPkgList(pkgmgrinfo_pkginfo_h handle, void *user_data); + static void logDataToFile(const char *file_name_prefix, const char *data, int data_len); + static void logRawDataToFile(const char *file_name_prefix, const unsigned char *data, int data_len); + AsmCrypto(void); + ~AsmCrypto(void); +}; + + +#endif /* __asmcrypto_H__ */ diff --git a/common/cryptoutil/src/AsmCrypto.cpp b/common/cryptoutil/src/AsmCrypto.cpp new file mode 100644 index 0000000..32d7dee --- /dev/null +++ b/common/cryptoutil/src/AsmCrypto.cpp @@ -0,0 +1,1381 @@ + +#include "asmcrypto.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include "AsmHelper.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define ASM_CONFIG_FILE "/opt/usr/data/.asm.config" +#define FIDO_CLIENT_CALLER_ID "org.tizen.fido" +#define LOG_FILE_PATH "/tmp/" +#define uid 5001 + +#define EVP_SUCCESS 1 +#define EVP_FAIL 0 + +typedef struct __der_cert { + unsigned char* raw_cert; + size_t cert_size; +} _der_cert_s; + +void +AsmCrypto::logDataToFile(const char *file_name_prefix, const char *data, int data_len) +{ + char fn[128] = {0, }; + snprintf(fn, 127, "%s%s", LOG_FILE_PATH, file_name_prefix); + + FILE *fp = fopen(fn, "w+"); + if (fp == NULL) + return; + + int num = fwrite(data, sizeof(char), data_len, fp); + + _INFO("[%d] bytes logged in [%s]", num, fn); + + fclose(fp); +} + +void +AsmCrypto::logRawDataToFile(const char *file_name_prefix, const unsigned char *data, int data_len) +{ + char fn[128] = {0, }; + snprintf(fn, 127, "%s%s", LOG_FILE_PATH, file_name_prefix); + + FILE *fp = fopen(fn, "w+"); + if (fp == NULL) + return; + + int num = fwrite(data, sizeof(unsigned char), data_len, fp); + + _INFO("[%d] bytes logged in [%s]", num, fn); + + fclose(fp); +} + +static int +__der_cert_new(unsigned char *raw_cert, size_t cert_size, _der_cert_s **ppcert) +{ + _INFO("__der_cert_new start"); + + _der_cert_s *pcert; + + if(raw_cert == NULL || cert_size <= 0 || ppcert == NULL) { + return -1; + } + + pcert = static_cast<_der_cert_s*>(malloc(sizeof(_der_cert_s))); + if(pcert == NULL) { + return -1; + } + + pcert->raw_cert = reinterpret_cast(malloc(cert_size)); + if(pcert->raw_cert == NULL) { + free(pcert); + return -1; + } + memcpy(pcert->raw_cert, raw_cert, cert_size); + + pcert->cert_size = cert_size; + + *ppcert = pcert; + + _INFO("__der_cert_new end"); + return 0; +} + +static int +__load_cert_from_x509(X509 *xCert, _der_cert_s **cert) +{ + _INFO("__load_cert_from_x509 start"); + + if(xCert == NULL) { + return -1; + } + + BIO *bcert = BIO_new(BIO_s_mem()); + + i2d_X509_bio(bcert, xCert); + + std::vector output(8196); + int size = BIO_read(bcert, output.data(), output.size()); + BIO_free_all(bcert); + if (size <= 0) { + return -1; + } + output.resize(size); + + return __der_cert_new(output.data(), output.size(), cert); +} + +std::string +AsmCrypto::getDeviceId(void) +{ + /*Find IoTCon logic to get device id*/ + return getAsmToken(); +} + +/*TODO revisit*/ +std::string +AsmCrypto::getAsmToken(void) +{ + _BEGIN; + + static char *asmTok = NULL; + if (asmTok != NULL) + return asmTok; + + char *mac = NULL; + + bt_initialize(); + bt_adapter_state_e btState; + bt_adapter_get_state(&btState); + if (btState == BT_ADAPTER_ENABLED) { + bt_adapter_get_address(&mac); + if (mac != NULL) { + char *macClone = _SAFE_DUP(mac); + _INFO("%s", macClone); + std::string macStr(macClone); + _INFO("%s", macStr.c_str()); + asmTok = strdup(macClone); + return macStr; + } + } else { + /*TODO*/ + _ERR("Failed to get any NW ID, using rand"); + time_t t; + srand((unsigned) time(&t)); + mac = (char*)calloc(128, sizeof(char)); + snprintf(mac, 128 - 1, "%d", (rand()%1000 + 1)); + + char *macClone = _SAFE_DUP(mac); + _INFO("%s", macClone); + std::string macStr(macClone); + _INFO("%s", macStr.c_str()); + asmTok = strdup(macClone); + return macStr; + } + + FILE *file = fopen(ASM_CONFIG_FILE, "r"); + + if (file == NULL) { + _INFO("AsmCrypto::getAsmToken:: asm_config file is NULL"); + + connection_h conn = NULL; + connection_create(&conn); + + char *mac = NULL; + + /*Try: Ethernet*/ + int ret = connection_get_mac_address(conn, CONNECTION_TYPE_ETHERNET, &mac); + + /*Try: Wifi*/ + if (ret != CONNECTION_ERROR_NONE) + ret = connection_get_mac_address(conn, CONNECTION_TYPE_WIFI, &mac); + + /*Try: BT*/ + if (ret != CONNECTION_ERROR_NONE) + ret = connection_get_mac_address(conn, CONNECTION_TYPE_BT, &mac); + + if (ret != CONNECTION_ERROR_NONE) { + _ERR("Failed to get any NW ID, using rand"); + time_t t; + srand((unsigned) time(&t)); + mac = (char*)calloc(128, sizeof(char)); + snprintf(mac, 128 - 1, "%d", (rand()%1000 + 1)); + } + file = fopen(ASM_CONFIG_FILE, "w+"); + fwrite(mac, sizeof(char), strlen(mac), file); + fclose(file); + + std::string tok(mac, strlen(mac)); + _END; + asmTok = strdup(mac); + return tok; + } + else { + fseek(file, 0, SEEK_END); + long size = ftell(file); + if (size <= 0) { + fclose(file); + _END; + return std::string(); + } + + fseek(file, 0, SEEK_SET); + + char *config = (char*)(calloc(1, size + 1)); + int num_bytes = fread(config, size, 1, file); + if (num_bytes <= 0) { + free(config); + fclose(file); + _END; + return std::string(); + } + + config[size] = '\0'; + + fclose(file); + + std::string tok(config, strlen(config)); + _END; + asmTok = strdup(config); + return tok; + } +} + +std::string +AsmCrypto::getKHAccessToken(std::string appId, bool isBound) +{ + _BEGIN; + std::string khA(appId); + + if (isBound == true) { + khA += getAsmToken(); + /*TODO: Replace with TLM/GUMD APIs to get the logged-in user id*/ + /*khA += getuid();*/ + khA += FIDO_CLIENT_CALLER_ID; + } + + _INFO("AsmCrypto::getKHAccessToken:: KHA = [%s]", khA.c_str()); + + _END; + return khA; +} + +int +AsmCrypto::genRandom(unsigned char *random, int num) +{ + int ret; + ret = RAND_bytes(random, num); + if(ret != -1) + { + return 0; + } + else + { + return -1; + } +} + +bool +AsmCrypto::genHash256(const void* input, unsigned long length, unsigned char* md) +{ + SHA256_CTX context; + if(!SHA256_Init(&context)) + return false; + + if(!SHA256_Update(&context, (unsigned char*)input, length)) + return false; + + if(!SHA256_Final(md, &context)) + return false; + + return true; +} + +int +AsmCrypto::genRSAKeyPair(char *pubkey, char *prikey, const char *passwd, int keysize) +{ + return -1; +} + +int +AsmCrypto::genRSASignValue(const char *privkey, const char * passwd, const unsigned char * msg, unsigned int len, unsigned char *sign,unsigned int *signlen) +{ + return -1; +} + +int +AsmCrypto::genB64Encode(const unsigned char *input, int inlen, unsigned char * output, int *outlen) +{ +#if 0 + EVP_ENCODE_CTX ctx; + int t = 0; + EVP_EncodeInit(&ctx); + EVP_EncodeUpdate(&ctx, output,outlen,input,inlen); + EVP_EncodeFinal(&ctx,output + *outlen, &t); + *outlen += t -1; +#else + BIO * bmem = NULL; + BIO * b64 = NULL; + BUF_MEM * bptr = NULL; + b64 = BIO_new(BIO_f_base64()); + if(b64 == NULL) + { + _ERR("BIO_new failed \n"); + return -1; + } + BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL); + + bmem = BIO_new(BIO_s_mem()); + b64 = BIO_push(b64, bmem); + BIO_write(b64, input, inlen); + BIO_flush(b64); + BIO_get_mem_ptr(b64, &bptr); + + memcpy(output, bptr->data, bptr->length); + output[bptr->length] = 0; + *outlen = bptr->length; + if(b64) + { + BIO_free_all(b64); + } + //printf("outlen is %d, out is %s\n",*outlen, output); +#endif + for(int i =0; i < *outlen ; i++) + { + if(output[i] == '+') + { + output[i] = '-'; + } + else if(output[i] == '/') + { + output[i] = '_'; + } + else if(output[i] == '=') + { + *outlen = i ; + output[i] = '\0'; + break; + } + } + + _INFO("AsmCrypto::genB64Encode:: outlen = [%d]", *outlen); + return 0; +} + +int +AsmCrypto::genB64Decodes(const unsigned char *input, int inlen, unsigned char * output, int *outlen) +{ + _INFO("GenBase64Decode start"); + + _INFO("%s", input); + _INFO("input len = %d", inlen); + + int npadChars = (inlen %4) == 0 ? 0 : (4 - (inlen%4)); + unsigned char *base64 = (unsigned char *) malloc(inlen + npadChars); + if(base64 == NULL) + { + _ERR("malloc failed \n"); + return -1; + } + memcpy(base64, input, inlen); + for(int i =0; i < inlen ; i++) + { + if(base64[i] == '-') + { + base64[i] = '+'; + } + else if(base64[i] == '_') + { + base64[i] = '/'; + } + } + if(npadChars != 0) + { + memset(base64 + inlen, '=', npadChars); + } + //printf("in 2 is :%s. %d\n",base64, inlen); + + BIO * b64 = NULL; + BIO * bmem = NULL; + b64 = BIO_new(BIO_f_base64()); + if(b64 == NULL) + { + free(base64); + _ERR("BIO_new failed"); + return -1; + } + BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL); + bmem = BIO_new_mem_buf(base64, inlen + npadChars); + if(bmem == NULL) + { + _ERR("BIO_new_mem_buf failed"); + BIO_free(b64); + free(base64); + return -1; + } + bmem = BIO_push(b64, bmem); + *outlen = BIO_read(bmem, output, inlen + npadChars); + if(*outlen <=0) + { + BIO_free(b64); + free(base64); + _ERR("BIO_read failed. size or data error"); + return -1; + } + if(b64) + { + BIO_free_all(b64); + } + + _INFO("%s", output); + _INFO("outlen len = %d", *outlen); + + return 0; +} + +int +AsmCrypto::aesEncrypt(const unsigned char *plaintext, int plaintext_len, const unsigned char *key, + const unsigned char *iv, unsigned char *ciphertext) +{ + EVP_CIPHER_CTX *ctx; + + int len; + + int ciphertext_len; + + + if(!(ctx = EVP_CIPHER_CTX_new())) + { + _ERR("EVP_CIPHER_CTX_new() failed"); + return -1; + } + + if(1 != EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv)) + { + _ERR("EVP_EncryptInit_ex() failed"); + return -1; + } + + if(1 != EVP_EncryptUpdate(ctx, ciphertext, &len, plaintext, plaintext_len)) + { + _ERR("EVP_EncryptUpdate() failed"); + return -1; + } + + ciphertext_len = len; + + if(1 != EVP_EncryptFinal_ex(ctx, ciphertext + len, &len)) + { + _ERR("EVP_EncryptFinal_ex() failed"); + return -1; + } + + ciphertext_len += len; + + EVP_CIPHER_CTX_free(ctx); + + return ciphertext_len; +} + +int +AsmCrypto::aesDecrypt(const unsigned char *ciphertext, int ciphertext_len, const unsigned char *key, + const unsigned char *iv, unsigned char *plaintext) +{ + _BEGIN; + + EVP_CIPHER_CTX *ctx; + + int len; + + int plaintext_len; + + if(!(ctx = EVP_CIPHER_CTX_new())) + { + _ERR("EVP_CIPHER_CTX_new() failed"); + return -1; + } + + if(1 != EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv)) + { + _ERR("EVP_DecryptInit_ex() failed"); + return -1; + } + + if(1 != EVP_DecryptUpdate(ctx, plaintext, &len, ciphertext, ciphertext_len)) + { + _ERR("EVP_DecryptUpdate() failed"); + return -1; + } + + plaintext_len = len; + + if(1 != EVP_DecryptFinal_ex(ctx, plaintext + len, &len)) + { + _ERR("EVP_DecryptFinal_ex() failed"); + return -1; + } + + plaintext_len += len; + + EVP_CIPHER_CTX_free(ctx); + + _END; + return plaintext_len; +} + +int +AsmCrypto::createRSAKeyPair(int ksz, char **pubkey, int *pubkey_len, char **prikey, int *prikey_len) +{ + _INFO("Modified CreateRSAKeyPair start"); + + EVP_PKEY_CTX *pctx = NULL; + EVP_PKEY *pkey = NULL; + RSA *rsa; + + pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, NULL); + if (!pctx) + return -1; + + _INFO("After EVP_PKEY_CTX_new_id"); + + EVP_PKEY_keygen_init(pctx); + _INFO("After EVP_PKEY_keygen_init"); + + EVP_PKEY_CTX_set_rsa_keygen_bits(pctx, ksz); + + _INFO("After EVP_PKEY_CTX_set_rsa_keygen_bits"); + + EVP_PKEY_keygen(pctx, &pkey); + _INFO("After EVP_PKEY_keygen"); + + rsa = EVP_PKEY_get1_RSA(pkey); + _INFO("After EVP_PKEY_get1_RSA"); + + + /*Private Key*/ + BIO *bio_priv = BIO_new(BIO_s_mem()); + PEM_write_bio_RSAPrivateKey(bio_priv, rsa, NULL, NULL, 0, NULL, NULL); + int keylen_priv = BIO_pending(bio_priv); + char *pem_key_priv = (char *)calloc(keylen_priv + 1, 1); /* Null-terminate */ + BIO_read(bio_priv, pem_key_priv, keylen_priv); + _INFO("After Private key"); + + /*Public Key*/ + BIO *bio_pub = BIO_new(BIO_s_mem()); + PEM_write_bio_RSAPublicKey(bio_pub, rsa); + + int keylen_pub = BIO_pending(bio_pub); + char *pem_key_pub = (char *)calloc(keylen_pub + 1, 1); /* Null-terminate */ + BIO_read(bio_pub, pem_key_pub, keylen_pub); + _INFO("After Public key"); + + *pubkey = pem_key_pub; + *prikey = pem_key_priv; + + *pubkey_len = keylen_pub; + *prikey_len = keylen_priv; + + _INFO("CreateRSAKeyPair end"); + + return 0; +} + +int +AsmCrypto::createSha256Digest(const unsigned char *ip, int ip_len, char **op) +{ + unsigned char hash[SHA256_DIGEST_LENGTH]; + SHA256_CTX sha256; + SHA256_Init(&sha256); + SHA256_Update(&sha256, ip, ip_len); + SHA256_Final(hash, &sha256); + + char *op_temp = (char *) (calloc(1, (SHA256_DIGEST_LENGTH * 2) + 1)); + int i = 0; + for(i = 0; i < SHA256_DIGEST_LENGTH; i++) + { + sprintf(op_temp + (i * 2), "%02x", hash[i]); + } + + *op = op_temp; + + return 0; +} + +unsigned char* +AsmCrypto::readDer(const char *der_file_name, int *len) +{ + _INFO("ReadDERCertFile start"); + + FILE *fp = fopen(der_file_name, "r"); + if(fp == NULL) + return NULL; + + X509 *pcert = NULL; + pcert = d2i_X509_fp(fp, NULL); + fclose(fp); + + if (pcert == NULL) + return NULL; + + _der_cert_s *cert = (_der_cert_s*)(calloc(1, sizeof(_der_cert_s))); + + int ret = __load_cert_from_x509(pcert, &cert); + if(ret != 0) { + return NULL; + } + + *len = cert->cert_size; + + _INFO("ReadDERCertFile end"); + + return cert->raw_cert; +} + + + +unsigned char* +AsmCrypto::ToBase64Url(const unsigned char *input, int inputLen) +{ + _BEGIN; + if (input == NULL) + return NULL; + + int inputSz = inputLen; //input.size(); + + _INFO("AsmCrypto::ToBase64Url::input size = [%d]", inputSz); + + unsigned char* output = NULL; + //MALLOC(output, unsigned char, inputSz*1.5); + + output = (unsigned char*)calloc(1, inputSz*1.5); + + int outputSz = 0; + + if (0 != AsmCrypto::genB64Encode(input, + inputSz, + output, + &outputSz)) + { + _ERR("Failed to encode base64."); + free(output); + return (unsigned char*)""; + } + + _INFO("AsmCrypto::ToBase64Url::output size = [%d]", outputSz); + _INFO("AsmCrypto::ToBase64Url::output = [%s]", output); + + _END; + return output; +} + +unsigned char* +AsmCrypto::FromBase64Url(const unsigned char *input, int inputLen) +{ + _BEGIN; + + int inputSz = inputLen; + unsigned char* output = NULL; + + output = (unsigned char*)calloc(1, inputSz*1.5); + int outputSz = 0; + + if (0 != AsmCrypto::genB64Decodes(input, + inputSz, + output, + &outputSz)) + { + _ERR("Failed to decode base64."); + free(output); + return (unsigned char*)""; + } + + _END; + return output; +} + +#define RSA_MAX_MES_LENGTH 128 +#define RSA_MAX_SIGN_SIZE 512 +#define RSA_MAX_BITS 4096 +#define RSA_MAX_DGST_SIZE 64 + +void hex2bin(const char *str, int str_len, void *mem) +{ + int i; + int len = str_len; + char byte[3]; + char *M = (char *) mem; + byte[2] = 0; + + for(i = 0; i < len; i+=2) + { + byte[0] = str[i]; + byte[1] = str[i+1]; + M[i/2] = strtoul(byte, NULL, 16); + } +} + +int +AsmCrypto::signWithRSAPSSMGF1(const char *message, int m_len, + const char *privKeyFile, const char *pwd, + unsigned char **signature, int *sig_len) +{ + _BEGIN; + int err_no; + unsigned int size; + unsigned int dgst_size; + unsigned char mess[RSA_MAX_MES_LENGTH]; + unsigned char dgst[RSA_MAX_DGST_SIZE]; + unsigned char tbs[RSA_MAX_SIGN_SIZE]; + unsigned char *sig = (unsigned char *)calloc(1, sizeof(RSA_MAX_SIGN_SIZE)); + //RSA *rsa = NULL; + /*BIGNUM * bn_pub_exp = NULL;*/ + EVP_MD_CTX * mdctx = NULL; + const EVP_MD *md = NULL; + + OpenSSL_add_all_algorithms(); + + FILE *fp; + EVP_PKEY *pkey = NULL; + + fp = fopen(privKeyFile, "r"); + if (fp == NULL) + { + _ERR("Failed to open private key file"); + return -1; + } + + pkey = PEM_read_PrivateKey(fp, &pkey, NULL, (void *)pwd); + + fclose(fp); + + if (pkey == NULL) + { + _ERR("PEM_read_PrivateKey failed"); + return -1; + } + + RSA *rsa = EVP_PKEY_get1_RSA(pkey); + +// int bits = 256; + +// if (bits > RSA_MAX_BITS) +// { +// err_no = -1; +// goto err; +// } + + size = m_len / 2; +// if ( ((size) > RSA_MAX_MES_LENGTH) || ((size) > (bits/8))) +// return -1; + + hex2bin(message, m_len, (void *)mess); + +// if ( (bn_pub_exp = BN_new()) == NULL ) +// { +// err_no = -1; +// goto err; +// } + +// if(!BN_hex2bn(&bn_pub_exp, str_pub_exp)) +// { +// err_no = -1; +// goto err; +// } + + md = EVP_get_digestbynid(NID_sha256); + if(!md) + { + err_no = -1; + goto err; + } + + mdctx = EVP_MD_CTX_create(); + if ( !mdctx) + { + err_no = -1; + goto err; + } + + EVP_DigestInit_ex(mdctx, md, NULL); + EVP_DigestUpdate(mdctx, mess, size); + EVP_DigestFinal_ex(mdctx, dgst, &dgst_size); + EVP_MD_CTX_destroy(mdctx); + + /*rsa = RSA_new(); + if(!rsa) + { + err_no = RSA_ERR; + goto err; + } + RSA_set_method(rsa, (const RSA_METHOD *)RSA_get_default_method()); + + err_no = RSA_generate_key_ex(rsa, bits, bn_pub_exp, NULL); + if (err_no <= 0) + { + err_no = RSA_ERR; + goto err; + }*/ + + if (!RSA_padding_add_PKCS1_PSS_mgf1(rsa, tbs, dgst, md, md, -2 /* */ )) + { + err_no = -1; + goto err; + } + + err_no = RSA_private_encrypt(RSA_size(rsa), tbs, sig, rsa, RSA_NO_PADDING); + if(err_no < 0) + { + _INFO("ERR::RSA_private_encrypt"); + err_no = -1; + goto err; + } + + _INFO("SUCCESS::RSA_private_encrypt"); +// err_no = RSA_public_decrypt(RSA_size(rsa), sig, tbs, rsa, RSA_NO_PADDING); +// if (err_no <= 0) +// { +// err_no = RSA_ERR; +// goto err; +// } +// err_no = RSA_verify_PKCS1_PSS_mgf1(rsa, dgst, md, md, tbs, -2); +// if (err_no <= 0) +// { +// err_no = RSA_ERR; +// goto err; +// } + + *signature = sig; + *sig_len = 256; + + err_no = 0; + +err: + +// if(rsa) RSA_free(rsa); +// if(bn_pub_exp) BN_free(bn_pub_exp); + + return err_no; +} + +int +AsmCrypto::digestSignRSAPSSMGF1(const char *message, int m_len, + const char *privKeyFile, const char *pwd, + unsigned char **signature, int *sig_len) +{ + + OpenSSL_add_all_algorithms(); + + FILE *fp; + EVP_PKEY *privKey = NULL; + + fp = fopen(privKeyFile, "r"); + if (fp == NULL) + { + _ERR("Failed to open private key file"); + return -1; + } + + privKey = PEM_read_PrivateKey(fp, &privKey, NULL, (void *)pwd); + + fclose(fp); + + if (privKey == NULL) { + _ERR("PEM_read_PrivateKey failed"); + return -1; + } + + EVP_MD_CTX *mdctx = EVP_MD_CTX_create(); + + EVP_PKEY_CTX *pctx = NULL; + + // Create the Message Digest Context + + if(EVP_SUCCESS != EVP_DigestSignInit(mdctx, &pctx, EVP_sha256(), NULL, privKey)) { + _ERR("EVP_DigestSignInit failed"); + return -1; + } + + /* Set padding algorithm */ + if(EVP_SUCCESS != EVP_PKEY_CTX_set_rsa_padding(pctx, RSA_PKCS1_PSS_PADDING)) { + _ERR("EVP_PKEY_CTX_set_rsa_padding failed"); + return -1; + } + if (EVP_SUCCESS != EVP_PKEY_CTX_set_rsa_pss_saltlen(pctx, 32)) { + _ERR("EVP_PKEY_CTX_set_rsa_pss_saltlen failed"); + return -1; + } + _INFO("After EVP_PKEY_CTX_set_rsa_pss_saltlen with 32"); + + /* Set masking */ + if(EVP_SUCCESS != EVP_PKEY_CTX_set_rsa_mgf1_md(pctx, EVP_sha256())) { + _ERR("EVP_PKEY_CTX_set_rsa_padding failed"); + return -1; + } + + /* Call update with the message */ + if(EVP_SUCCESS != EVP_DigestSignUpdate(mdctx, message, m_len)) { + _ERR("EVP_DigestSignUpdate failed"); + return -1; + } + + /* Finalize the DigestSign operation */ + /* First call EVP_DigestSignFinal with a NULL sig parameter to obtain the length of the + * signature. Length is returned in slen */ + size_t slen; + if(EVP_SUCCESS != EVP_DigestSignFinal(mdctx, NULL, &slen)) { + _ERR("EVP_DigestSignFinal failed"); + return -1; + } + + /* Allocate memory for the signature based on size in slen */ + unsigned char *sig = (unsigned char *)calloc(1, slen); + //int slen = 0; + + /* Obtain the signature */ + if(EVP_SUCCESS != EVP_DigestSignFinal(mdctx, sig, &slen)) { + _ERR("EVP_DigestSignFinal failed"); + return -1; + } + + *signature = sig; + *sig_len = slen; + return 0; +} + +typedef struct _certHandle +{ + char *b64_hash_pubKey; + char *pkgId; +} certHandle; + +static char* +__b64_encode(unsigned char *input, int ip_len) +{ + RET_IF_FAIL(input != NULL, NULL); + RET_IF_FAIL(ip_len > 0, NULL); + + unsigned char *output = (unsigned char*)calloc(ip_len * 1.5, sizeof(char)); + + BIO *bmem = NULL; + BIO *b64 = NULL; + BUF_MEM *bptr = NULL; + b64 = BIO_new(BIO_f_base64()); + if (b64 == NULL) { + _ERR("BIO_new failed \n"); + free(output); + return NULL; + } + + BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL); + + bmem = BIO_new(BIO_s_mem()); + b64 = BIO_push(b64, bmem); + BIO_write(b64, input, ip_len); + BIO_flush(b64); + BIO_get_mem_ptr(b64, &bptr); + + memcpy(output, bptr->data, bptr->length); + output[bptr->length] = 0; + + if (b64) + BIO_free_all(b64); + + return (char*)output; +} + +static int +__b64_decode(const char *encoded_data, int encoded_size, unsigned char **decoded_data, int *decoded_size) +{ + RET_IF_FAIL(encoded_data != NULL, -1); + + //_INFO("%s", encoded_data); + + int len = 0; + *decoded_size = encoded_size; + + (*decoded_data) = (unsigned char *) calloc((*decoded_size) * 1.5, sizeof(char)); + + BIO *bmem = BIO_new_mem_buf((void *) encoded_data, (*decoded_size)); + + BIO *bioCmd = BIO_new(BIO_f_base64()); + + BIO_set_flags(bioCmd, BIO_FLAGS_BASE64_NO_NL); + + bmem = BIO_push(bioCmd, bmem); + + len = BIO_read(bmem, (void *) (*decoded_data), (*decoded_size)); + _INFO("%d", len); + + *decoded_size = len; + + BIO_free_all(bmem); + + _INFO(""); + + return 0; +} + +static char* +__get_pub_key_from_cert(const char *cert_b64) +{ + RET_IF_FAIL(cert_b64 != NULL, NULL); + + unsigned char pubkey_der_digest[SHA256_DIGEST_LENGTH] = {0, }; + + unsigned char* cert_raw = NULL;//calloc(strlen(cert_b64) * 1.5, sizeof(char)); + + int cert_raw_len = 0; + + int ret = __b64_decode(cert_b64, strlen(cert_b64), &cert_raw, &cert_raw_len); + if (ret != 0) { + _ERR("__b64_decode failed"); + free(cert_raw); + + return NULL; + } + + X509 *x509 = d2i_X509(NULL, (const unsigned char **)(&cert_raw), cert_raw_len); + if (x509 == NULL) { + _ERR("d2i_X509 failed"); + free(cert_raw); + return NULL; + } + + int der_len = i2d_X509_PUBKEY(X509_get_X509_PUBKEY(x509), NULL); + if (der_len <= 0) { + _ERR("i2d_X509_PUBKEY failed"); + free(cert_raw); + return NULL; + } + + unsigned char* der_pubkey = NULL; + + unsigned char* der_pubkey_temp = NULL; + + int hashed_len = 0; + + der_pubkey_temp = der_pubkey = (unsigned char*)OPENSSL_malloc(der_len); + + i2d_X509_PUBKEY(X509_get_X509_PUBKEY(x509), (unsigned char **)&der_pubkey_temp); + + ret = EVP_Digest(der_pubkey, der_len, pubkey_der_digest, (unsigned int*)&hashed_len, EVP_sha256(), NULL); + + if (ret != 1) { + _ERR("EVP_Digest failed"); + OPENSSL_free(der_pubkey); + + return NULL; + } + + char *pub_key = __b64_encode(pubkey_der_digest, (int)hashed_len); + + OPENSSL_free(der_pubkey); + + return pub_key; +} + +int +AsmCrypto::onPkgList(pkgmgrinfo_pkginfo_h handle, void *user_data) +{ + certHandle *certInfo = (certHandle*)user_data; + RET_IF_FAIL(certInfo != NULL, 0); + + char *b64_hash_pubkey = NULL; + char *pkgid = NULL; + b64_hash_pubkey = certInfo->b64_hash_pubKey; + + int ret = pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid); + if (ret != PMINFO_R_OK) { + + _ERR("pkgmgrinfo_pkginfo_get_pkgid failed [%d]", ret); + pkgmgrinfo_pkginfo_destroy_pkginfo(handle); + return 0; + } + + _INFO("pkgmgrinfo_pkginfo_get_pkgid success"); + + pkgmgrinfo_certinfo_h cert_handle = NULL; + const char *author_cert = NULL; + ret = pkgmgrinfo_pkginfo_create_certinfo(&cert_handle); + if (ret != PMINFO_R_OK) { + _ERR(""); + pkgmgrinfo_pkginfo_destroy_pkginfo(handle); + return 0; + } + + _INFO("pkgmgrinfo_pkginfo_create_certinfo success"); + + /*TODO implement getUid function*/ + ret = pkgmgrinfo_pkginfo_load_certinfo(pkgid, cert_handle, uid); + + + if (ret != PMINFO_R_OK) { + _ERR(""); + pkgmgrinfo_pkginfo_destroy_certinfo(cert_handle); + pkgmgrinfo_pkginfo_destroy_pkginfo(handle); + return 0; + } + + _INFO("pkgmgrinfo_pkginfo_load_certinfo success"); + + ret = pkgmgrinfo_pkginfo_get_cert_value(cert_handle, PMINFO_AUTHOR_SIGNER_CERT, &author_cert); + if (ret != PMINFO_R_OK) { + pkgmgrinfo_pkginfo_destroy_certinfo(cert_handle); + _ERR(""); + pkgmgrinfo_pkginfo_destroy_pkginfo(handle); + return 0; + } + + /*_INFO("Author Root Cert=%s", author_cert);*/ + + _INFO("pkgmgrinfo_pkginfo_get_cert_value success"); + + char *author_cert_hash = NULL; + char *tz_facet_id = NULL; + int tz_facet_id_max_len = -1; + + + author_cert_hash = __get_pub_key_from_cert(author_cert); + _INFO(""); + if(author_cert_hash == NULL) + return 0; + + tz_facet_id_max_len = strlen(author_cert_hash) + 128; + tz_facet_id = (char*)(calloc(1, tz_facet_id_max_len)); + snprintf(tz_facet_id, tz_facet_id_max_len - 1, "%s:%s", "tizen:pkg-key-hash", + author_cert_hash); + _INFO(""); + + if (strcmp(b64_hash_pubkey, tz_facet_id) == 0) { + _INFO("[%s]", pkgid); + certInfo->pkgId = _SAFE_DUP(pkgid); + _INFO("return"); + + pkgmgrinfo_pkginfo_destroy_certinfo(cert_handle); + /*pkgmgrinfo_pkginfo_destroy_pkginfo(handle);*/ + + return -1; + } else { + return 0; + } + + _INFO("Before return"); + + pkgmgrinfo_pkginfo_destroy_certinfo(cert_handle); + /*pkgmgrinfo_pkginfo_destroy_pkginfo(handle);*/ + _INFO(""); +} + +char* +AsmCrypto::getAppId(char *appIdPubKey) +{ + int ret = -1; + + certHandle *certInfo = (certHandle*)calloc(1, sizeof(certHandle)); + certInfo->b64_hash_pubKey = _SAFE_DUP(appIdPubKey); + + /*TODO implement getUid function*/ + _INFO(""); + ret = pkgmgrinfo_pkginfo_get_list(AsmCrypto::onPkgList, (void *)certInfo); + if (ret != PMINFO_R_OK) { + _ERR(""); + return NULL; + } + + if(certInfo->pkgId != NULL) + _INFO("AsmCrypto::getAppId:: pkgId = [%s]", certInfo->pkgId); + else { + _INFO("AsmCrypto::getAppId:: pkgId NULL"); + /*TODO For requests coming from remote device, we can not use pkgmgr to + * find out App-Id, instead Client Device's ASM must send it explicitly + */ + char *appIdRemote = (char*)calloc(128, sizeof(char)); + snprintf(appIdRemote, 127, "%s", "Remote Device"); + return appIdRemote; + } + return certInfo->pkgId; +} + +unsigned char* +AsmCrypto::signRSA(const unsigned char *m, unsigned char *pri_key) +{ + _BEGIN; + + BIO *bio = NULL; + RSA *rsa = NULL; + unsigned int sign_len = 0; + unsigned char *sign = NULL; + + //int ret = -1; + + OpenSSL_add_all_algorithms(); + bio = BIO_new_mem_buf(pri_key, -1); + if(bio == NULL) + { + _ERR("BIO_new_mem_buf failed"); + goto error; + } + + rsa = PEM_read_bio_RSAPrivateKey(bio, NULL, NULL, NULL); + if(rsa == NULL) + { + _ERR("BIO_new_mem_buf failed"); + goto error; + } +// if(len > (unsigned int)RSA_size(rsa)) +// { +// _ERR("msg is too long failed"); +// goto error; +// } + + sign = (unsigned char *)calloc(1, (1024*128)); + if(RSA_sign(NID_sha1, m, strlen((char *)m), sign, &sign_len, rsa) != 1) + { + _ERR("msg is too long failed \n"); + goto error; + } + + _END; + return sign; + +error: + if(rsa) + { + RSA_free(rsa); + rsa = NULL; + } + if(bio) + { + BIO_free(bio); + bio = NULL; + } + return NULL; +} + +unsigned char* +AsmCrypto::fidoSignWithKey(const unsigned char *msg, int msg_len, + const unsigned char *private_key, + int priv_key_len, int *sig_len) +{ + _INFO("fidoSignWithKey start"); + OpenSSL_add_all_algorithms(); + + _INFO("FIDO MGF1 PSS padding:"); + + BIO *bio = NULL; + RSA *rsa = NULL; + + _INFO(""); + bio = BIO_new_mem_buf((unsigned char *)private_key, priv_key_len); + if (bio == NULL) { + _ERR("BIO_new_mem_buf failed"); + return NULL; + } + + _INFO(""); + rsa = PEM_read_bio_RSAPrivateKey(bio, NULL, NULL, NULL); + if(rsa == NULL) { + _ERR("BIO_new_mem_buf failed"); + return NULL; + } + + _INFO(""); + + EVP_PKEY *pkey = EVP_PKEY_new(); + + _INFO(""); + int ret = EVP_PKEY_set1_RSA(pkey, rsa); + _INFO("EVP_PKEY_set1_RSA = [%d]", ret); + if (ret == 0) { + _ERR("EVP_PKEY_set1_RSA failed"); + return NULL; + } + + + + EVP_MD_CTX *mdctx = NULL; + + mdctx = EVP_MD_CTX_create(); + if (mdctx == NULL) { + _ERR("EVP_MD_CTX_create failed"); + + return NULL; + } + + EVP_PKEY_CTX *pctx = NULL; + ret = EVP_DigestSignInit(mdctx, &pctx, EVP_sha256(), NULL, pkey); + _INFO("EVP_DigestSignInit=[%d]", ret); + + ret = EVP_PKEY_CTX_set_rsa_padding(pctx, RSA_PKCS1_PSS_PADDING); + _INFO("EVP_PKEY_CTX_set_rsa_padding=[%d]", ret); + EVP_PKEY_CTX_set_rsa_mgf1_md(pctx, EVP_sha256()); + EVP_PKEY_CTX_set_rsa_pss_saltlen(pctx, 32); + + EVP_DigestSignUpdate(mdctx, msg, msg_len); + + size_t sig_len_loc = 0; + EVP_DigestSignFinal(mdctx, NULL, &sig_len_loc); + unsigned char *sig = (unsigned char *)OPENSSL_malloc(sizeof(unsigned char) * (sig_len_loc)); + EVP_DigestSignFinal(mdctx, sig, &sig_len_loc); + + *sig_len = sig_len_loc; + return sig; + +} + +unsigned char* +AsmCrypto::fidoSign(const unsigned char *msg, int msg_len, const char *private_key_file, + const char *pwd, int *sig_len) +{ + _INFO("SignWithPrivateKeyFile start [%s]", private_key_file); + OpenSSL_add_all_algorithms(); + + FILE *fp; + EVP_PKEY *pkey = NULL; + + fp = fopen(private_key_file, "r"); + if (fp == NULL) { + _ERR("Failed to open private key file"); + return NULL; + } + + pkey = PEM_read_PrivateKey(fp, &pkey, NULL, (void *)pwd); + + fclose(fp); + + if (pkey == NULL) { + return NULL; + } + + //RSA *pRsaKey = EVP_PKEY_get1_RSA(pkey); + + _INFO("FIDO MGF1 PSS padding:"); + + EVP_MD_CTX *mdctx = NULL; + + mdctx = EVP_MD_CTX_create(); + if (mdctx == NULL) { + _ERR("EVP_MD_CTX_create failed"); + + return NULL; + } + + EVP_PKEY_CTX *pctx = NULL; + int ret = EVP_DigestSignInit(mdctx, &pctx, EVP_sha256(), NULL, pkey); + _INFO("EVP_DigestSignInit=[%d]", ret); + + ret = EVP_PKEY_CTX_set_rsa_padding(pctx, RSA_PKCS1_PSS_PADDING); + _INFO("EVP_PKEY_CTX_set_rsa_padding=[%d]", ret); + EVP_PKEY_CTX_set_rsa_mgf1_md(pctx, EVP_sha256()); + EVP_PKEY_CTX_set_rsa_pss_saltlen(pctx, 32); + + EVP_DigestSignUpdate(mdctx, msg, msg_len); + + size_t sig_len_loc = 0; + EVP_DigestSignFinal(mdctx, NULL, &sig_len_loc); + unsigned char *sig = (unsigned char *)OPENSSL_malloc(sizeof(unsigned char) * (sig_len_loc)); + EVP_DigestSignFinal(mdctx, sig, &sig_len_loc); + + *sig_len = sig_len_loc; + return sig; +} diff --git a/common/datatypes/auth/AuthnrTypes.h b/common/datatypes/auth/AuthnrTypes.h new file mode 100644 index 0000000..887a477 --- /dev/null +++ b/common/datatypes/auth/AuthnrTypes.h @@ -0,0 +1,403 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __AUTHNR_TYPES_H__ +#define __AUTHNR_TYPES_H__ + +#include +#include +#include +#include +#include + +#define AUTH_TYPE_HAS_SETTINGS 0x0010 + +typedef enum +{ + UAF_CMD_STATUS_OK = 0x00, + UAF_CMD_STATUS_ERR_UNKNOWN = 0x01, + UAF_CMD_STATUS_ACCESS_DENIED = 0x02, + UAF_CMD_STATUS_USER_NOT_ENROLLED = 0x03, + UAF_CMD_STATUS_CANNOT_RENDER_TRANSACTION_CONTENT = 0x04, + UAF_CMD_STATUS_USER_CANCELLED = 0x05, + UAF_CMD_STATUS_CMD_NOT_SUPPORTED = 0x06, + UAF_CMD_STATUS_ATTESTATION_NOT_SUPPORTED = 0x07 +}UAF_AUTHNR_STATUS_CODE; + +typedef enum { + TLV_ASSRT_TYPE_REG, + TLV_ASSRT_TYPE_AUTH +} tlv_assertion_type_e; + +/** Authenticator algorithms */ +typedef enum +{ + UAF_ALG_SIGN_SECP256R1_ECDSA_SHA256_RAW = 0x01, + UAF_ALG_SIGN_SECP256R1_ECDSA_SHA256_DER = 0x02, + UAF_ALG_SIGN_RSASSA_PSS_SHA256_RAW = 0x03, + UAF_ALG_SIGN_RSASSA_PSS_SHA256_DER = 0x04, + UAF_ALG_SIGN_SECP256K1_ECDSA_SHA256_RAW = 0x05, + UAF_ALG_SIGN_SECP256K1_ECDSA_SHA256_DER = 0x06 +}AUTHENTICATOR_ALGORITHM; + +/** Public key representation format */ +typedef enum +{ + UAF_ALG_KEY_ECC_X962_RAW = 0x100, + UAF_ALG_KEY_ECC_X962_DER = 0x101, + UAF_ALG_KEY_RSA_2048_PSS_RAW = 0x102, + UAF_ALG_KEY_RSA_2048_PSS_DER = 0x103, +}PUBLIC_KEY_FORMAT; + +typedef enum +{ + AUTHNR_2ND_FACTOR = 0x0001, + AUTHNR_ROAMING = 0x0002, + AUTHNR_STORE_KEYHANDLES_INSIDE = 0x0004, + AUTHNR_HAS_BUILTIN_ENROLL_VERIFY_UI = 0x0008, + AUTHNR_HAS_BUILTIN_SETTINGS_UI = 0x0010, + AUTHNR_REQUIRE_TAG_APPID = 0x0020, + AUTHNR_AT_LEAST_ONE_USER_ENROLLED = 0x0040 +}AUTHENTICATOR_TYPE; + +typedef enum +{ + USER_VERIFY_PRESENCE = 0x01, + USER_VERIFY_FINGERPRINT = 0x02, + USER_VERIFY_PASSCODE = 0x04, + USER_VERIFY_VOICEPRINT = 0x08, + USER_VERIFY_FACEPRINT = 0x10, + USER_VERIFY_LOCATION = 0x20, + USER_VERIFY_EYEPRINT = 0x40, + USER_VERIFY_PATTERN = 0x80, + USER_VERIFY_HANDPRINT = 0x100, + USER_VERIFY_NONE = 0x200, + USER_VERIFY_ALL = 0x400 +}USER_VERIFICATION_METHOD; + +typedef enum +{ + KEY_PROTECTION_SOFTWARE = 0x01, + KEY_PROTECTION_HARDWARE = 0x02, + KEY_PROTECTION_TEE = 0x04, + KEY_PROTECTION_SECURE_ELEMENT = 0x08, + KEY_PROTECTION_REMOTE_HANDLE = 0x10 +}KEY_PROTECTION_TYPE; + +/** Matcher protection types */ +typedef enum +{ + MATCHER_PROTECTION_SOFTWARE = 0x01, + MATCHER_PROTECTION_TEE = 0x02, + MATCHER_PROTECTION_ON_CHIP = 0x04 +}MATCHER_PROTECTION_TYPE; + +typedef enum +{ + TRANSACTION_CONFIRMATION_DISPLAY_ANY = 0x01, + TRANSACTION_CONFIRMATION_DISPLAY_PRIVILEGED_SOFTWARE = 0x02, + TRANSACTION_CONFIRMATION_DISPLAY_TEE = 0x04, + TRANSACTION_CONFIRMATION_DISPLAY_HARDWARE = 0x08, + TRANSACTION_CONFIRMATION_DISPLAY_REMOTE = 0x10 +}TRANSACTION_CONFIRMATION_DISPLAY_TYPE; + +typedef enum { + ATTACHMENT_HINT_INTERNAL = 0x01, + ATTACHMENT_HINT_EXTERNAL = 0x02, + ATTACHMENT_HINT_WIRED = 0x04, + ATTACHMENT_HINT_WIRELESS = 0x08, + ATTACHMENT_HINT_NFC = 0x10, + ATTACHMENT_HINT_BLUETOOTH = 0x20, + ATTACHMENT_HINT_NETWORK = 0x40, + ATTACHMENT_HINT_READY = 0x80, + ATTACHMENT_HINT_WIFI_DIRECT = 0x100 +} attachment_hint_e; + + +typedef struct _Buffer { + unsigned int len; + uint8_t *data; +} Buffer; + +/*Plugin symbol handlers*/ +typedef int (*plugin_init)(void);/*fido_auth_plugin_init*/ +typedef bool (*plugin_is_connected)(void);/*fido_auth_plugin_is_connected*/ +typedef attachment_hint_e (*plugin_get_attachment_hint)(void);/*fido_auth_plugin_get_attachment_hint*/ +typedef char* (*plugin_get_title)(void);/*fido_auth_plugin_get_title*/ +typedef char* (*plugin_get_description)(void);/*fido_auth_plugin_get_description*/ +typedef int (*plugin_de_init)(void);/*fido_auth_plugin_de_init*/ + +typedef struct _plugin_conn_handle_s { + plugin_init init; + plugin_is_connected is_connected; + plugin_get_attachment_hint attach_hint; + plugin_get_title title; + plugin_get_description description; + plugin_de_init de_init; +} plugin_conn_handle_s; + + +typedef int (*plugin_get_assertion_scheme)(char **scheme);/*fido_auth_plugin_get_assertion_scheme*/ +typedef Buffer* (*plugin_encode_assertion)(int tag, const void *data);/*fido_auth_plugin_encode_assertion*/ +typedef void* (*plugin_decode_assertion)(unsigned char *assrt);/*fido_auth_plugin_decode_assertion*/ + +typedef struct _plugin_assrt_handle_s { + plugin_get_assertion_scheme get_scheme; + plugin_encode_assertion encode; + plugin_decode_assertion decode; +} plugin_assrt_handle_s; + + +typedef int (*plugin_fido_command_process)(unsigned char *assert_req, + unsigned char **assrt_resp);/*fido_auth_plugin_command_process*/ + +typedef struct _plugin_process_handle_s { + plugin_fido_command_process process; +} plugin_process_handle_s; + + +typedef int (*plugin_is_uv_required)(void);/*fido_auth_plugin_is_uv_required*/ +typedef int (*plugin_is_enrolled)(const char *args);/*fido_auth_plugin_is_enrolled*/ +typedef int (*plugin_enroll)(const char *args);/*fido_auth_plugin_enroll*/ +typedef int (*plugin_verify)(const char *opt, const char *fch, char **verif_token);/*fido_auth_plugin_verify*/ + +typedef struct _plugin_user_op_handle_s { + plugin_is_uv_required is_uv_reqd; + plugin_is_enrolled is_enrolled; + plugin_enroll enroll; + plugin_verify verify; +} plugin_user_op_handle_s; + + +typedef int (*plugin_hash)(const char *ip, char **op);/*fido_auth_plugin_hash*/ + +typedef struct _plugin_hash_handle_s { + plugin_hash hash; +} plugin_hash_handle_s; + + +typedef struct _transaction_s { + char *tr;/*TODO*/ +} transaction_s; + +typedef int (*plugin_confirm_account)(GList *acc_list, char **selected_acc);/*fido_auth_plugin_confirm_account*/ +typedef int (*plugin_confirm_tc)(const transaction_s *tr);/*fido_auth_plugin_confirm_tc*/ + +typedef struct _plugin_ui_op_handle_s { + plugin_confirm_account confirm_account; + plugin_confirm_tc confirm_tc; +} plugin_ui_op_handle_s; + + + +typedef struct _auth_plugin_handle_s { + plugin_conn_handle_s *conn; + plugin_assrt_handle_s *assrt; + plugin_process_handle_s *process; + plugin_user_op_handle_s *user; + plugin_hash_handle_s *hash; + plugin_ui_op_handle_s *ui; + int id; +} auth_plugin_handle_s; + +/** + * https://fidoalliance.org/specs/fido-uaf-v1.0-ps-20141208/fido-uaf-authnr-cmds-v1.0-ps-20141208.html#getinfo-command + */ +typedef struct _GetInfoReq { + int tag; +} GetInfoReq; + +typedef struct _GetAuthInfoResp { + int statusCode; + int apiVersion; + GList *authList;/*List of AuthenticatorInfo */ + /*Below members are not returned by the GetInfo authenticator commands, they are filled later*/ + attachment_hint_e attach_hint; + char *title; + char *description; + char *icon; + +} GetAuthInfoResp; + +/* + * https://fidoalliance.org/specs/fido-uaf-v1.0-ps-20141208/fido-uaf-authnr-cmds-v1.0-ps-20141208.html#register-command + */ +typedef struct _RegisterReq { + int authIdx; + char *appId; + Buffer *fch; + char *userName; + int attType; + Buffer *khAccessToken; + char *userVToken; +} RegisterReq; + +/* + * https://fidoalliance.org/specs/fido-uaf-v1.0-ps-20141208/fido-uaf-authnr-cmds-v1.0-ps-20141208.html#command-structure-2 + */ +typedef struct _AuthenticateReq { + + int authIdx; + char *appId; + Buffer *fch; + char *tc; + Buffer *khATok; + char *userVToken; + GList *khHList;/*List of char* */ + +} AuthenticateReq; + +/* + * https://fidoalliance.org/specs/fido-uaf-v1.0-ps-20141208/fido-uaf-authnr-cmds-v1.0-ps-20141208.html#command-structure-3 + */ +typedef struct _DeregReq { + int authIdx; + char *appId; + char *keyId; + Buffer *khATok; +} DeregReq; + +typedef struct _AssertionInfo { + int authVersion; + int authMode; + int signatureAlgAndEncoding; + int publicKeyAlgAndEncoding; +} AssertionInfo; + +typedef struct _Counters { + int regCounter; + int signCounter; +} Counters; + +typedef struct _Krd { + char *aaid; + AssertionInfo *assrtInfo; + Buffer *fch; + Buffer *keyId; + Counters *counter; + Buffer *pubKey; +} Krd; + +typedef struct _AttestationBasicFull { + Buffer *sig; + Buffer *cert; +} AttestationBasicFull; + +typedef struct _AttestationBasicSurrogate { + Buffer *sig; +} AttestationBasicSurrogate; + +typedef struct _RegAssertion { + Krd *krd; + /*Only one of them can be valid, other must be set null*/ + AttestationBasicFull *attFull; + AttestationBasicSurrogate *attSur; +} RegAssertion; + +typedef struct _RegisterResp { + int statusCode; + RegAssertion *regAssertion; + Buffer *kh; +} RegisterResp; + +typedef struct _UserNameKeyHandle { + char *userName; + Buffer *kh; +} UserNameKeyHandle; + +typedef struct _SigData { + char *aaid; + AssertionInfo *assrtInfo; + Buffer *authNonce; + Buffer *fch; + Buffer *tcHash; + Buffer *keyId; + Counters *counter; +} SigData; + +typedef struct __AuthAssertion { + SigData *sigData; + Buffer *sig; +} AuthAssertion; + +typedef struct _AuthenticateResp { + int statusCode; + GList *uKhList; /*List of UserNameKeyHandle*/ + AuthAssertion *authAssertion; +} AuthenticateResp; + +typedef struct _DeregResp { + int statusCode; +} DeregResp; + + +typedef struct _AuthnrMetaData { + + int authenticatorType; + int maxKeyHandles; + int userVerification; + int keyProtection; + int matcherProtection; + int transactionConfirmationDisplay; + int authenticationAlg; +} AuthenticatorMetaData; + +/* + * https://fidoalliance.org/specs/fido-uaf-v1.0-ps-20141208/fido-uaf-asm-api-v1.0-ps-20141208.html#dictionary-authenticatorinfo-members + */ +typedef struct __DisplayTc { + + int width; + int height; + int bitDepth; + int colorType; + int compression; + int filter; + int interlace; + char *plte; +} DisplayTc; + +typedef struct _AuthnrInfo { + char *__devId; + int __authenticatorIndex; + char *__aaid; + bool __isSecondFactorOnly; + bool __isRoamingAuthenticator; + bool __isUserEnrolled; + AuthenticatorMetaData *__meta; + char *__tcDispConType; + GList *__tcDisplayPNGCharacteristics;/*DisplayTc list*/ + char *__assertionScheme; + GList *__attestationTypes;/*int list*/ + GList *__extList;/*string list*/ +} AuthenticatorInfo; + +typedef enum { + UAF_ASM_STATUS_OK = 0x00, + UAF_ASM_STATUS_ERROR = 0x01, + UAF_ASM_STATUS_ACCESS_DENIED = 0x02, + UAF_ASM_STATUS_USER_CANCELLED = 0x03 +} uaf_asm_status_e; + +typedef enum { + AUTH_TYPE_BOUND, + AUTH_TYPE_ROAMING, + AUTH_TYPE_ALL +} auth_type_e; + +#endif /*__AUTHNR_TYPES_H__*/ + diff --git a/common/datatypes/inc/AsmAuthRequest.h b/common/datatypes/inc/AsmAuthRequest.h new file mode 100644 index 0000000..03456e9 --- /dev/null +++ b/common/datatypes/inc/AsmAuthRequest.h @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __ASM_AUTH_REQ_H__ +#define __ASM_AUTH_REQ_H__ + +#include +#include + +class DisplayChar; + +class Transaction { + +public: + std::string getTransContent(void); + +public: + std::string __contentType; + std::string __content; + DisplayChar *__display; +}; + +/* + * https://fidoalliance.org/specs/fido-uaf-v1.0-ps-20141208/fido-uaf-asm-api-v1.0-ps-20141208.html#dictionary-authenticatein-members + */ +class AsmAuthRequest { + +public: + ~AsmAuthRequest(void); + + std::string getAppId(void); + std::vector getKeyIds(void); + std::vector getTCs(void); + std::string getFCH(void); + +private: + AsmAuthRequest(void); + + std::string __appID; + std::vector __keyIdList; + std::string __fc; + std::vector __trList; + + friend class JsonUtil; +}; + +#endif //__ASM_AUTH_REQ_H__ diff --git a/common/datatypes/inc/AsmAuthResponse.h b/common/datatypes/inc/AsmAuthResponse.h new file mode 100644 index 0000000..ee03bc3 --- /dev/null +++ b/common/datatypes/inc/AsmAuthResponse.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __ASM_AUTH_RESP_H__ +#define __ASM_AUTH_RESP_H__ + +#include +#include +#include "AuthenticateState.h" + +/* + * https://fidoalliance.org/specs/fido-uaf-v1.0-ps-20141208/fido-uaf-asm-api-v1.0-ps-20141208.html#dictionary-authenticateout-members + */ +class AsmAuthResponse { + +public: + ~AsmAuthResponse(void); + + std::string getAssertion(void); + std::string getAssertionScheme(void); + +private: + AsmAuthResponse(void); + +private: + std::string __assertion; + std::string __assertionScheme; + + friend class AuthenticateState; + +}; + +#endif //__ASM_AUTH_RESP_H__ diff --git a/common/datatypes/inc/AsmDeregRequest.h b/common/datatypes/inc/AsmDeregRequest.h new file mode 100644 index 0000000..5587f78 --- /dev/null +++ b/common/datatypes/inc/AsmDeregRequest.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __ASM_DEREG_REQ_H__ +#define __ASM_DEREG_REQ_H__ + +#include +#include + +/* + * https://fidoalliance.org/specs/fido-uaf-v1.0-ps-20141208/fido-uaf-asm-api-v1.0-ps-20141208.html#dictionary-deregisterin-members + */ +class AsmDeregRequest { + +public: + ~AsmDeregRequest(void); + + std::string getAppId(void); + std::string getKeyId(void); + +private: + AsmDeregRequest(void); + + std::string __appId; + std::string __keyId; + + friend class JsonUtil; +}; + +#endif //__ASM_DEREG_REQ_H__ diff --git a/common/datatypes/inc/AsmDeregResponse.h b/common/datatypes/inc/AsmDeregResponse.h new file mode 100644 index 0000000..803288f --- /dev/null +++ b/common/datatypes/inc/AsmDeregResponse.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __ASM_DEREG_RESP_H__ +#define __ASM_DEREG_RESP_H__ + +#include +#include + +class AsmDeregResponse { + +public: + ~AsmDeregResponse(void); + +private: + AsmDeregResponse(void); + +}; + +#endif //__ASM_DEREG_RESP_H__ diff --git a/common/datatypes/inc/AsmGetInfoRequest.h b/common/datatypes/inc/AsmGetInfoRequest.h new file mode 100644 index 0000000..d0b4063 --- /dev/null +++ b/common/datatypes/inc/AsmGetInfoRequest.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef ASMGETINFOREQUEST_H +#define ASMGETINFOREQUEST_H + +class AsmGetInfoRequest { + +public: + ~AsmGetInfoRequest(void); + +private: + AsmGetInfoRequest(void); +}; + +#endif // ASMGETINFOREQUEST_H diff --git a/common/datatypes/inc/AsmGetRegsRequest.h b/common/datatypes/inc/AsmGetRegsRequest.h new file mode 100644 index 0000000..aba6a4f --- /dev/null +++ b/common/datatypes/inc/AsmGetRegsRequest.h @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ diff --git a/common/datatypes/inc/AsmGetRegsResponse.h b/common/datatypes/inc/AsmGetRegsResponse.h new file mode 100644 index 0000000..29bcf3a --- /dev/null +++ b/common/datatypes/inc/AsmGetRegsResponse.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __ASM_GET_REGS_RESP_H__ +#define __ASM_GET_REGS_RESP_H__ + +#include +#include + +class GetRegsState; + +class AppRegistration { + +public: + ~AppRegistration(void); + std::string getAppId(void); + std::vector getKeyIdList(void); + + +private: + AppRegistration(void); + +private: + std::string __appId; + std::vector __keyIdList; + + friend class GetRegsState; +}; + + +/* + * https://fidoalliance.org/specs/fido-uaf-v1.0-ps-20141208/fido-uaf-asm-api-v1.0-ps-20141208.html#dictionary-getregistrationsout-members + */ +class AsmGetRegsResponse { + +public: + ~AsmGetRegsResponse(void); + + std::vector getAppRegList(void); + +private: + AsmGetRegsResponse(void); + +private: + std::vector __appRegList; + friend class GetRegsState; + +}; + +#endif //__ASM_GET_REGS_RESP_H__ diff --git a/common/datatypes/inc/AsmOpenSettingsRequest.h b/common/datatypes/inc/AsmOpenSettingsRequest.h new file mode 100644 index 0000000..aba6a4f --- /dev/null +++ b/common/datatypes/inc/AsmOpenSettingsRequest.h @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ diff --git a/common/datatypes/inc/AsmOpenSettingsResponse.h b/common/datatypes/inc/AsmOpenSettingsResponse.h new file mode 100644 index 0000000..aba6a4f --- /dev/null +++ b/common/datatypes/inc/AsmOpenSettingsResponse.h @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ diff --git a/common/datatypes/inc/AsmRegRequest.h b/common/datatypes/inc/AsmRegRequest.h new file mode 100644 index 0000000..69374a1 --- /dev/null +++ b/common/datatypes/inc/AsmRegRequest.h @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __ASM_REG_REQ_H__ +#define __ASM_REG_REQ_H__ + +#include +#include +#include "JsonUtil.h" + +/* + * https://fidoalliance.org/specs/fido-uaf-v1.0-ps-20141208/fido-uaf-asm-api-v1.0-ps-20141208.html#dictionary-registerin-members + */ +class AsmRegRequest { + +public: + ~AsmRegRequest(void); + + std::string getServerChallenge(void); + std::string getAppId(void); + std::string getUserName(void); + std::string getFinalChallenge(void); + int getAttestationType(void); + +private: + AsmRegRequest(void); + +private: + std::string __sCh; + std::string __appID; + std::string __userName; + std::string __fc; + int __attType; + + friend class JsonUtil; +}; + +#endif // __ASM_REG_REQ_H__ diff --git a/common/datatypes/inc/AsmRegResponse.h b/common/datatypes/inc/AsmRegResponse.h new file mode 100644 index 0000000..8d58f88 --- /dev/null +++ b/common/datatypes/inc/AsmRegResponse.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __ASM_REG_RESP_H__ +#define __ASM_REG_RESP_H__ + +#include +#include + +/* + * https://fidoalliance.org/specs/fido-uaf-v1.0-ps-20141208/fido-uaf-asm-api-v1.0-ps-20141208.html#dictionary-registerout-members + */ +class AsmRegResponse { + +public: + ~AsmRegResponse(void); + + std::string getAssertion(void); + std::string getAssertionScheme(void); + +private: + AsmRegResponse(void); + +private: + std::string __assertion; + std::string __assertionScheme; + + friend class RegisterState; + +}; + +#endif //__ASM_REG_RESP_H__ diff --git a/common/datatypes/inc/AsmRequest.h b/common/datatypes/inc/AsmRequest.h new file mode 100644 index 0000000..61072ee --- /dev/null +++ b/common/datatypes/inc/AsmRequest.h @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __ASM_REQ_H__ +#define __ASM_REQ_H__ + +#include +#include + +class JsonUtil; + +/** + * https://fidoalliance.org/specs/fido-uaf-v1.0-ps-20141208/fido-uaf-protocol-v1.0-ps-20141208.html#version-interface + */ +class AsmVersion { + +public: + ~AsmVersion(void); + + int getMajor(void); + int getMinor(void); + +private: + AsmVersion(void); + int __major; + int __minor; + + friend class JsonUtil; +}; + +/* + * https://fidoalliance.org/specs/fido-uaf-v1.0-ps-20141208/fido-uaf-protocol-v1.0-ps-20141208.html#dictionary-extension-members + */ +class Extension { + +public: + ~Extension(void); + +private: + Extension(void); + +private: + std::string __id; + std::string __data; + bool __failIfUnknown; +}; + +/** +* https://fidoalliance.org/specs/fido-uaf-v1.0-ps-20141208/fido-uaf-asm-api-v1.0-ps-20141208.html#dictionary-asmrequest-members +*/ +class AsmRequest { + +public: + ~AsmRequest(void); + + AsmVersion* getAsmVersion(void); + std::string getRequesttype(void); + int getAuthIndex(void); + void* getArgs(void); + /*Additional param to make it easy to create asm json response*/ + void setCallerId(const std::string& callerId); + std::string getCallerId(void); + + void *getCustomRequest(void); + +private: + AsmRequest(void); + +// int setAsmVersion(const AsmVersion& ver); +// int setAuthIndex(int idx); +// int setArgs(const std::string& reqType, void *args); +// int addExtension(const Extension& ext); + +private: + std::string __requestType; + AsmVersion *__asmVersion; + int __authenticatorIndex; + void *__args; + std::vector extList; + std::string __callerId; + + /*Auth Req: RegisterReq, AuthenticateReq, SignReq*/ + void *__customRequest; + + friend class JsonUtil; + friend class RoamingUtil; +}; + +#endif diff --git a/common/datatypes/inc/AsmResponse.h b/common/datatypes/inc/AsmResponse.h new file mode 100644 index 0000000..55cc379 --- /dev/null +++ b/common/datatypes/inc/AsmResponse.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __ASM_RESP_H__ +#define __ASM_RESP_H__ + +#include +#include + +class Extension; +class RegisterState; +class AuthenticateState; +class GetRegsState; + +/* + * https://fidoalliance.org/specs/fido-uaf-v1.0-ps-20141208/fido-uaf-asm-api-v1.0-ps-20141208.html#dictionary-asmresponse-members + */ +class AsmResponse { + +public: + ~AsmResponse(void); + + int getStatusCode(void); + void* getResponseData(void); + std::vector* getExtensionList(void); + +private: + AsmResponse(void); + +private: + int __statusCode; + void *__respData; + std::vector *__extList; + + friend class RegisterState; + friend class AuthenticateState; + friend class GetRegsState; +}; + +#endif //__ASM_RESP_H__ diff --git a/common/datatypes/inc/GetInfoResponse.h b/common/datatypes/inc/GetInfoResponse.h new file mode 100644 index 0000000..dbecb09 --- /dev/null +++ b/common/datatypes/inc/GetInfoResponse.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __ASM_GET_INFO_RESP_H__ +#define __ASM_GET_INFO_RESP_H__ + +#include +#include + +#include "AuthnrTypes.h" + +/* + * https://fidoalliance.org/specs/fido-uaf-v1.0-ps-20141208/fido-uaf-asm-api-v1.0-ps-20141208.html#dictionary-getinfoout-members + */ +class GetInfoResponse { + +public: + ~GetInfoResponse(void); + + std::vector* getAuthnrList(void); + +private: + GetInfoResponse(void); + +private: + std::vector *__authList; + +}; + +#endif //__ASM_GET_INFO_RESP_H__ diff --git a/common/datatypes/src/AsmAuthRequest.cpp b/common/datatypes/src/AsmAuthRequest.cpp new file mode 100644 index 0000000..4779a14 --- /dev/null +++ b/common/datatypes/src/AsmAuthRequest.cpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "AsmAuthRequest.h" +#include + +std::string +Transaction::getTransContent(void) +{ + return __content; +} + +AsmAuthRequest::~AsmAuthRequest(void) +{ + +} + +std::string +AsmAuthRequest::getAppId(void) +{ + return __appID; +} + +std::vector +AsmAuthRequest::getKeyIds(void) +{ + return __keyIdList; +} + +std::vector +AsmAuthRequest::getTCs(void) +{ + return __trList; +} + +std::string +AsmAuthRequest::getFCH(void) +{ + return __fc; +} + +AsmAuthRequest::AsmAuthRequest(void) +{ + +} diff --git a/common/datatypes/src/AsmAuthResponse.cpp b/common/datatypes/src/AsmAuthResponse.cpp new file mode 100644 index 0000000..9313cd8 --- /dev/null +++ b/common/datatypes/src/AsmAuthResponse.cpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +#include "AsmAuthResponse.h" +#include + +AsmAuthResponse::~AsmAuthResponse(void) +{ + +} + +std::string +AsmAuthResponse::getAssertion(void) +{ + return __assertion; +} + +std::string +AsmAuthResponse::getAssertionScheme(void) +{ + return __assertionScheme; +} + +AsmAuthResponse::AsmAuthResponse(void) +{ + +} + diff --git a/common/datatypes/src/AsmDeregRequest.cpp b/common/datatypes/src/AsmDeregRequest.cpp new file mode 100644 index 0000000..8771ec7 --- /dev/null +++ b/common/datatypes/src/AsmDeregRequest.cpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "AsmDeregRequest.h" +#include + +AsmDeregRequest::~AsmDeregRequest(void) +{ + +} + +std::string +AsmDeregRequest::getAppId(void) +{ + return __appId; +} + +std::string +AsmDeregRequest::getKeyId(void) +{ + return __keyId; +} + +AsmDeregRequest::AsmDeregRequest(void) +{ + +} diff --git a/common/datatypes/src/AsmDeregResponse.cpp b/common/datatypes/src/AsmDeregResponse.cpp new file mode 100644 index 0000000..aba6a4f --- /dev/null +++ b/common/datatypes/src/AsmDeregResponse.cpp @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ diff --git a/common/datatypes/src/AsmGetRegsRequest.cpp b/common/datatypes/src/AsmGetRegsRequest.cpp new file mode 100644 index 0000000..aba6a4f --- /dev/null +++ b/common/datatypes/src/AsmGetRegsRequest.cpp @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ diff --git a/common/datatypes/src/AsmGetRegsResponse.cpp b/common/datatypes/src/AsmGetRegsResponse.cpp new file mode 100644 index 0000000..50f1330 --- /dev/null +++ b/common/datatypes/src/AsmGetRegsResponse.cpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "AsmGetRegsResponse.h" +#include "GetRegsState.h" +#include + +AppRegistration::~AppRegistration(void) +{ + +} + +std::string +AppRegistration::getAppId(void) +{ + return __appId; +} + +std::vector +AppRegistration::getKeyIdList(void) +{ + return __keyIdList; +} + + +AppRegistration::AppRegistration(void) +{ + +} + +AsmGetRegsResponse::~AsmGetRegsResponse(void) +{ + +} + +std::vector +AsmGetRegsResponse::getAppRegList(void) +{ + return __appRegList; +} + +AsmGetRegsResponse::AsmGetRegsResponse(void) +{ + +} diff --git a/common/datatypes/src/AsmOpenSettingsRequest.cpp b/common/datatypes/src/AsmOpenSettingsRequest.cpp new file mode 100644 index 0000000..aba6a4f --- /dev/null +++ b/common/datatypes/src/AsmOpenSettingsRequest.cpp @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ diff --git a/common/datatypes/src/AsmOpenSettingsResponse.cpp b/common/datatypes/src/AsmOpenSettingsResponse.cpp new file mode 100644 index 0000000..aba6a4f --- /dev/null +++ b/common/datatypes/src/AsmOpenSettingsResponse.cpp @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ diff --git a/common/datatypes/src/AsmRegRequest.cpp b/common/datatypes/src/AsmRegRequest.cpp new file mode 100644 index 0000000..1de41de --- /dev/null +++ b/common/datatypes/src/AsmRegRequest.cpp @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "AsmRegRequest.h" +#include + +AsmRegRequest::~AsmRegRequest(void) +{ + +} + +std::string +AsmRegRequest::getServerChallenge(void) +{ + return __sCh; +} + +std::string +AsmRegRequest::getAppId(void) +{ + return __appID; +} + +std::string +AsmRegRequest::getUserName(void) +{ + return __userName; +} + +std::string +AsmRegRequest::getFinalChallenge(void) +{ + return __fc; +} + +int +AsmRegRequest::getAttestationType(void) +{ + return __attType; +} + + +AsmRegRequest::AsmRegRequest(void) +{ + +} + + + diff --git a/common/datatypes/src/AsmRegResponse.cpp b/common/datatypes/src/AsmRegResponse.cpp new file mode 100644 index 0000000..9f95b55 --- /dev/null +++ b/common/datatypes/src/AsmRegResponse.cpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "AsmRegResponse.h" +#include + +AsmRegResponse::AsmRegResponse(void) +{ + +} + +AsmRegResponse::~AsmRegResponse(void) +{ + +} + +std::string +AsmRegResponse::getAssertion(void) +{ + return __assertion; +} + +std::string +AsmRegResponse::getAssertionScheme(void) +{ + return __assertionScheme; +} diff --git a/common/datatypes/src/AsmRequest.cpp b/common/datatypes/src/AsmRequest.cpp new file mode 100644 index 0000000..0047d9f --- /dev/null +++ b/common/datatypes/src/AsmRequest.cpp @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "AsmRequest.h" +#include "AsmRegRequest.h" +#include "AsmAuthRequest.h" +#include "AsmDeregRequest.h" +#include + +AsmRequest::AsmRequest(void) +{ + __requestType = -1; + __asmVersion = NULL; + __authenticatorIndex = -1; + __args = NULL; + __customRequest = NULL; +} + +AsmRequest::~AsmRequest(void) +{ + delete __asmVersion; + if (__args != NULL) { + if (__requestType == "Register") { + delete static_cast(__args); + } + if (__requestType == "Authenticate") { + delete static_cast(__args); + } + if (__requestType == "Deregister") { + delete static_cast(__args); + } + } + +} + +AsmVersion * +AsmRequest::getAsmVersion(void) +{ + return __asmVersion; +} + +std::string +AsmRequest::getRequesttype(void) +{ + return __requestType; +} + +int +AsmRequest::getAuthIndex(void) +{ + return __authenticatorIndex; +} + +void* +AsmRequest::getArgs(void) +{ + return __args; +} + +void +AsmRequest::setCallerId(const std::string& callerId) +{ + __callerId = callerId; +} + +std::string +AsmRequest::getCallerId(void) +{ + return __callerId; +} + +void* +AsmRequest::getCustomRequest(void) +{ + return __customRequest; +} + +AsmVersion::~AsmVersion(void) +{ + +} + +int +AsmVersion::getMajor(void) +{ + return __major; +} + +int +AsmVersion::getMinor(void) +{ + return __minor; +} + +AsmVersion::AsmVersion(void) +{ + +} diff --git a/common/datatypes/src/AsmResponse.cpp b/common/datatypes/src/AsmResponse.cpp new file mode 100644 index 0000000..6e221c3 --- /dev/null +++ b/common/datatypes/src/AsmResponse.cpp @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "AsmResponse.h" +#include "RegisterState.h" +#include "AuthenticateState.h" +#include "GetRegsState.h" +#include +#include "RegisterState.h" +#include "AuthenticateState.h" +#include "GetRegsState.h" + +AsmResponse::AsmResponse(void) +{ + +} + +AsmResponse::~AsmResponse(void) +{ + +} + +int +AsmResponse::getStatusCode(void) +{ + return __statusCode; +} + +void* +AsmResponse::getResponseData(void) +{ + return __respData; +} + +std::vector* +AsmResponse::getExtensionList(void) +{ + return __extList; +} diff --git a/common/datatypes/src/AuthnrTypes.cpp b/common/datatypes/src/AuthnrTypes.cpp new file mode 100644 index 0000000..aba6a4f --- /dev/null +++ b/common/datatypes/src/AuthnrTypes.cpp @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ diff --git a/common/dbus_interfaces/CMakeLists.txt b/common/dbus_interfaces/CMakeLists.txt new file mode 100644 index 0000000..3920e77 --- /dev/null +++ b/common/dbus_interfaces/CMakeLists.txt @@ -0,0 +1,39 @@ + +SET(FIDO_ASM_DBUS fido-asm-dbus) + +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common) + +INCLUDE(FindPkgConfig) +pkg_check_modules(FIDO_ASM_DBUS_PKGS REQUIRED + dlog + glib-2.0 + gio-unix-2.0 + gobject-2.0 + capi-base-common + json-glib-1.0 + openssl +) + +FOREACH(flag ${FIDO_ASM_DBUS_PKGS_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -Wall -Werror") +SET(CMAKE_LDFLAGS "-Wl,-zdefs") + +ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") +ADD_DEFINITIONS("-DFACTORYFS=\"$ENV{FACTORYFS}\"") +ADD_DEFINITIONS("-DSLP_DEBUG") + +ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_SOURCE_DIR}/common/fido-client-ipc-stub.c ${CMAKE_SOURCE_DIR}/common/fido-client-ipc-stub.h +WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/common/ +COMMAND gdbus-codegen --interface-prefix org.tizen. --generate-c-code fido-client-ipc-stub ${CMAKE_SOURCE_DIR}/common/dbus_interfaces/fido-asm.xml +COMMENT "Generating FIDO GDBus stubs........................") + +ADD_LIBRARY(${FIDO_ASM_DBUS} STATIC ${CMAKE_SOURCE_DIR}/common/fido-client-ipc-stub.c) +ADD_DEPENDENCIES(${FIDO_ASM_DBUS} ${CMAKE_SOURCE_DIR}/common/fido-client-ipc-stub.h.h) +ADD_DEPENDENCIES(${FIDO_ASM_DBUS} ${CMAKE_SOURCE_DIR}/common/fido-client-ipc-stub.h.c) + + +TARGET_LINK_LIBRARIES(${FIDO_ASM_DBUS} ${FIDO_COMMON_PKGS_LDFLAGS}) diff --git a/common/dbus_interfaces/fido-asm.xml b/common/dbus_interfaces/fido-asm.xml new file mode 100644 index 0000000..c9666b0 --- /dev/null +++ b/common/dbus_interfaces/fido-asm.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/common/fido-ra-acl-server.dat b/common/fido-ra-acl-server.dat new file mode 100644 index 0000000000000000000000000000000000000000..80088b28a76684ec472eed3cb48269f909e738e9 GIT binary patch literal 1017 zcmb7C%TB{E5DclrH*n*^sS*mGQ*MdZ8|o0p#_N>!SOokB4++j3xbjnQ20Lj}0*=)9 z;FUbHGqWpyKnCS`{Pvi;D#$+Y43O@gE~#b(f~{-8v#Bshsx}U}f97+8`8-hq688!Q z%aj?LGLfe(mNyt5M05Ztwt7jZPj{$YX`~=WHXQ9DVFlQ;C^Q-=h=i)*!NG3Z@U09X zBwQ_JPo^bQjgKd2vY8Dq%8uby8o+lJ4(yNnE9v22(wl!lKvj9b=&B3Cbta6cE_$TB z%+{^hZl(pAA(i3fZd9`AQ0vigVbpbn#{akF$=T+d`ugYEV%Y3|wtC@$l>RI@E(GBI z{S0Kxtc;kF6Gn0}Iso@SWcL2*3$3Hv7c3(num|Xe;p0P +#if !GLIB_CHECK_VERSION (2, 31, 0) +#include +#endif +#include +#include +#include +#include "IAuthStub.h" + +class IAuthStub; +class AsmResponse; + +class JsonUtil { + +public: + static AsmRequest* parseAsmRequestJson(const char *json); + + static char* composeAsmGetInfoResponse(int statusCode, + std::vector *getInfoList); + static char* composeAsmRegisterResponse(AsmResponse *regResp); + static char* composeAsmAuthenticateResponse(AsmResponse *authResp); + static char* composeAsmGetRegsResponse(AsmResponse *regResp); + + static char* composeEnrollUiRequest(const char *appId, const char *aaid); + +private: + typedef enum _ReqType { + REQ_TYPE_INVALID, + REQ_TYPE_GET_INFO, + REQ_TYPE_REG, + REQ_TYPE_AUTH, + REQ_TYPE_DE_REG, + REQ_TYPE_GET_REGS, + REQ_TYPE_OPEN_SETTINGS + } ReqType; + + static ReqType getReqType(const std::string& op); + + static void* parseAsmRequestArgReg(JsonObject *argObj); + static void* parseAsmRequestArgAuth(JsonObject *argObj); + static void* parseAsmRequestArgDeReg(JsonObject *argObj); + + static std::string getString(JsonObject *obj, const char *key); + static int getInt(JsonObject *obj, const char *key); + static void addJsonObjectAuthInfo(JsonBuilder *builder, GetAuthInfoResp *getInfoResp); + + static void addString(JsonBuilder *builder, const char *key, const char *val); + static void addInt(JsonBuilder *builder, const char *key, int val); + static void addBool(JsonBuilder *builder, const char *key, bool val); + + static JsonBuilder* initComposer(int statusCode); + static char* finishComposer(JsonBuilder *builder); + +}; + + + +#endif /* JSONUTIL_H_ */ diff --git a/common/jsonutil/src/JsonUtil.cpp b/common/jsonutil/src/JsonUtil.cpp new file mode 100644 index 0000000..4a6b6c8 --- /dev/null +++ b/common/jsonutil/src/JsonUtil.cpp @@ -0,0 +1,677 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "JsonUtil.h" +#include "AsmRequest.h" +#include "AsmHelper.h" +#include "AsmRegRequest.h" +#include "AsmAuthRequest.h" +#include "AsmDeregRequest.h" +#include "AsmResponse.h" +#include "GetInfoResponse.h" +#include "AsmRegResponse.h" +#include "AsmAuthResponse.h" +#include "AsmGetRegsResponse.h" + +#include + +#define chunk_size 100 + +static void +__print_big_string(const char *str) +{ + int len = strlen(str); + int i = 0; + for (; i < len; i+= chunk_size) + { + char sub_str[chunk_size + 2] = {0, }; + strncpy(sub_str, str + i, chunk_size); + _INFO("log : [%s]", sub_str); + } + +} + +#define GET_ROOT_NODE(json) \ + JsonParser *parser = NULL;\ + GError *parse_err = NULL;\ + JsonNode *root = NULL;\ + \ + parser = json_parser_new();\ + CATCH_IF_FAIL(parser != NULL);\ + \ + json_parser_load_from_data(parser, json, -1, &parse_err);\ + CATCH_IF_FAIL(parse_err == NULL);\ + \ + root = json_parser_get_root(parser);\ + CATCH_IF_FAIL(root != NULL); + +JsonUtil::ReqType +JsonUtil::getReqType(const std::string &op) +{ + if (op == "GetInfo") + return JsonUtil::REQ_TYPE_GET_INFO; + + if (op == "Register") + return JsonUtil::REQ_TYPE_REG; + + if (op == "Authenticate") + return JsonUtil::REQ_TYPE_AUTH; + + if (op == "Deregister") + return JsonUtil::REQ_TYPE_DE_REG; + + if (op == "GetRegistrations") + return JsonUtil::REQ_TYPE_GET_REGS; + + if (op == "OpenSettings") + return JsonUtil::REQ_TYPE_OPEN_SETTINGS; + + return JsonUtil::REQ_TYPE_INVALID; +} + +std::string +JsonUtil::getString(JsonObject *obj, const char *key) +{ + RET_IF_FAIL(obj != NULL, ""); + + const char *val = json_object_get_string_member(obj, key); + if (val != NULL) { + std::string valStr((const char *)val, strlen(val)); + return valStr; + } + + return ""; +} + +int +JsonUtil::getInt(JsonObject *obj, const char *key) +{ + RET_IF_FAIL(obj != NULL, -1); + + if (json_object_has_member(obj, key) == false) { + return -1; + } + + return json_object_get_int_member(obj, key); +} + +void* +JsonUtil::parseAsmRequestArgReg(JsonObject *argObj) +{ + RET_IF_FAIL(argObj != NULL, NULL); + + AsmRegRequest *asmRegReq = new AsmRegRequest(); + asmRegReq->__appID = getString(argObj, "appID"); + asmRegReq->__userName = getString(argObj, "username"); + asmRegReq->__fc = getString(argObj, "finalChallenge"); + asmRegReq->__attType = getInt(argObj, "attestationType"); + + return asmRegReq; +} + +void* +JsonUtil::parseAsmRequestArgAuth(JsonObject *argObj) +{ + _BEGIN; + RET_IF_FAIL(argObj != NULL, NULL); + + AsmAuthRequest *asmAuthReq = new AsmAuthRequest(); + asmAuthReq->__appID = getString(argObj, "appID"); + asmAuthReq->__fc = getString(argObj, "finalChallenge"); + + JsonArray *keyArr = json_object_get_array_member(argObj, "keyIDs"); + if (keyArr != NULL) { + int keyArrLen = json_array_get_length(keyArr); + + int i = 0; + for (; i < keyArrLen; i++) { + + const char *keyId = json_array_get_string_element(keyArr, i); + if (keyId != NULL) { + _INFO("keyId is = [%s]", keyId); + std::string keyIdStr(keyId, strlen(keyId)); + asmAuthReq->__keyIdList.push_back(keyIdStr); + } + } + } + + /*Transaction*/ + JsonArray *tcArr = json_object_get_array_member(argObj, "transaction"); + if (tcArr != NULL) { + int tcArrLen = json_array_get_length(tcArr); + + int i = 0; + for (; i < tcArrLen; i++) { + + JsonObject *tcObj = json_array_get_object_element(tcArr, i); + if (tcObj != NULL) { + + std::string conTypeStr = getString(tcObj, "contentType"); + std::string conStr = getString(tcObj, "content"); + /*TODO: Add tcDisplayPNGCharacteristics when ASM UI is capable of image display*/ + + if ((conTypeStr.empty() == false) + && (conStr.empty() == false)) { + + Transaction *tc = new Transaction(); + + tc->__contentType = conTypeStr; + tc->__content = conStr; + + asmAuthReq->__trList.push_back(tc); + _INFO(""); + } + } + } + } + + _END; + return asmAuthReq; +} + +void* +JsonUtil::parseAsmRequestArgDeReg(JsonObject *argObj) +{ + RET_IF_FAIL(argObj != NULL, NULL); + + AsmDeregRequest *asmDeRegReq = new AsmDeregRequest(); + asmDeRegReq->__appId = getString(argObj, "appID"); + asmDeRegReq->__keyId = getString(argObj, "keyID"); + + return asmDeRegReq; +} + +AsmRequest* +JsonUtil::parseAsmRequestJson(const char *json) +{ + RET_IF_FAIL(json != NULL, NULL); + + std::string reqTypeVal; + ReqType reqType = REQ_TYPE_INVALID; + JsonObject *verObj = NULL; + int major = -1; + int minor = -1; + AsmRequest *asmReq = NULL; + AsmVersion *ver = NULL; + JsonObject *argObj = NULL; + JsonObject *rootObj = NULL; + + GET_ROOT_NODE(json); + + rootObj = json_node_get_object(root); + CATCH_IF_FAIL(rootObj != NULL); + + reqTypeVal = getString(rootObj, "requestType"); + + reqType = getReqType(reqTypeVal); + CATCH_IF_FAIL(reqType != REQ_TYPE_INVALID); + + verObj = json_object_get_object_member(rootObj, "asmVersion"); + CATCH_IF_FAIL(verObj != NULL); + + major = json_object_get_int_member(verObj, "major"); + minor = json_object_get_int_member(verObj, "minor"); + + /*TODO extension*/ + + asmReq = new AsmRequest(); + asmReq->__requestType = reqTypeVal; + + ver = new AsmVersion(); + ver->__major = major; + ver->__minor = minor; + + asmReq->__asmVersion = ver; + + if (reqType == REQ_TYPE_GET_INFO) { + if (parser != NULL) + g_object_unref(parser); + + return asmReq; + } + + + asmReq->__authenticatorIndex = json_object_get_int_member(rootObj, "authenticatorIndex"); + + if(reqType == REQ_TYPE_GET_REGS) { + if (parser != NULL) + g_object_unref(parser); + + return asmReq; + } + + argObj = json_object_get_object_member(rootObj, "args"); + + switch (reqType) { + + case REQ_TYPE_REG: + asmReq->__args = parseAsmRequestArgReg(argObj); + break; + + case REQ_TYPE_AUTH: + asmReq->__args = parseAsmRequestArgAuth(argObj); + break; + + case REQ_TYPE_DE_REG: + asmReq->__args = parseAsmRequestArgDeReg(argObj); + break; + + default: + asmReq->__args = NULL; + break; + } + + if (parser != NULL) + g_object_unref(parser); + + return asmReq; + +CATCH: + if (parser != NULL) + g_object_unref(parser); + + return NULL; +} + +void +JsonUtil::addString(JsonBuilder *builder, const char *key, const char *val) +{ + if ((builder == NULL) || (key == NULL) || (val == NULL)) + return; + + json_builder_set_member_name(builder, key); + json_builder_add_string_value(builder, val); +} + +void +JsonUtil::addInt(JsonBuilder *builder, const char *key, int val) +{ + if ((builder == NULL) || (key == NULL)) + return; + + json_builder_set_member_name(builder, key); + json_builder_add_int_value(builder, val); +} + +void +JsonUtil::addBool(JsonBuilder *builder, const char *key, bool val) +{ + if ((builder == NULL) || (key == NULL)) + return; + + json_builder_set_member_name(builder, key); + json_builder_add_boolean_value(builder, val); +} + +void +JsonUtil::addJsonObjectAuthInfo(JsonBuilder *builder, GetAuthInfoResp *getInfoResp) +{ + if ((builder == NULL) || (getInfoResp == NULL)) + return; + + RET_IF_FAIL_VOID(getInfoResp != NULL); + + GList *authList = getInfoResp->authList; + if ((authList == NULL) || (g_list_length(authList) <= 0)) + return; + + GList *authListIter = g_list_first(authList); + /*Supports one authenticator per authenticator*/ + while (authListIter != NULL) { + + AuthenticatorInfo *authInfo = (AuthenticatorInfo *)(authListIter->data); + + /*AuthenticatorInfo*/ + json_builder_begin_object(builder); + + addInt(builder, "authenticatorIndex", authInfo->__authenticatorIndex); + + /*asmVersions array*/ + json_builder_set_member_name(builder, "asmVersions"); + json_builder_begin_array(builder); + + /*asmVersion object*/ + json_builder_begin_object(builder); + + json_builder_set_member_name(builder, "major"); + json_builder_add_int_value(builder, 1); + + json_builder_set_member_name(builder, "minor"); + json_builder_add_int_value(builder, 0); + + /*asmVersion object*/ + json_builder_end_object(builder); + + /*asmVersions array*/ + json_builder_end_array(builder); + + json_builder_set_member_name(builder, "isUserEnrolled"); + json_builder_add_boolean_value(builder, authInfo->__isUserEnrolled); + + + json_builder_set_member_name(builder, "hasSettings"); + if ((AUTH_TYPE_HAS_SETTINGS & authInfo->__meta->authenticatorType) != 0) + json_builder_add_boolean_value(builder, true); + else + json_builder_add_boolean_value(builder, false); + + if (authInfo->__aaid != NULL) { + addString(builder, "aaid", authInfo->__aaid); + } + + if (authInfo->__assertionScheme != NULL) { + addString(builder, "assertionScheme", authInfo->__assertionScheme); + } + + GList *attTypeList = authInfo->__attestationTypes; + if (attTypeList != NULL) { + + GList *attTypeListIter = g_list_first(attTypeList); + + if (g_list_length(attTypeListIter) > 0) { + + json_builder_set_member_name(builder, "attestationTypes"); + json_builder_begin_array(builder); + + while (attTypeListIter != NULL) { + int att = GPOINTER_TO_INT(attTypeListIter->data); + json_builder_add_int_value(builder, att); + + attTypeListIter = attTypeListIter->next; + } + /*attestationTypes*/ + json_builder_end_array(builder); + } + } + + GList *extList = authInfo->__extList; + if(extList != NULL) { + + if(g_list_length(extList) > 0) { + + json_builder_set_member_name(builder, "supportedExtensionIDs"); + json_builder_begin_array(builder); + + GList *extListIter = g_list_first(extList); + + while(extListIter != NULL) { + char *extId = (char*)extListIter->data; + json_builder_add_string_value(builder, extId); + + extListIter = extListIter->next; + } + /*supportedExtensionIDs*/ + json_builder_end_array(builder); + } + } + + addInt(builder, "authenticationAlgorithm", authInfo->__meta->authenticationAlg); + + addInt(builder, "userVerification", authInfo->__meta->userVerification); + + addInt(builder, "keyProtection", authInfo->__meta->keyProtection); + + addInt(builder, "matcherProtection", authInfo->__meta->matcherProtection); + + int attHint = getInfoResp->attach_hint; + if (attHint != -1) + addInt(builder, "attachmentHint", attHint); + + + addBool(builder, "isSecondFactorOnly", authInfo->__isSecondFactorOnly); + + addBool(builder, "isRoamingAuthenticator", authInfo->__isRoamingAuthenticator); + + addInt(builder, "tcDisplay", authInfo->__meta->transactionConfirmationDisplay); + + _INFO("JsonUtil::addJsonObjectAuthInfo:: TC CONTENT DISPLAY TYPE = [%s]", authInfo->__tcDispConType); + addString(builder, "tcDisplayContentType", authInfo->__tcDispConType); + + /*TODO tcDisplayPNGCharacteristics*/ + + addString(builder, "title", getInfoResp->title); + + addString(builder, "description", getInfoResp->description); + + addString(builder, "icon", getInfoResp->icon); + + + /*AuthenticatorInfo*/ + json_builder_end_object(builder); + + authListIter = authListIter->next; + } + + return; +} + +JsonBuilder* +JsonUtil::initComposer(int statusCode) +{ + _BEGIN; + JsonBuilder *builder = json_builder_new(); + + json_builder_begin_object(builder); + + json_builder_set_member_name(builder, "statusCode"); + json_builder_add_int_value(builder, statusCode); + + _END; + return builder; +} + +char* +JsonUtil::finishComposer(JsonBuilder *builder) +{ + JsonNode *root_builder = json_builder_get_root(builder); + + JsonGenerator *gen = json_generator_new(); + json_generator_set_root(gen, root_builder); + + json_node_free(root_builder); + g_object_unref(builder); + + gsize len = 0; + char *json = json_generator_to_data(gen, &len); + if (json != NULL) { + _INFO("compose Asm Response success"); + + if (gen != NULL) + g_object_unref(gen); + + _INFO("finishComposer = "); + __print_big_string(json); + return json; + } + + _INFO("compose Asm Response failed"); + g_object_unref(gen); + + return NULL; +} + +char* +JsonUtil::composeAsmGetInfoResponse(int statusCode, + std::vector *getInfoList) +{ + _INFO("composeAsmGetInfoResponse::start"); + + /*TODO*/ + JsonBuilder *builder = initComposer(statusCode); + + if ((getInfoList != NULL) && + (getInfoList->size() > 0)) { + + _INFO("Auth Stub List is not NULL"); + + json_builder_set_member_name(builder, "responseData"); + json_builder_begin_object(builder); + + + json_builder_set_member_name(builder, "Authenticators"); + json_builder_begin_array(builder); + + std::vector::iterator infoListIter = getInfoList->begin(); + + for (; infoListIter != getInfoList->end(); ++infoListIter) { + GetAuthInfoResp *info = *infoListIter; + addJsonObjectAuthInfo(builder, info); + } + + /*Authenticators*/ + json_builder_end_array(builder); + + /*responseData*/ + json_builder_end_object(builder); + } + + + json_builder_end_object(builder); + + _INFO("composeAsmGetInfoResponse::end"); + return finishComposer(builder); +} + +char* +JsonUtil::composeAsmRegisterResponse(AsmResponse *regResp) +{ + _BEGIN; + JsonBuilder *builder = NULL; + + if (regResp != NULL) + builder = initComposer(regResp->getStatusCode()); + else + builder = initComposer(UAF_ASM_STATUS_ACCESS_DENIED); + + if (regResp != NULL) { + json_builder_set_member_name(builder, "responseData"); + json_builder_begin_object(builder); + + AsmRegResponse *respData = static_cast(regResp->getResponseData()); + + const char *assertion = respData->getAssertion().c_str(); + const char *assScheme = respData->getAssertionScheme().c_str(); + _INFO("assertion is [%s]", assertion); + _INFO("assScheme is [%s]", assScheme); + + addString(builder, "assertion", respData->getAssertion().c_str()); + addString(builder, "assertionScheme", respData->getAssertionScheme().c_str()); + + /*responseData*/ + json_builder_end_object(builder); + } + json_builder_end_object(builder); + + _END; + return finishComposer(builder); +} + +char* +JsonUtil::composeAsmAuthenticateResponse(AsmResponse *authResp) +{ + _BEGIN; + + JsonBuilder *builder = NULL; + + if (authResp != NULL) + builder = initComposer(authResp->getStatusCode()); + else + builder = initComposer(UAF_ASM_STATUS_ACCESS_DENIED); + + if (authResp != NULL) { + json_builder_set_member_name(builder, "responseData"); + json_builder_begin_object(builder); + + AsmAuthResponse *respData = static_cast(authResp->getResponseData()); + + addString(builder, "assertion", respData->getAssertion().c_str()); + addString(builder, "assertionScheme", respData->getAssertionScheme().c_str()); + + /*responseData*/ + json_builder_end_object(builder); + } + json_builder_end_object(builder); + + _END; + return finishComposer(builder); +} + +char* +JsonUtil::composeAsmGetRegsResponse(AsmResponse *regResp) +{ + _BEGIN; + JsonBuilder *builder = NULL; + + if (regResp != NULL) + builder = initComposer(regResp->getStatusCode()); + else + builder = initComposer(UAF_ASM_STATUS_ACCESS_DENIED); + + if (regResp != NULL) { + + json_builder_set_member_name(builder, "responseData"); + json_builder_begin_object(builder); + + AsmGetRegsResponse *respData = (AsmGetRegsResponse*)(regResp->getResponseData()); + + json_builder_set_member_name(builder, "appRegs"); + json_builder_begin_array(builder); + + std::vector appRegList = respData->getAppRegList(); + + if(appRegList.empty() == false) { + std::vector::iterator iter = appRegList.begin(); + for (; iter != appRegList.end(); ++iter) { + + json_builder_begin_object(builder); + + AppRegistration appReg = *iter; + + std::string appID = appReg.getAppId(); + if (appID.empty() == false) { + addString(builder, "appID", appID.c_str()); + } + + std::vector keyIdList = appReg.getKeyIdList(); + if (keyIdList.size() > 0) { + + json_builder_set_member_name(builder, "keyIDs"); + json_builder_begin_array(builder); + + std::vector::const_iterator iter = keyIdList.begin(); + for (; iter != keyIdList.end(); ++iter) { + json_builder_add_string_value(builder, (*iter).c_str()); + } + /*keyIDs*/ + json_builder_end_array(builder); + } + + /*appReg*/ + json_builder_end_object(builder); + } + } + /*appRegs*/ + json_builder_end_array(builder); + + /*responseData*/ + json_builder_end_object(builder); + } + + json_builder_end_object(builder); + _END; + return finishComposer(builder); +} diff --git a/common/uafv1tlvutil/inc/AttBasicFullTlvEncoder.h b/common/uafv1tlvutil/inc/AttBasicFullTlvEncoder.h new file mode 100644 index 0000000..b5e95be --- /dev/null +++ b/common/uafv1tlvutil/inc/AttBasicFullTlvEncoder.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef ATTBASICFULLTLVENCODER_H +#define ATTBASICFULLTLVENCODER_H + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" +#include "IntTlvEncoder.h" +#include "StringTlvEncoder.h" +#include "BufferTlvEncoder.h" + +class AttBasicFullTlvEncoder : public ITlvEncoder { + +public: + AttBasicFullTlvEncoder(void); + /*I/p: RegisterResp, O/p: TLV raw data*/ + virtual Buffer *encode(const void *authData); + + /*I/p: TLV raw data, O/p: RegisterResp*/ + virtual void* decode(const unsigned char *rawData); + +private: + IntTlvEncoder __intTlvEncoder; + StringTlvEncoder __strTlvEncoder; + BufferTlvEncoder __buffTlvEncoder; +}; + +#endif // ATTBASICFULLTLVENCODER_H diff --git a/common/uafv1tlvutil/inc/AttBasicSurrTlvEncoder.h b/common/uafv1tlvutil/inc/AttBasicSurrTlvEncoder.h new file mode 100644 index 0000000..d5eebcb --- /dev/null +++ b/common/uafv1tlvutil/inc/AttBasicSurrTlvEncoder.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef ATTBASICSURRTLVENCODER_H +#define ATTBASICSURRTLVENCODER_H + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" +#include "IntTlvEncoder.h" +#include "StringTlvEncoder.h" +#include "BufferTlvEncoder.h" + +class AttBasicSurrTlvEncoder : public ITlvEncoder { + +public: + AttBasicSurrTlvEncoder(void); + /*I/p: RegisterResp, O/p: TLV raw data*/ + virtual Buffer *encode(const void *authData); + + /*I/p: TLV raw data, O/p: RegisterResp*/ + virtual void* decode(const unsigned char *rawData); + +private: + IntTlvEncoder __intTlvEncoder; + StringTlvEncoder __strTlvEncoder; + BufferTlvEncoder __buffTlvEncoder; +}; + +#endif // ATTBASICSURRTLVENCODER_H diff --git a/common/uafv1tlvutil/inc/AuthAssertionInfoTlvEncoder.h b/common/uafv1tlvutil/inc/AuthAssertionInfoTlvEncoder.h new file mode 100644 index 0000000..ba96538 --- /dev/null +++ b/common/uafv1tlvutil/inc/AuthAssertionInfoTlvEncoder.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef AUTHASSERTIONINFOTLVENCODER_H +#define AUTHASSERTIONINFOTLVENCODER_H + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" + +class AuthAssertionInfoTlvEncoder +{ + +public: + AuthAssertionInfoTlvEncoder(void); + /*I/p: RegisterResp, O/p: TLV raw data*/ + virtual Buffer *encode(const void *authData); + + /*I/p: TLV raw data, O/p: RegisterResp*/ + virtual void* decode(const unsigned char *rawData); +}; + +#endif // AUTHASSERTIONINFOTLVENCODER_H diff --git a/common/uafv1tlvutil/inc/AuthCountersInfoTlvEncoder.h b/common/uafv1tlvutil/inc/AuthCountersInfoTlvEncoder.h new file mode 100644 index 0000000..7fa855a --- /dev/null +++ b/common/uafv1tlvutil/inc/AuthCountersInfoTlvEncoder.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef AUTHCOUNTERSINFOTLVENCODER_H +#define AUTHCOUNTERSINFOTLVENCODER_H + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" + +class AuthCountersInfoTlvEncoder +{ + +public: + AuthCountersInfoTlvEncoder(void); + /*I/p: RegisterResp, O/p: TLV raw data*/ + virtual Buffer *encode(const void *authData); + + /*I/p: TLV raw data, O/p: RegisterResp*/ + virtual void* decode(const unsigned char *rawData); +}; + +#endif // AUTHCOUNTERSINFOTLVENCODER_H diff --git a/common/uafv1tlvutil/inc/BufferTlvEncoder.h b/common/uafv1tlvutil/inc/BufferTlvEncoder.h new file mode 100644 index 0000000..f50d653 --- /dev/null +++ b/common/uafv1tlvutil/inc/BufferTlvEncoder.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef BUFFERTLVENCODER_H +#define BUFFERTLVENCODER_H + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" + +class BufferTlvEncoder : public ITlvEncoder +{ + +public: + BufferTlvEncoder(void); + + /*I/P : tlv_s*/ + virtual Buffer *encode(const void *intTlv); + + virtual void *decode(const unsigned char *rawData); +}; + +#endif // BUFFERTLVENCODER_H diff --git a/common/uafv1tlvutil/inc/DeRegReqTlvEncoder.h b/common/uafv1tlvutil/inc/DeRegReqTlvEncoder.h new file mode 100644 index 0000000..b2ade74 --- /dev/null +++ b/common/uafv1tlvutil/inc/DeRegReqTlvEncoder.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef DEREGREQTLVENCODER_H +#define DEREGREQTLVENCODER_H + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" +#include "IntTlvEncoder.h" +#include "StringTlvEncoder.h" +#include "BufferTlvEncoder.h" + +class DeRegReqTlvEncoder : public ITlvEncoder { + +public: + DeRegReqTlvEncoder(void); + /*I/p: RegisterResp, O/p: TLV raw data*/ + virtual Buffer *encode(const void *authData); + + /*I/p: TLV raw data, O/p: RegisterResp*/ + virtual void* decode(const unsigned char *rawData); + +private: + IntTlvEncoder __intTlvEncoder; + StringTlvEncoder __strTlvEncoder; + BufferTlvEncoder __buffTlvEncoder; +}; + +#endif // DEREGREQTLVENCODER_H diff --git a/common/uafv1tlvutil/inc/DeRegRespTlvEncoder.h b/common/uafv1tlvutil/inc/DeRegRespTlvEncoder.h new file mode 100644 index 0000000..63aa04e --- /dev/null +++ b/common/uafv1tlvutil/inc/DeRegRespTlvEncoder.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef DEREGRESPTLVENCODER_H +#define DEREGRESPTLVENCODER_H + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" +#include "IntTlvEncoder.h" +#include "StringTlvEncoder.h" +#include "BufferTlvEncoder.h" + +class DeRegRespTlvEncoder : public ITlvEncoder { + +public: + DeRegRespTlvEncoder(void); + /*I/p: RegisterResp, O/p: TLV raw data*/ + virtual Buffer *encode(const void *authData); + + /*I/p: TLV raw data, O/p: RegisterResp*/ + virtual void* decode(const unsigned char *rawData); + +private: + IntTlvEncoder __intTlvEncoder; + StringTlvEncoder __strTlvEncoder; + BufferTlvEncoder __buffTlvEncoder; +}; + +#endif // DEREGRESPTLVENCODER_H diff --git a/common/uafv1tlvutil/inc/GetInfoReqTlvEncoder.h b/common/uafv1tlvutil/inc/GetInfoReqTlvEncoder.h new file mode 100644 index 0000000..61ebf2e --- /dev/null +++ b/common/uafv1tlvutil/inc/GetInfoReqTlvEncoder.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef GETINFO_REQ_TLV_ENCODER_H_ +#define GETINFO_REQ_TLV_ENCODER_H_ + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" +#include +#include "TlvData.h" + + +class GetInfoReqTlvEncoder : public ITlvEncoder { + +public: + GetInfoReqTlvEncoder(void); + virtual ~GetInfoReqTlvEncoder(void); + + /*I/p: Authenticator Specific data struct, O/p: TLV raw data*/ + virtual Buffer* encode(const void *authData); + + /*I/p: TLV raw data, O/p: Authenticator Specific data struct*/ + virtual void* decode(const unsigned char *rawData); + +}; + +#endif /* GETINFO_REQ_TLV_ENCODER_H_ */ diff --git a/common/uafv1tlvutil/inc/GetInfoRespTlvEncoder.h b/common/uafv1tlvutil/inc/GetInfoRespTlvEncoder.h new file mode 100644 index 0000000..a22819f --- /dev/null +++ b/common/uafv1tlvutil/inc/GetInfoRespTlvEncoder.h @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef GETINFORESPTLVENCODER_H +#define GETINFORESPTLVENCODER_H + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" +#include "IntTlvEncoder.h" +#include "StringTlvEncoder.h" + +class AuthMetaTlvEncoder : public ITlvEncoder +{ + +public: + AuthMetaTlvEncoder(void); + + virtual Buffer* encode(const void *authData); + + virtual void* decode(const uint8_t *rawData); + +private: + IntTlvEncoder __intTlvEncoder; + StringTlvEncoder __strTlvEncoder; +}; + +class TcDispPNGChTlvEncoder : public ITlvEncoder +{ + +public: + TcDispPNGChTlvEncoder(void); + + virtual Buffer* encode(const void *authData); + + virtual void* decode(const uint8_t *rawData); + +private: + IntTlvEncoder __intTlvEncoder; + StringTlvEncoder __strTlvEncoder; +}; + + +class AuthInfoTlvEncoder : public ITlvEncoder +{ + +public: + AuthInfoTlvEncoder(void); + + virtual Buffer *encode(const void *authData); + + virtual void* decode(const unsigned char *rawData); + +private: + IntTlvEncoder __intTlvEncoder; + StringTlvEncoder __strTlvEncoder; + AuthMetaTlvEncoder __authMetaTlvEncoder; + TcDispPNGChTlvEncoder __tcDispPNGChTlvEncoder; +}; + +class GetInfoRespTlvEncoder : public ITlvEncoder +{ + +public: + GetInfoRespTlvEncoder(void); + /*I/p: GetAuthInfoResp, O/p: TLV raw data*/ + virtual Buffer *encode(const void *authData); + + /*I/p: TLV raw data, O/p: Authenticator Specific data struct*/ + virtual void* decode(const unsigned char *rawData); + +private: + IntTlvEncoder __intTlvEncoder; + AuthInfoTlvEncoder __authInfoEncoder; + AuthMetaTlvEncoder __authMetaTlvEncoder; + TcDispPNGChTlvEncoder __tcDispPNGChTlvEncoder; +}; + +#endif // GETINFORESPTLVENCODER_H diff --git a/common/uafv1tlvutil/inc/ITlvEncoder.h b/common/uafv1tlvutil/inc/ITlvEncoder.h new file mode 100644 index 0000000..517d2a7 --- /dev/null +++ b/common/uafv1tlvutil/inc/ITlvEncoder.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef ITLV_ENCODER_H_ +#define ITLV_ENCODER_H_ + +#include +#include "Tlv.h" + +class ITlvEncoder { + +public: + virtual ~ITlvEncoder(void){} + + /*I/p: Authenticator Specific data struct, O/p: TLV raw data*/ + virtual Buffer* encode(const void *authData) = 0; + + /*I/p: TLV raw data, O/p: Authenticator Specific data struct*/ + virtual void* decode(const uint8_t *rawData) = 0; +}; + +#endif /* ITLV_ENCODER_H_ */ diff --git a/common/uafv1tlvutil/inc/IntTlvEncoder.h b/common/uafv1tlvutil/inc/IntTlvEncoder.h new file mode 100644 index 0000000..aeadd20 --- /dev/null +++ b/common/uafv1tlvutil/inc/IntTlvEncoder.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef INTTLVENCODER_H +#define INTTLVENCODER_H + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" + +class IntTlvEncoder : public ITlvEncoder +{ + +public: + IntTlvEncoder(void); + + /*I/P : tlv_s*/ + virtual Buffer *encode(const void *intTlv); + + virtual void *decode(const unsigned char *rawData); +}; + +#endif // INTTLVENCODER_H diff --git a/common/uafv1tlvutil/inc/RegAssertionInfoTlvEncoder.h b/common/uafv1tlvutil/inc/RegAssertionInfoTlvEncoder.h new file mode 100644 index 0000000..00572c6 --- /dev/null +++ b/common/uafv1tlvutil/inc/RegAssertionInfoTlvEncoder.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef REGASSERTIONINFOTLVENCODER_H +#define REGASSERTIONINFOTLVENCODER_H + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" +#include "IntTlvEncoder.h" +#include "StringTlvEncoder.h" + +class RegAssertionInfoTlvEncoder : public ITlvEncoder { + +public: + RegAssertionInfoTlvEncoder(void); + /*I/p: RegisterResp, O/p: TLV raw data*/ + virtual Buffer *encode(const void *authData); + + /*I/p: TLV raw data, O/p: RegisterResp*/ + virtual void* decode(const unsigned char *rawData); + +private: + IntTlvEncoder __intTlvEncoder; + StringTlvEncoder __strTlvEncoder; +}; + +#endif // REGASSERTIONINFOTLVENCODER_H diff --git a/common/uafv1tlvutil/inc/RegAuthAssertionTlvEncoder.h b/common/uafv1tlvutil/inc/RegAuthAssertionTlvEncoder.h new file mode 100644 index 0000000..0319b64 --- /dev/null +++ b/common/uafv1tlvutil/inc/RegAuthAssertionTlvEncoder.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef REGAUTHASSERTIONTLVENCODER_H +#define REGAUTHASSERTIONTLVENCODER_H + +#include "AttBasicFullTlvEncoder.h" +#include "AttBasicSurrTlvEncoder.h" +#include "Uafv1KrdTlvEncoder.h" + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" +#include "IntTlvEncoder.h" +#include "StringTlvEncoder.h" +#include "BufferTlvEncoder.h" + +class RegAuthAssertionTlvEncoder : public ITlvEncoder { + +public: + RegAuthAssertionTlvEncoder(void); + /*I/p: RegisterResp, O/p: TLV raw data*/ + virtual Buffer *encode(const void *authData); + + /*I/p: TLV raw data, O/p: RegisterResp*/ + virtual void* decode(const unsigned char *rawData); + +private: + IntTlvEncoder __intTlvEncoder; + StringTlvEncoder __strTlvEncoder; + BufferTlvEncoder __buffTlvEncoder; + Uafv1KrdTlvEncoder __uafv1KrdTlvEncoder; + AttBasicFullTlvEncoder __attBasicFullTlvEncoder; + AttBasicSurrTlvEncoder __attBasicSurrTlvEncoder; +}; + +#endif // REGAUTHASSERTIONTLVENCODER_H diff --git a/common/uafv1tlvutil/inc/RegCountersInfoTlvEncoder.h b/common/uafv1tlvutil/inc/RegCountersInfoTlvEncoder.h new file mode 100644 index 0000000..c79449d --- /dev/null +++ b/common/uafv1tlvutil/inc/RegCountersInfoTlvEncoder.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef REGCOUNTERSINFOTLVENCODER_H +#define REGCOUNTERSINFOTLVENCODER_H + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" + +class RegCountersInfoTlvEncoder { + +public: + RegCountersInfoTlvEncoder(void); + /*I/p: RegisterResp, O/p: TLV raw data*/ + virtual Buffer *encode(const void *authData); + + /*I/p: TLV raw data, O/p: RegisterResp*/ + virtual void* decode(const unsigned char *rawData); +}; + +#endif // REGCOUNTERSINFOTLVENCODER_H diff --git a/common/uafv1tlvutil/inc/RegReqTlvEncoder.h b/common/uafv1tlvutil/inc/RegReqTlvEncoder.h new file mode 100644 index 0000000..23f5183 --- /dev/null +++ b/common/uafv1tlvutil/inc/RegReqTlvEncoder.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef REGREQTLVENCODER_H +#define REGREQTLVENCODER_H + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" +#include "IntTlvEncoder.h" +#include "StringTlvEncoder.h" +#include "BufferTlvEncoder.h" + +class RegAssertionTlvEncoder : public ITlvEncoder { + +public: + RegAssertionTlvEncoder(void); + /*I/p: RegAssertion, O/p: TLV raw data*/ + virtual Buffer *encode(const void *authData); + + /*I/p: TLV raw data, O/p: RegAssertion */ + virtual void* decode(const unsigned char *rawData); + +private: + IntTlvEncoder __intTlvEncoder; + StringTlvEncoder __strTlvEncoder; + BufferTlvEncoder __buffTlvEncoder; +}; + +#endif // REGREQTLVENCODER_H diff --git a/common/uafv1tlvutil/inc/RegRespTlvEncoder.h b/common/uafv1tlvutil/inc/RegRespTlvEncoder.h new file mode 100644 index 0000000..7eb239d --- /dev/null +++ b/common/uafv1tlvutil/inc/RegRespTlvEncoder.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef REGRESPTLVENCODER_H +#define REGRESPTLVENCODER_H + +#include "RegAssertionInfoTlvEncoder.h" +#include "RegCountersInfoTlvEncoder.h" +#include "AttBasicFullTlvEncoder.h" +#include "AttBasicSurrTlvEncoder.h" +#include "Uafv1KrdTlvEncoder.h" +#include "RegAuthAssertionTlvEncoder.h" + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" +#include "IntTlvEncoder.h" +#include "StringTlvEncoder.h" +#include "BufferTlvEncoder.h" + +class RegRespTlvEncoder : public ITlvEncoder { + +public: + RegRespTlvEncoder(void); + /*I/p: RegisterResp, O/p: TLV raw data*/ + virtual Buffer *encode(const void *authData); + + /*I/p: TLV raw data, O/p: RegisterResp*/ + virtual void* decode(const unsigned char *rawData); + +private: + IntTlvEncoder __intTlvEncoder; + StringTlvEncoder __strTlvEncoder; + BufferTlvEncoder __buffTlvEncoder; + AttBasicFullTlvEncoder __attBasicFullTlvEncoder; + AttBasicSurrTlvEncoder __attBasicSurrTlvEncoder; + Uafv1KrdTlvEncoder __uafv1KrdTlvEncoder; + RegAssertionInfoTlvEncoder __assertionInfo; + RegCountersInfoTlvEncoder __countersInfo; + RegAuthAssertionTlvEncoder __regAuthAssertion; +}; + +#endif // REGRESPTLVENCODER_H diff --git a/common/uafv1tlvutil/inc/SignAuthAssertionTlvEncoder.h b/common/uafv1tlvutil/inc/SignAuthAssertionTlvEncoder.h new file mode 100644 index 0000000..5660f38 --- /dev/null +++ b/common/uafv1tlvutil/inc/SignAuthAssertionTlvEncoder.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef SIGNAUTHASSERTIONTLVENCODER_H +#define SIGNAUTHASSERTIONTLVENCODER_H + +#include "SignedDataTlvEncoder.h" + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" +#include "IntTlvEncoder.h" +#include "StringTlvEncoder.h" +#include "BufferTlvEncoder.h" + +class SignAuthAssertionTlvEncoder : public ITlvEncoder { + +public: + SignAuthAssertionTlvEncoder(void); + /*I/p: RegisterResp, O/p: TLV raw data*/ + virtual Buffer *encode(const void *authData); + + /*I/p: TLV raw data, O/p: RegisterResp*/ + virtual void* decode(const unsigned char *rawData); + +private: + IntTlvEncoder __intTlvEncoder; + StringTlvEncoder __strTlvEncoder; + BufferTlvEncoder __buffTlvEncoder; + SignedDataTlvEncoder __sigDataTlvEncoder; +}; + +#endif //SIGNAUTHASSERTIONTLVENCODER_H diff --git a/common/uafv1tlvutil/inc/SignReqTlvEncoder.h b/common/uafv1tlvutil/inc/SignReqTlvEncoder.h new file mode 100644 index 0000000..ecd68c1 --- /dev/null +++ b/common/uafv1tlvutil/inc/SignReqTlvEncoder.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef SIGNREQTLVENCODER_H +#define SIGNREQTLVENCODER_H + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" +#include "IntTlvEncoder.h" +#include "StringTlvEncoder.h" +#include "BufferTlvEncoder.h" + +class SignReqTlvEncoder : public ITlvEncoder { + +public: + SignReqTlvEncoder(void); + /*I/p: RegisterResp, O/p: TLV raw data*/ + virtual Buffer *encode(const void *authData); + + /*I/p: TLV raw data, O/p: RegisterResp*/ + virtual void* decode(const unsigned char *rawData); + +private: + IntTlvEncoder __intTlvEncoder; + StringTlvEncoder __strTlvEncoder; + BufferTlvEncoder __buffTlvEncoder; +}; + +#endif // SIGNREQTLVENCODER_H diff --git a/common/uafv1tlvutil/inc/SignRespTlvEncoder.h b/common/uafv1tlvutil/inc/SignRespTlvEncoder.h new file mode 100644 index 0000000..b713bda --- /dev/null +++ b/common/uafv1tlvutil/inc/SignRespTlvEncoder.h @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef SIGNRESPTLVENCODER_H +#define SIGNRESPTLVENCODER_H + +#include "AuthAssertionInfoTlvEncoder.h" +#include "AuthCountersInfoTlvEncoder.h" +#include "SignedDataTlvEncoder.h" +#include "SignAuthAssertionTlvEncoder.h" + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" +#include "IntTlvEncoder.h" +#include "StringTlvEncoder.h" +#include "BufferTlvEncoder.h" + +class UserNameKhTlvEncoder : public ITlvEncoder { + +public: + UserNameKhTlvEncoder(void); + /*I/p: RegisterResp, O/p: TLV raw data*/ + virtual Buffer *encode(const void *authData); + + /*I/p: TLV raw data, O/p: RegisterResp*/ + virtual void* decode(const unsigned char *rawData); + +private: + IntTlvEncoder __intTlvEncoder; + StringTlvEncoder __strTlvEncoder; + BufferTlvEncoder __buffTlvEncoder; +}; + +class SignRespTlvEncoder : public ITlvEncoder { + +public: + SignRespTlvEncoder(void); + /*I/p: RegisterResp, O/p: TLV raw data*/ + virtual Buffer *encode(const void *authData); + + /*I/p: TLV raw data, O/p: RegisterResp*/ + virtual void* decode(const unsigned char *rawData); + +private: + IntTlvEncoder __intTlvEncoder; + StringTlvEncoder __strTlvEncoder; + BufferTlvEncoder __buffTlvEncoder; + UserNameKhTlvEncoder __uKhTlvEncoder; + SignedDataTlvEncoder __sigDataTlvEncoder; + SignAuthAssertionTlvEncoder __signAuthAssertionInfo; + AuthAssertionInfoTlvEncoder __assertionInfo; + AuthCountersInfoTlvEncoder __counterInfo; +}; + +#endif //SIGNRESPTLVENCODER_H diff --git a/common/uafv1tlvutil/inc/SignedDataTlvEncoder.h b/common/uafv1tlvutil/inc/SignedDataTlvEncoder.h new file mode 100644 index 0000000..b13de53 --- /dev/null +++ b/common/uafv1tlvutil/inc/SignedDataTlvEncoder.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef SIGNEDDATATLVENCODER_H +#define SIGNEDDATATLVENCODER_H + +#include "AuthAssertionInfoTlvEncoder.h" +#include "AuthCountersInfoTlvEncoder.h" +#include +#include "TlvData.h" +#include "ITlvEncoder.h" +#include "IntTlvEncoder.h" +#include "StringTlvEncoder.h" +#include "BufferTlvEncoder.h" + +class SignedDataTlvEncoder : public ITlvEncoder { + +public: + SignedDataTlvEncoder(void); + /*I/p: RegisterResp, O/p: TLV raw data*/ + virtual Buffer *encode(const void *authData); + + /*I/p: TLV raw data, O/p: RegisterResp*/ + virtual void* decode(const unsigned char *rawData); + +private: + IntTlvEncoder __intTlvEncoder; + StringTlvEncoder __strTlvEncoder; + BufferTlvEncoder __buffTlvEncoder; + AuthAssertionInfoTlvEncoder __assertionInfo; + AuthCountersInfoTlvEncoder __counterInfo; +}; + +#endif //SIGNEDDATATLVENCODER_H diff --git a/common/uafv1tlvutil/inc/StringTlvEncoder.h b/common/uafv1tlvutil/inc/StringTlvEncoder.h new file mode 100644 index 0000000..a149851 --- /dev/null +++ b/common/uafv1tlvutil/inc/StringTlvEncoder.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef STRTLVENCODER_H +#define STRTLVENCODER_H + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" + +class StringTlvEncoder : public ITlvEncoder +{ + +public: + StringTlvEncoder(void); + + /*I/P : tlv_s*/ + virtual Buffer *encode(const void *strTlv); + + virtual void* decode(const uint8_t *rawData); +}; + +#endif // STRTLVENCODER_H diff --git a/common/uafv1tlvutil/inc/Tlv.h b/common/uafv1tlvutil/inc/Tlv.h new file mode 100644 index 0000000..32723b2 --- /dev/null +++ b/common/uafv1tlvutil/inc/Tlv.h @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef TLV_H +#define TLV_H + +#include +#include +#include +#include +#include "AuthnrTypes.h" + +const int TAG_UAFV1_GETINFO_CMD = 0x3401; +const int TAG_UAFV1_GETINFO_CMD_RESPONSE = 0x3601; +const int TAG_UAFV1_REGISTER_CMD = 0x3402; +const int TAG_UAFV1_REGISTER_CMD_RESPONSE = 0x3602; +const int TAG_UAFV1_SIGN_CMD = 0x3403; +const int TAG_UAFV1_SIGN_CMD_RESPONSE = 0x3603; +const int TAG_UAFV1_DEREGISTER_CMD = 0x3404; +const int TAG_UAFV1_DEREGISTER_CMD_RESPONSE = 0x3604; +const int TAG_UAFV1_OPEN_SETTINGS_CMD = 0x3406; +const int TAG_UAFV1_OPEN_SETTINGS_CMD_RESPONSE = 0x3606; + +const int TAG_API_VERSION = 0x280E; +const int TAG_STATUS_CODE = 0x2808; +const int TAG_AUTHENTICATOR_INFO = 0x3811; +const int TAG_AUTHENTICATOR_INDEX = 0x280D; +const int TAG_AAID = 0x2E0B; +const int TAG_AUTHENTICATOR_METADATA = 0x2809; +const int TAG_ASSERTION_SCHEME = 0x280A; +const int TAG_TC_DISPLAY_PNG_CHARACTERISTICS = 0x280B; +const int TAG_TC_DISPLAY_CONTENT_TYPE = 0x280C; +const int TAG_AUTHENTICATOR_ASSERTION = 0x280F; +const int TAG_TRANSACTION_CONTENT = 0x2810; +const int TAG_SUPPORTED_EXTENSION_ID = 0x2812; + +const int TAG_UAFV1_REG_ASSERTION = 0x3E01; +const int TAG_UAFV1_AUTH_ASSERTION = 0x3E02; +const int TAG_UAFV1_KRD = 0x3E03; +const int TAG_UAFV1_SIGNED_DATA = 0x3E04; +const int TAG_ATTESTATION_CERT = 0x2E05; +const int TAG_SIGNATURE = 0x2E06; +const int TAG_ATTESTATION_BASIC_FULL = 0x3E07; +const int TAG_ATTESTATION_BASIC_SURROGATE = 0x3E08; +const int TAG_KEYID = 0x2E09; +const int TAG_FINAL_CHALLENGE = 0x2E0A; +//const int TAG_AAID = 0x2E0B; +const int TAG_PUB_KEY = 0x2E0C; +const int TAG_COUNTERS = 0x2E0D; +const int TAG_ASSERTION_INFO = 0x2E0E; +const int TAG_AUTHENTICATOR_NONCE = 0x2E0F; +const int TAG_TRANSACTION_CONTENT_HASH = 0x2E10; +const int TAG_EXTENSION = 0x3E11; +const int TAG_EXTENSION_ID = 0x2E13; +const int TAG_EXTENSION_DATA = 0x2E14; + +const int TAG_KEYHANDLE = 0x2801; +const int TAG_USERNAME_AND_KEYHANDLE = 0x3802; +const int TAG_USERVERIFY_TOKEN = 0x2803; +const int TAG_APPID = 0x2804; +const int TAG_KEYHANDLE_ACCESS_TOKEN = 0x2805; +const int TAG_USERNAME = 0x2806; +const int TAG_ATTESTATION_TYPE = 0x2807; + + +typedef struct __attribute__((packed))_tlv { + uint16_t tag; + uint16_t len; + uint8_t *val; +} tlv_s; + +Buffer* tlv_to_buffer(tlv_s *tlv); + +tlv_s* tlv_decode(const uint8_t *tlv_buffer_in); + +int tlv_get_int_by_reverse_endian(const unsigned char *tlv_buffer_in, int bytes); + +typedef struct _tlv_builder { + GQueue *stack; + tlv_s *root; +} tlv_builder_s; + + +/*TLV builder APIs*/ +tlv_builder_s* tlv_builder_create(void); + +tlv_builder_s* tlv_builder_start_composite(tlv_builder_s* builder, int tag); + +tlv_builder_s* tlv_builder_add_int8(tlv_builder_s* builder, int tag, uint8_t val); +tlv_builder_s* tlv_builder_add_int16(tlv_builder_s* builder, int tag, uint16_t val); +tlv_builder_s* tlv_builder_add_string(tlv_builder_s* builder, int tag, char *val); +tlv_builder_s* tlv_builder_add_buffer(tlv_builder_s* builder, int tag, Buffer *val); + +tlv_builder_s* tlv_builder_end_composite(tlv_builder_s* builder); + +Buffer* tlv_builder_get_buffer(tlv_builder_s* builder); + +/*TLV builder APIs*/ + +#endif // TLV_H diff --git a/common/uafv1tlvutil/inc/TlvData.h b/common/uafv1tlvutil/inc/TlvData.h new file mode 100644 index 0000000..ad2fe94 --- /dev/null +++ b/common/uafv1tlvutil/inc/TlvData.h @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef TLV_DATA_H_ +#define TLV_DATA_H_ + +#include +#include +#include +#include "ITlvEncoder.h" + +typedef enum { + EID_UAFV1_GETINFO_REQ, + EID_UAFV1_GETINFO_RESP, + EID_UAFV1_REGISTER_REQ, + EID_UAFV1_REGISTER_RESP, + EID_UAFV1_REG_ASSERTION_RESP, + EID_UAFV1_REG_ASSERTION_KRD_RESP, + EID_UAFV1_SIGN_REQ, + EID_UAFV1_SIGN_RESP, + EID_UAFV1_SIGN_ASSERTION_RESP, + EID_UAFV1_SIGN_DATA_RESP, + EID_UAFV1_DEREG_REQ, + EID_UAFV1_DEREG_RESP, + EID_UAFV1_OPEN_SETTINGS_REQ, + EID_UAFV1_OPEN_SETTINGS_RESP +} EncoderId; + +class TlvEncoderFactory +{ +public: + static ITlvEncoder* getTlvEncoderById(int id); +private: + TlvEncoderFactory(void); + static std::map* loadAllEncoders(void); + +private: + static std::map *__encoderTable; +}; + +template +class TlvEncodable { +public: + TlvEncodable(void) + { + __authData = NULL; + } + + TlvEncodable(const T *authData) : __authData(authData){} + + virtual ~TlvEncodable(void){} + + int setEncoder(int encId) + { + __encoder = TlvEncoderFactory::getTlvEncoderById(encId); + if (__encoder == NULL) + return -1; + + return 0; + } + + Buffer* encode(void) + { + return __encoder->encode(__authData); + } + + T* decode(const unsigned char *encData) + { + return static_cast(__encoder->decode(encData)); + } + +private: + const T *__authData; + ITlvEncoder *__encoder; +}; + +#endif /* TLV_DATA_H_ */ diff --git a/common/uafv1tlvutil/inc/Uafv1KrdTlvEncoder.h b/common/uafv1tlvutil/inc/Uafv1KrdTlvEncoder.h new file mode 100644 index 0000000..271acae --- /dev/null +++ b/common/uafv1tlvutil/inc/Uafv1KrdTlvEncoder.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef UAFV1KRDTLVENCODER_H +#define UAFV1KRDTLVENCODER_H + +#include "RegAssertionInfoTlvEncoder.h" +#include "RegCountersInfoTlvEncoder.h" + +#include +#include "TlvData.h" +#include "ITlvEncoder.h" +#include "IntTlvEncoder.h" +#include "StringTlvEncoder.h" +#include "BufferTlvEncoder.h" + +class Uafv1KrdTlvEncoder : public ITlvEncoder { + +public: + Uafv1KrdTlvEncoder(void); + /*I/p: RegisterResp, O/p: TLV raw data*/ + virtual Buffer *encode(const void *authData); + + /*I/p: TLV raw data, O/p: RegisterResp*/ + virtual void* decode(const unsigned char *rawData); + +private: + IntTlvEncoder __intTlvEncoder; + StringTlvEncoder __strTlvEncoder; + BufferTlvEncoder __buffTlvEncoder; + RegAssertionInfoTlvEncoder __assertionInfo; + RegCountersInfoTlvEncoder __countersInfo; +}; + +#endif // UAFV1KRDTLVENCODER_H diff --git a/common/uafv1tlvutil/src/AttBasicFullTlvEncoder.cpp b/common/uafv1tlvutil/src/AttBasicFullTlvEncoder.cpp new file mode 100644 index 0000000..617ba9d --- /dev/null +++ b/common/uafv1tlvutil/src/AttBasicFullTlvEncoder.cpp @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "AttBasicFullTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" +#include "stdio.h" + +AttBasicFullTlvEncoder::AttBasicFullTlvEncoder(void) +{ + +} + +Buffer * +AttBasicFullTlvEncoder::encode(const void *authData) +{ + _BEGIN; + RET_IF_FAIL(authData != NULL, NULL); + + AttestationBasicFull *getAttBasicFullInfo = (AttestationBasicFull*)authData; + + tlv_builder_s *builder = tlv_builder_create(); + + /*1.3(choice 1) TAG_ATTESTATION_BASIC_FULL*/ + tlv_builder_start_composite(builder, TAG_ATTESTATION_BASIC_FULL); + + /*1.3.2 TAG_SIGNATURE*/ + tlv_builder_add_buffer(builder, TAG_SIGNATURE, getAttBasicFullInfo->sig); + + /*1.3.3 TAG_ATTESTATION_CERT */ + tlv_builder_add_buffer(builder, TAG_ATTESTATION_CERT, getAttBasicFullInfo->cert); + + /*1.3(choice 1) end*/ + tlv_builder_end_composite(builder); + + _END; + return tlv_builder_get_buffer(builder); +} + +void * +AttBasicFullTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("AttBasicFullTlvEncoder::decode start"); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *root = tlv_decode(rawData); + RET_IF_FAIL(root != NULL, NULL); + RET_IF_FAIL(root->tag == TAG_ATTESTATION_BASIC_FULL, NULL); + + int rawIter = 2 + 2; + int endIter = rawIter + root->len; + + AttestationBasicFull *getAttBasicFullInfo = ALLOC(AttestationBasicFull); + + tlv_s *child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + + bool foundMember = false; + + while(1) { + + switch(child->tag) { + + case TAG_SIGNATURE: + _INFO(""); + getAttBasicFullInfo->sig = (Buffer*)__buffTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_ATTESTATION_CERT: + _INFO(""); + getAttBasicFullInfo->cert = (Buffer*)__buffTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + default: + _INFO(""); + foundMember = false; + break; + } + + _INFO(""); + rawIter = rawIter + 2 + 2 + child->len; + if(rawIter >= endIter) + break; + + child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + } + + if(foundMember == false) { + free(getAttBasicFullInfo); + return NULL; + } + + _INFO("AttBasicFullTlvEncoder::decode end"); + return getAttBasicFullInfo; +} diff --git a/common/uafv1tlvutil/src/AttBasicSurrTlvEncoder.cpp b/common/uafv1tlvutil/src/AttBasicSurrTlvEncoder.cpp new file mode 100644 index 0000000..606be95 --- /dev/null +++ b/common/uafv1tlvutil/src/AttBasicSurrTlvEncoder.cpp @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "AttBasicSurrTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" +#include "stdio.h" + +AttBasicSurrTlvEncoder::AttBasicSurrTlvEncoder(void) +{ + +} + +Buffer * +AttBasicSurrTlvEncoder::encode(const void *authData) +{ + _BEGIN; + RET_IF_FAIL(authData != NULL, NULL); + + AttestationBasicSurrogate *getAttSurrInfo = (AttestationBasicSurrogate*)authData; + + tlv_builder_s *builder = tlv_builder_create(); + + /*1.3(choice 2) TAG_ATTESTATION_BASIC_SURROGATE*/ + tlv_builder_start_composite(builder, TAG_ATTESTATION_BASIC_SURROGATE); + + /*1.3.2 TAG_SIGNATURE*/ + tlv_builder_add_buffer(builder, TAG_SIGNATURE, getAttSurrInfo->sig); + + /*1.3(choice 2) end*/ + tlv_builder_end_composite(builder); + + _END; + return tlv_builder_get_buffer(builder); +} + +void * +AttBasicSurrTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("AttBasicSurrTlvEncoder::decode start"); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *root = tlv_decode(rawData); + RET_IF_FAIL(root != NULL, NULL); + RET_IF_FAIL(root->tag == TAG_ATTESTATION_BASIC_SURROGATE, NULL); + + int rawIter = 2 + 2; + int endIter = rawIter + root->len; + + AttestationBasicSurrogate *getAttBasicSurrInfo = ALLOC(AttestationBasicSurrogate); + + tlv_s *child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + + bool foundMember = false; + + while(1) { + + switch(child->tag) { + + case TAG_SIGNATURE: + getAttBasicSurrInfo->sig = (Buffer*)__buffTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + default: + foundMember = false; + break; + } + + rawIter = rawIter + 2 + 2 + child->len; + if(rawIter >= endIter) + break; + + child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + } + + if(foundMember == false) { + free(getAttBasicSurrInfo); + return NULL; + } + + _INFO("AttBasicSurrTlvEncoder::decode end"); + return getAttBasicSurrInfo; +} diff --git a/common/uafv1tlvutil/src/AuthAssertionInfoTlvEncoder.cpp b/common/uafv1tlvutil/src/AuthAssertionInfoTlvEncoder.cpp new file mode 100644 index 0000000..32cb888 --- /dev/null +++ b/common/uafv1tlvutil/src/AuthAssertionInfoTlvEncoder.cpp @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "AuthAssertionInfoTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" + +AuthAssertionInfoTlvEncoder::AuthAssertionInfoTlvEncoder(void) +{ + +} + +Buffer * +AuthAssertionInfoTlvEncoder::encode(const void *authData) +{ + _INFO("AuthAssertionInfoTlvEncoder::encode start"); + RET_IF_FAIL(authData != NULL, NULL); + + AssertionInfo *getAssertionInfo = (AssertionInfo*)authData; + + int getAssertionInfoLen = 2 * sizeof(uint8_t); + + getAssertionInfoLen += 1 * sizeof(uint8_t); + + getAssertionInfoLen += 2 * sizeof(uint8_t); + + Buffer *getAssertionInfoBuff = ALLOC(Buffer); + getAssertionInfoBuff->len = getAssertionInfoLen; + getAssertionInfoBuff->data = NALLOC(getAssertionInfoLen, uint8_t); + uint8_t *iter = getAssertionInfoBuff->data; + + *iter = getAssertionInfo->authVersion & 0xFF; + iter++; + *iter = (getAssertionInfo->authVersion >> 8) & 0xFF; + iter++; + + *iter = getAssertionInfo->authMode & 0xFF; + iter++; + + *iter = getAssertionInfo->signatureAlgAndEncoding & 0xFF; + iter++; + *iter = (getAssertionInfo->signatureAlgAndEncoding >> 8) & 0xFF; + iter++; + + _INFO("AuthAssertionInfoTlvEncoder::encode end"); + return getAssertionInfoBuff; +} + +void * +AuthAssertionInfoTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("AuthAssertionInfoTlvEncoder::decode start"); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *root = tlv_decode(rawData); + RET_IF_FAIL(root != NULL, NULL); + + uint8_t rawIter = 0; + uint8_t endIter = rawIter + root->len; + uint8_t *root_val = root->val; + + AssertionInfo *getAssertionInfo = ALLOC(AssertionInfo); + + getAssertionInfo->authVersion = tlv_get_int_by_reverse_endian(root_val, 2); + _INFO("authVersion [%d]", getAssertionInfo->authVersion); + rawIter += 2; + CATCH_IF_FAIL(rawIter < endIter); + + getAssertionInfo->authMode = tlv_get_int_by_reverse_endian(root_val + rawIter, 1); + _INFO("authMode [%d]", getAssertionInfo->authMode); + rawIter += 1; + CATCH_IF_FAIL(rawIter < endIter); + + getAssertionInfo->signatureAlgAndEncoding = tlv_get_int_by_reverse_endian(root_val + rawIter, 2); + _INFO("signatureAlgAndEncoding [%d]", getAssertionInfo->signatureAlgAndEncoding); + rawIter += 2; + +CATCH: + _INFO("AuthAssertionInfoTlvEncoder::decode end"); + return getAssertionInfo; +} diff --git a/common/uafv1tlvutil/src/AuthCountersInfoTlvEncoder.cpp b/common/uafv1tlvutil/src/AuthCountersInfoTlvEncoder.cpp new file mode 100644 index 0000000..463d3c3 --- /dev/null +++ b/common/uafv1tlvutil/src/AuthCountersInfoTlvEncoder.cpp @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "AuthCountersInfoTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" + +AuthCountersInfoTlvEncoder::AuthCountersInfoTlvEncoder(void) +{ + +} + +Buffer * +AuthCountersInfoTlvEncoder::encode(const void *authData) +{ + _INFO("AuthCountersInfoTlvEncoder::encode start"); + Counters *getCounterInfo = (Counters*)authData; + + int getCounterInfoLen = 4 * sizeof(uint8_t); + + Buffer *getCounterInfoBuff = ALLOC(Buffer); + getCounterInfoBuff->len = getCounterInfoLen; + getCounterInfoBuff->data = NALLOC(getCounterInfoLen, uint8_t); + uint8_t *iter = getCounterInfoBuff->data; + + *iter = getCounterInfo->signCounter & 0xFF; + iter++; + *iter = (getCounterInfo->signCounter >> 8) & 0xFF; + iter++; + *iter = (getCounterInfo->signCounter >> 16) & 0xFF; + iter++; + *iter = (getCounterInfo->signCounter >> 24) & 0xFF; + iter++; + + _INFO("AuthCountersInfoTlvEncoder::encode end"); + return getCounterInfoBuff; +} + +void * +AuthCountersInfoTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("AuthCountersInfoTlvEncoder::decode start"); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *root = tlv_decode(rawData); + RET_IF_FAIL(root != NULL, NULL); + + uint8_t rawIter = 0; + uint8_t *root_val = root->val; + + Counters *getCountersInfo = ALLOC(Counters); + + getCountersInfo->signCounter = tlv_get_int_by_reverse_endian(root_val, 4); + _INFO("signCounter [%d]", getCountersInfo->signCounter); + rawIter += 2; + + _INFO("AuthCountersInfoTlvEncoder::decode end"); + return getCountersInfo; +} diff --git a/common/uafv1tlvutil/src/BufferTlvEncoder.cpp b/common/uafv1tlvutil/src/BufferTlvEncoder.cpp new file mode 100644 index 0000000..e5d5d98 --- /dev/null +++ b/common/uafv1tlvutil/src/BufferTlvEncoder.cpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "BufferTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" + +BufferTlvEncoder::BufferTlvEncoder(void) +{ + +} + +Buffer * +BufferTlvEncoder::encode(const void *strTlv) +{ + return NULL; +} + +void* +BufferTlvEncoder::decode(const uint8_t *rawData) +{ + _INFO("BufferTlvEncoder start"); + + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *tlv = tlv_decode(rawData); + RET_IF_FAIL(tlv != NULL, NULL); + + Buffer *getBuffInfo = ALLOC(Buffer); + + getBuffInfo->data = tlv->val; + getBuffInfo->len = tlv->len; + + _INFO("BufferTlvEncoder end"); + return getBuffInfo; +} diff --git a/common/uafv1tlvutil/src/DeRegReqTlvEncoder.cpp b/common/uafv1tlvutil/src/DeRegReqTlvEncoder.cpp new file mode 100644 index 0000000..d471d4e --- /dev/null +++ b/common/uafv1tlvutil/src/DeRegReqTlvEncoder.cpp @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "DeRegReqTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" + +DeRegReqTlvEncoder::DeRegReqTlvEncoder(void) +{ + +} + +Buffer * +DeRegReqTlvEncoder::encode(const void *authData) +{ + _INFO("DeRegReqTlvEncoder::encode start"); + RET_IF_FAIL(authData != NULL, NULL); + + DeregReq *getDeRegReqInfo = (DeregReq*)authData; + + _INFO(""); + tlv_builder_s *builder = tlv_builder_create(); + + _INFO(""); + /*1. TAG_UAFV1_DEREGISTER_CMD*/ + tlv_builder_start_composite(builder, TAG_UAFV1_DEREGISTER_CMD); + + _INFO(""); + /*1.2 TAG_AUTHENTICATOR_INDEX*/ + tlv_builder_add_int8(builder, TAG_AUTHENTICATOR_INDEX, getDeRegReqInfo->authIdx); + + _INFO(""); + /*1.3 TAG_APPID*/ + tlv_builder_add_string(builder, TAG_APPID, getDeRegReqInfo->appId); + + _INFO(""); + /*1.4 TAG_KEYID*/ + tlv_builder_add_string(builder, TAG_KEYID, getDeRegReqInfo->keyId); + + _INFO(""); + /*1.5 TAG_KEYHANDLE_ACCESS_TOKEN*/ + tlv_builder_add_buffer(builder, TAG_KEYHANDLE_ACCESS_TOKEN, getDeRegReqInfo->khATok); + + _INFO(""); + /*1. end*/ + tlv_builder_end_composite(builder); + + _INFO("DeRegReqTlvEncoder::encode end"); + return tlv_builder_get_buffer(builder); +} + +void * +DeRegReqTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("DeRegReqTlvEncoder::decode start"); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *root = tlv_decode(rawData); + RET_IF_FAIL(root != NULL, NULL); + RET_IF_FAIL(root->tag == TAG_UAFV1_DEREGISTER_CMD, NULL); + + int rawIter = 2 + 2; + int endIter = rawIter + root->len; + + tlv_s *child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + + DeregReq *getDeRegReqInfo = ALLOC(DeregReq); + + bool foundMember = false; + + while(1) { + + switch(child->tag) { + + case TAG_AUTHENTICATOR_INDEX: + getDeRegReqInfo->authIdx = *(int*)__intTlvEncoder.decode(rawData + rawIter); + _INFO("authIdx [%d]", getDeRegReqInfo->authIdx); + foundMember = true; + break; + + case TAG_APPID: + getDeRegReqInfo->appId = (char*)__strTlvEncoder.decode(rawData + rawIter); + _INFO("appId [%s]", getDeRegReqInfo->appId); + foundMember = true; + break; + + case TAG_KEYID: + getDeRegReqInfo->keyId = (char*)__strTlvEncoder.decode(rawData + rawIter); + _INFO("keyId [%s]", getDeRegReqInfo->keyId); + foundMember = true; + break; + + case TAG_KEYHANDLE_ACCESS_TOKEN: + getDeRegReqInfo->khATok = (Buffer*)__buffTlvEncoder.decode(rawData + rawIter); + _INFO("keyHandleAccessToken [%s]", getDeRegReqInfo->khATok); + foundMember = true; + break; + + default: + foundMember = false; + break; + } + + rawIter = rawIter + 2 + 2 + child->len; + if(rawIter >= endIter) + break; + + child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + } + + if(foundMember == false) { + free(getDeRegReqInfo); + return NULL; + } + + _INFO("DeRegReqTlvEncoder::decode end"); + return getDeRegReqInfo; +} diff --git a/common/uafv1tlvutil/src/DeRegRespTlvEncoder.cpp b/common/uafv1tlvutil/src/DeRegRespTlvEncoder.cpp new file mode 100644 index 0000000..f74e3c3 --- /dev/null +++ b/common/uafv1tlvutil/src/DeRegRespTlvEncoder.cpp @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "DeRegRespTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" + +DeRegRespTlvEncoder::DeRegRespTlvEncoder(void) +{ + +} + +Buffer * +DeRegRespTlvEncoder::encode(const void *authData) +{ + _INFO("DeRegRespTlvEncoder::encode start"); + RET_IF_FAIL(authData != NULL, NULL); + + DeregResp *getDeRegRespInfo = (DeregResp*)authData; + + tlv_builder_s *builder = tlv_builder_create(); + + /*1. TAG_UAFV1_DEREGISTER_CMD_RESPONSE*/ + tlv_builder_start_composite(builder, TAG_UAFV1_DEREGISTER_CMD_RESPONSE); + + /*1.2 TAG_STATUS_CODE*/ + tlv_builder_add_int16(builder, TAG_STATUS_CODE, getDeRegRespInfo->statusCode); + + /*1. end*/ + tlv_builder_end_composite(builder); + + _INFO("DeRegRespTlvEncoder::encode end"); + return tlv_builder_get_buffer(builder); +} + +void * +DeRegRespTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("DeRegRespTlvEncoder::decode start"); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *root = tlv_decode(rawData); + RET_IF_FAIL(root != NULL, NULL); + RET_IF_FAIL(root->tag == TAG_UAFV1_DEREGISTER_CMD_RESPONSE, NULL); + + DeregResp *getDeRegRespInfo = ALLOC(DeregResp); + + int rawIter = 2 + 2; + + tlv_s *child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + + bool foundMember = false; + + if(child->tag == TAG_STATUS_CODE) { + getDeRegRespInfo->statusCode = *(int*)__intTlvEncoder.decode(rawData + rawIter); + _INFO("statusCode [%d]", getDeRegRespInfo->statusCode); + foundMember = true; + } + + if(foundMember == false) { + free(getDeRegRespInfo); + return NULL; + } + + _INFO("DeRegRespTlvEncoder::decode end"); + return getDeRegRespInfo; +} diff --git a/common/uafv1tlvutil/src/GetInfoReqTlvEncoder.cpp b/common/uafv1tlvutil/src/GetInfoReqTlvEncoder.cpp new file mode 100644 index 0000000..19dfd5f --- /dev/null +++ b/common/uafv1tlvutil/src/GetInfoReqTlvEncoder.cpp @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + + +#include +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" + +GetInfoReqTlvEncoder::~GetInfoReqTlvEncoder(void) +{ +} + +Buffer * +GetInfoReqTlvEncoder::encode(const void *authData) +{ + _INFO("GetInfoReqTlvEncoder::encode start"); + + tlv_s *tlv = (tlv_s*)(calloc(1, sizeof(tlv_s))); + tlv->tag = TAG_UAFV1_GETINFO_CMD; + tlv->len = 0; + + _INFO("GetInfoReqTlvEncoder::encode end"); + return tlv_to_buffer(tlv); +} + +void* +GetInfoReqTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("GetInfoReqTlvEncoder::decode start"); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *root = tlv_decode(rawData); + RET_IF_FAIL(root != NULL, NULL); + RET_IF_FAIL(root->tag == TAG_UAFV1_GETINFO_CMD, NULL); + + GetInfoReq *getInfoReqInfo = ALLOC(GetInfoReq); + getInfoReqInfo->tag = TAG_UAFV1_GETINFO_CMD; + + _INFO("GetInfoReqTlvEncoder::decode end"); + return getInfoReqInfo; +} + +GetInfoReqTlvEncoder::GetInfoReqTlvEncoder(void) +{ +} + diff --git a/common/uafv1tlvutil/src/GetInfoRespTlvEncoder.cpp b/common/uafv1tlvutil/src/GetInfoRespTlvEncoder.cpp new file mode 100644 index 0000000..a08074f --- /dev/null +++ b/common/uafv1tlvutil/src/GetInfoRespTlvEncoder.cpp @@ -0,0 +1,678 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "GetInfoRespTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" + +#define GET_INT_FROM_BUFFER(val, ptr) do {\ + if ((ptr == NULL)) {\ + val = -1;\ + }\ + else {\ + val = *((int *)(ptr));\ + }\ +} while (0) + +#define GET_STR_FROM_BUFFER(val, ptr) do {\ + if ((ptr == NULL)) {\ + val = NULL;\ + }\ + else {\ + val = (char *)(ptr);\ + }\ +} while (0) + +#define CREATE_INT_TLV_BUFF(tagName, lenVal, valData, iter, rootBuff) do {\ + tlv_s *tlv = (tlv_s*)calloc(1, sizeof(tlv_s)); \ + tlv->tag = tagName; \ + tlv->len = lenVal; \ + tlv->val = (uint8_t*)calloc(1, sizeof(uint8_t));\ + *(tlv->val) = valData; \ +\ + Buffer *tlvBuff = __intTlvEncoder.encode(tlv); \ + rootBuff->len += tlvBuff->len; \ + memcpy(iter, tlvBuff->data, tlvBuff->len); \ + iter += tlvBuff->len; \ + } while (0) + +#define CREATE_STR_TLV_BUFF(tagName, lenVal, valData, iter, rootBuff) do {\ + if (valData != NULL) {\ + tlv_s *tlv = (tlv_s*)calloc(1, sizeof(tlv_s)); \ + tlv->tag = tagName; \ + tlv->len = lenVal; \ + tlv->val = (uint8_t *)valData; \ + \ + Buffer *tlvBuff = __strTlvEncoder.encode(tlv); \ + rootBuff->len += tlvBuff->len; \ + memcpy(iter, tlvBuff->data, tlvBuff->len); \ + iter += tlvBuff->len; \ + }\ + } while (0) + +AuthMetaTlvEncoder::AuthMetaTlvEncoder(void) +{ + +} + +Buffer * +AuthMetaTlvEncoder::encode(const void *authData) +{ + RET_IF_FAIL(authData != NULL, NULL); + + AuthenticatorMetaData *meta = (AuthenticatorMetaData*)authData; + + int metabuffLen = 2 * sizeof(uint8_t); + + metabuffLen += sizeof(uint8_t); + + metabuffLen += 4 * sizeof(uint8_t); + + metabuffLen += 2 * sizeof(uint8_t); + + metabuffLen += 2 * sizeof(uint8_t); + + metabuffLen += 2 * sizeof(uint8_t); + + metabuffLen += 2 * sizeof(uint8_t); + + Buffer *metaBuff = ALLOC(Buffer); + metaBuff->len = metabuffLen; + metaBuff->data = NALLOC(metaBuff->len, uint8_t); + uint8_t *iter = metaBuff->data; + + + + /*AuthenticatorType 2*/ + *iter = meta->authenticatorType & 0xFF; + iter++; + *iter = (meta->authenticatorType >> 8) & 0xFF; + iter++; + + /*MaxKeyHandles 1*/ + *iter = meta->maxKeyHandles & 0xFF; + iter++; + + /*UserVerification 4*/ + *iter = meta->userVerification & 0xFF; + iter++; + *iter = (meta->userVerification >> 8) & 0xFF; + iter++; + *iter = (meta->userVerification >> 16) & 0xFF; + iter++; + *iter = (meta->userVerification >> 24) & 0xFF; + iter++; + + /*KeyProtection 2*/ + *iter = meta->keyProtection & 0xFF; + iter++; + *iter = (meta->keyProtection >> 8) & 0xFF; + iter++; + + /*matcherProtection 2*/ + *iter = meta->matcherProtection & 0xFF; + iter++; + *iter = (meta->matcherProtection >> 8) & 0xFF; + iter++; + + /*TransactionConfirmationDisplay 2*/ + *iter = meta->transactionConfirmationDisplay & 0xFF; + iter++; + *iter = (meta->transactionConfirmationDisplay >> 8) & 0xFF; + iter++; + + /*AuthenticationAlg 2*/ + *iter = meta->authenticationAlg & 0xFF; + iter++; + *iter = (meta->authenticationAlg >> 8) & 0xFF; + iter++; + + return metaBuff; +} + +void* +AuthMetaTlvEncoder::decode(const uint8_t *rawData) +{ + _INFO("AuthMetaTlvEncoder start"); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *tlv = tlv_decode(rawData); + RET_IF_FAIL(tlv != NULL, NULL); + + _INFO("AuthMetaTlvEncoder after root decode"); + + uint8_t rawIter = 0; + uint8_t end_iter = tlv->len; + uint8_t *tlv_val = tlv->val; + + AuthenticatorMetaData *meta = (AuthenticatorMetaData*)calloc(1, sizeof(AuthenticatorMetaData)); + + meta->authenticatorType = tlv_get_int_by_reverse_endian(tlv_val, 2); + _INFO("authenticatorType [%d]", meta->authenticatorType); + rawIter += 2; + CATCH_IF_FAIL(rawIter < end_iter); + + meta->maxKeyHandles = tlv_get_int_by_reverse_endian(tlv_val + rawIter, 1); + _INFO("maxKeyHandles [%d]", meta->maxKeyHandles); + rawIter += 1; + CATCH_IF_FAIL(rawIter < end_iter); + + meta->userVerification = tlv_get_int_by_reverse_endian(tlv_val + rawIter, 4); + _INFO("userVerification [%d]", meta->userVerification); + rawIter += 4; + CATCH_IF_FAIL(rawIter < end_iter); + + meta->keyProtection = tlv_get_int_by_reverse_endian(tlv_val + rawIter, 2); + _INFO("keyProtection [%d]", meta->keyProtection); + rawIter += 2; + CATCH_IF_FAIL(rawIter < end_iter); + + meta->matcherProtection = tlv_get_int_by_reverse_endian(tlv_val+ rawIter, 2); + _INFO("matcherProtection [%d]", meta->matcherProtection); + rawIter += 2; + CATCH_IF_FAIL(rawIter < end_iter); + + meta->transactionConfirmationDisplay = tlv_get_int_by_reverse_endian(tlv_val + rawIter, 2); + _INFO("transactionConfirmationDisplay [%d]", meta->transactionConfirmationDisplay); + rawIter += 2; + CATCH_IF_FAIL(rawIter < end_iter); + + meta->authenticationAlg = tlv_get_int_by_reverse_endian(tlv_val + rawIter, 2); + _INFO("authenticationAlg [%d]", meta->authenticationAlg); + rawIter += 2; + + +CATCH: + _INFO("AuthMetaTlvEncoder end"); + return meta; +} + +TcDispPNGChTlvEncoder::TcDispPNGChTlvEncoder(void) +{ + +} + +Buffer * +TcDispPNGChTlvEncoder::encode(const void *authData) +{ + RET_IF_FAIL(authData != NULL, NULL); + + DisplayTc *disp = (DisplayTc*)authData; + + int tcDispBuffLen = 4*sizeof(uint8_t); + + tcDispBuffLen += 4*sizeof(uint8_t); + + tcDispBuffLen += 1*sizeof(uint8_t); + + tcDispBuffLen += 1*sizeof(uint8_t); + + tcDispBuffLen += 1*sizeof(uint8_t); + + tcDispBuffLen += 1*sizeof(uint8_t); + + tcDispBuffLen += 1*sizeof(uint8_t); + + tcDispBuffLen += strlen(disp->plte); + + Buffer *tcDispBuff = ALLOC(Buffer); + tcDispBuff->len = tcDispBuffLen; + tcDispBuff->data = NALLOC(tcDispBuffLen, uint8_t); + uint8_t *iter = tcDispBuff->data; + + /*1. Width*/ + *iter = (disp->width) & 0xFF; + iter++; + *iter = (disp->width >> 8) & 0xFF; + iter++; + *iter = (disp->width >> 16) & 0xFF; + iter++; + *iter = (disp->width >> 24) & 0xFF; + iter++; + + /*2. Height*/ + *iter = (disp->height) & 0xFF; + iter++; + *iter = (disp->height >> 8) & 0xFF; + iter++; + *iter = (disp->height >> 16) & 0xFF; + iter++; + *iter = (disp->height >> 24) & 0xFF; + iter++; + + /*3.BitDepth*/ + *iter = (disp->bitDepth) & 0xFF; + iter++; + + /*4. ColorType*/ + *iter = (disp->colorType) & 0xFF; + iter++; + + /*5. Compression*/ + *iter = (disp->compression) & 0xFF; + iter++; + + /*6. Filter*/ + *iter = (disp->filter) & 0xFF; + iter++; + + /*7. Interlace*/ + *iter = (disp->interlace) & 0xFF; + iter++; + + /*8. PLTE*/ + memcpy(iter, disp->plte, strlen(disp->plte)); + iter += strlen(disp->plte); + + return tcDispBuff; +} + +void* +TcDispPNGChTlvEncoder::decode(const uint8_t *rawData) +{ + _INFO("TcDispPNGChTlvEncoder start"); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s* root = tlv_decode(rawData); + RET_IF_FAIL(root != NULL, NULL); + + uint8_t rawIter = 0; + uint8_t endIter = root->len; + uint8_t *root_val = root->val; + + DisplayTc *getTcDsipPngChInfo = ALLOC(DisplayTc); + + getTcDsipPngChInfo->width = tlv_get_int_by_reverse_endian(root_val, 4); + _INFO("width [%d]", getTcDsipPngChInfo->width); + rawIter += 4; + CATCH_IF_FAIL(rawIter < endIter); + + getTcDsipPngChInfo->height = tlv_get_int_by_reverse_endian(root_val + rawIter, 4); + _INFO("height [%d]", getTcDsipPngChInfo->height); + rawIter += 4; + CATCH_IF_FAIL(rawIter < endIter); + + getTcDsipPngChInfo->bitDepth = tlv_get_int_by_reverse_endian(root_val + rawIter, 1); + _INFO("bitDepth [%d]", getTcDsipPngChInfo->bitDepth); + rawIter += 1; + CATCH_IF_FAIL(rawIter < endIter); + + getTcDsipPngChInfo->colorType = tlv_get_int_by_reverse_endian(root_val + rawIter, 1); + _INFO("colorType [%d]", getTcDsipPngChInfo->colorType); + rawIter += 1; + CATCH_IF_FAIL(rawIter < endIter); + + getTcDsipPngChInfo->compression = tlv_get_int_by_reverse_endian(root_val + rawIter, 1); + _INFO("compression [%d]", getTcDsipPngChInfo->compression); + rawIter += 1; + CATCH_IF_FAIL(rawIter < endIter); + + getTcDsipPngChInfo->filter = tlv_get_int_by_reverse_endian(root_val + rawIter, 1); + _INFO("filter [%d]", getTcDsipPngChInfo->filter); + rawIter += 1; + CATCH_IF_FAIL(rawIter < endIter); + + getTcDsipPngChInfo->interlace = tlv_get_int_by_reverse_endian(root_val + rawIter, 1); + _INFO("interlace [%d]", getTcDsipPngChInfo->interlace); + rawIter += 1; + CATCH_IF_FAIL(rawIter < endIter); + + getTcDsipPngChInfo->plte = (char*)calloc(1, 128); + memcpy(getTcDsipPngChInfo->plte, root_val + rawIter, endIter-rawIter); + _INFO("plte [%s]", getTcDsipPngChInfo->plte); + + +CATCH: + _INFO("TcDispPNGChTlvEncoder end"); + return getTcDsipPngChInfo; +} + +AuthInfoTlvEncoder::AuthInfoTlvEncoder(void) +{ + +} + +Buffer* +AuthInfoTlvEncoder::encode(const void *authData) +{ + return NULL; +} + +void* +AuthInfoTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("AuthInfoTlvEncoder start"); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *tlv = tlv_decode(rawData); + RET_IF_FAIL(tlv != NULL, NULL); + + _INFO("AuthInfoTlvEncoder after root decode"); + + int rawIter = 2 + 2; + int end_iter = rawIter + tlv->len; + _INFO("AuthInfoTlvEncoder TOTAL LEN = [%d] bytes", end_iter); + + tlv_s *child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + _INFO("AuthInfoTlvEncoder after child decode"); + + + AuthenticatorInfo *authInfo = (AuthenticatorInfo*)calloc(1, sizeof(AuthenticatorInfo)); + bool foundMember = false; + + while (1) { + + int attType = -1; + char *extId = NULL; + + switch (child->tag) { + + case TAG_AUTHENTICATOR_INDEX: + GET_INT_FROM_BUFFER(authInfo->__authenticatorIndex, (__intTlvEncoder.decode(rawData + rawIter))); + _INFO("__authenticatorIndex = [%d]", authInfo->__authenticatorIndex); + foundMember = true; + break; + + case TAG_AAID: + GET_STR_FROM_BUFFER(authInfo->__aaid, (__strTlvEncoder.decode(rawData + rawIter))); + _INFO("AAID = [%s]", authInfo->__aaid); + foundMember = true; + break; + + case TAG_AUTHENTICATOR_METADATA: + authInfo->__meta = (AuthenticatorMetaData *)(__authMetaTlvEncoder.decode(rawData + rawIter)); + foundMember = true; + break; + + case TAG_TC_DISPLAY_CONTENT_TYPE: + GET_STR_FROM_BUFFER(authInfo->__tcDispConType, (__strTlvEncoder.decode(rawData + rawIter))); + _INFO("tcDispConType = [%s]", authInfo->__tcDispConType); + foundMember = true; + break; + + case TAG_TC_DISPLAY_PNG_CHARACTERISTICS: { + + DisplayTc *getTcDispPNGChInfo = (DisplayTc*)(__tcDispPNGChTlvEncoder.decode(rawData + rawIter)); + if(getTcDispPNGChInfo != NULL) { + authInfo->__tcDisplayPNGCharacteristics = g_list_append(authInfo->__tcDisplayPNGCharacteristics, + getTcDispPNGChInfo); + getTcDispPNGChInfo = NULL; + } + foundMember = true; + break; + } + + case TAG_ASSERTION_SCHEME: + GET_STR_FROM_BUFFER(authInfo->__assertionScheme, (__strTlvEncoder.decode(rawData + rawIter))); + foundMember = true; + break; + + case TAG_ATTESTATION_TYPE: + GET_INT_FROM_BUFFER(attType, (__intTlvEncoder.decode(rawData + rawIter))); + if (attType != -1) + authInfo->__attestationTypes = g_list_append(authInfo->__attestationTypes, + GINT_TO_POINTER(attType)); + foundMember = true; + break; + + case TAG_SUPPORTED_EXTENSION_ID: + GET_STR_FROM_BUFFER(extId, __strTlvEncoder.decode(rawData + rawIter)); + if (extId != NULL) { + authInfo->__extList = g_list_append(authInfo->__extList, + extId); + extId = NULL; + } + foundMember = true; + break; + + default: + foundMember = false; + break; + + } + + rawIter = rawIter + 2 + 2 + child->len; + _INFO("AuthInfoTlvEncoder RAW ITER = [%d]", rawIter); + if (rawIter >= end_iter) + break; + + child = tlv_decode(rawData + rawIter); + } + + if (foundMember == false) { + free(authInfo); + return NULL; + } + + _INFO("AuthInfoTlvEncoder end"); + return authInfo; +} + +GetInfoRespTlvEncoder::GetInfoRespTlvEncoder(void) +{ + +} + +Buffer * +GetInfoRespTlvEncoder::encode(const void *authData) +{ + _INFO("GetInfoRespTlvEncoder::encode start"); + + RET_IF_FAIL(authData != NULL, NULL); + + _INFO("GetInfoRespTlvEncoder::encode start with valid ip"); + + GetAuthInfoResp *getInfoResp = (GetAuthInfoResp*)authData; + + _INFO("GetInfoRespTlvEncoder::encode 1"); + + tlv_builder_s *builder = tlv_builder_create(); + _INFO("GetInfoRespTlvEncoder::encode 2"); + /*1. TAG_UAFV1_GETINFO_CMD_RESPONSE start*/ + tlv_builder_start_composite(builder, TAG_UAFV1_GETINFO_CMD_RESPONSE); + _INFO("GetInfoRespTlvEncoder::encode 3"); + + /*1.2 TAG_STATUS_CODE*/ + tlv_builder_add_int16(builder, TAG_STATUS_CODE, getInfoResp->statusCode); + _INFO("GetInfoRespTlvEncoder::encode 4"); + + /*1.3 TAG_API_VERSION*/ + tlv_builder_add_int8(builder, TAG_API_VERSION, getInfoResp->apiVersion); + _INFO("GetInfoRespTlvEncoder::encode 5"); + + + if (getInfoResp->authList != NULL) { + + _INFO("GetInfoRespTlvEncoder::encode 6"); + GList *authIter = g_list_first(getInfoResp->authList); + while (authIter != NULL) { + _INFO("GetInfoRespTlvEncoder::encode 7"); + AuthenticatorInfo *auth = (AuthenticatorInfo*)(authIter->data); + + _INFO("GetInfoRespTlvEncoder::encode 8"); + /*1.4 TAG_AUTHENTICATOR_INFO*/ + tlv_builder_start_composite(builder, TAG_AUTHENTICATOR_INFO); + + _INFO("GetInfoRespTlvEncoder::encode 9"); + /*1.4.1 TAG_AUTHENTICATOR_INDEX*/ + tlv_builder_add_int8(builder, TAG_AUTHENTICATOR_INDEX, auth->__authenticatorIndex); + + _INFO("GetInfoRespTlvEncoder::encode 10"); + /*1.4.2 TAG_AAID*/ + tlv_builder_add_string(builder, TAG_AAID, auth->__aaid); + + if (auth->__meta != NULL) { + _INFO("GetInfoRespTlvEncoder::encode 11"); + + Buffer *metaBuff = __authMetaTlvEncoder.encode(auth->__meta); + if (metaBuff != NULL) { + + _INFO("GetInfoRespTlvEncoder::encode 12"); + /*1.4.3 TAG_AUTHENTICATOR_METADATA*/ + tlv_builder_add_buffer(builder, TAG_AUTHENTICATOR_METADATA, metaBuff); + } + } + + _INFO("GetInfoRespTlvEncoder::encode 13"); + /*1.4.4 TAG_TC_DISPLAY_CONTENT_TYPE*/ + if (auth->__tcDispConType != NULL) + tlv_builder_add_string(builder, TAG_TC_DISPLAY_CONTENT_TYPE, auth->__tcDispConType); + + _INFO("GetInfoRespTlvEncoder::encode 14"); + /*1.4.5 TAG_TC_DISPLAY_PNG_CHARACTERSTICS*/ + /* TODO __tcDispPNGChTlvEncoder causing crash + if(auth->__tcDisplayPNGCharacteristics != NULL) { + + GList *iter = g_list_first(auth->__tcDisplayPNGCharacteristics); + while(iter != NULL) { + _INFO("GetInfoRespTlvEncoder::encode 15"); + DisplayTc *disp = (DisplayTc*)(iter->data); + + _INFO("GetInfoRespTlvEncoder::encode 16"); + Buffer *tcDispBuff = __tcDispPNGChTlvEncoder.encode(disp); + + _INFO("GetInfoRespTlvEncoder::encode 17"); + tlv_builder_add_buffer(builder, TAG_TC_DISPLAY_PNG_CHARACTERISTICS, tcDispBuff); + + iter = iter->next; + } + }*/ + + _INFO("GetInfoRespTlvEncoder::encode 18"); + /*1.4.6 TAG_ASSERTION_SCHEME*/ + if (auth->__assertionScheme != NULL) + tlv_builder_add_string(builder, TAG_ASSERTION_SCHEME, auth->__assertionScheme); + + + _INFO("GetInfoRespTlvEncoder::encode 19"); + if (auth->__attestationTypes != NULL) { + + GList *attIter = g_list_first(auth->__attestationTypes); + while (attIter != NULL) { + _INFO("GetInfoRespTlvEncoder::encode 20"); + int att = GPOINTER_TO_INT(attIter->data); + /*1.4.7 TAG_ATTESTATION_TYPE*/ + _INFO("GetInfoRespTlvEncoder::encode 21"); + tlv_builder_add_int16(builder, TAG_ATTESTATION_TYPE, att); + attIter = attIter->next; + } + } + + _INFO("GetInfoRespTlvEncoder::encode 22"); + if(auth->__extList != NULL) { + + GList *extIter = g_list_first(auth->__extList); + while(extIter != NULL) { + _INFO("GetInfoRespTlvEncoder::encode 23"); + /*1.4.8 TAG_SUPPORTED_EXTENSION_ID*/ + tlv_builder_add_string(builder, TAG_SUPPORTED_EXTENSION_ID, (char*)extIter->data); + extIter = extIter->next; + } + } + + _INFO("GetInfoRespTlvEncoder::encode 24"); + /*1.4 end*/ + tlv_builder_end_composite(builder); + + _INFO("GetInfoRespTlvEncoder::encode 25"); + authIter = authIter->next; + } + } + + /*1 end*/ + tlv_builder_end_composite(builder); + _INFO("GetInfoRespTlvEncoder::encode 26"); + + _INFO("GetInfoRespTlvEncoder::encode end"); + return tlv_builder_get_buffer(builder); +} + +void* +GetInfoRespTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("GetInfoRespTlvEncoder::decode start"); + + RET_IF_FAIL(rawData != NULL, NULL); + + _INFO(""); + + GetAuthInfoResp *getInfoResp = (GetAuthInfoResp*)calloc(1, sizeof(GetAuthInfoResp)); + + AuthenticatorInfo *auth = NULL; + + tlv_s *root = tlv_decode(rawData); + RET_IF_FAIL(root != NULL, NULL); + + int rawIter = 2 + 2; + int end_iter = rawIter + root->len; + _INFO("GetInfoRespTlvEncoder TOTAL LEN = [%d] bytes", end_iter); + + RET_IF_FAIL(root->tag == TAG_UAFV1_GETINFO_CMD_RESPONSE, NULL); + + tlv_s *child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + + bool foundMember = false; + + while (1) { + + switch (child->tag) { + + case TAG_STATUS_CODE: + getInfoResp->statusCode = *((int *)(__intTlvEncoder.decode(rawData + rawIter))); + _INFO("statusCode = [%d]", getInfoResp->statusCode); + foundMember = true; + break; + + case TAG_API_VERSION: + getInfoResp->apiVersion = *((int *)(__intTlvEncoder.decode(rawData + rawIter))); + _INFO("apiVersion = [%d]", getInfoResp->apiVersion); + foundMember = true; + break; + + case TAG_AUTHENTICATOR_INFO: + auth = (AuthenticatorInfo*)__authInfoEncoder.decode(rawData + rawIter); + if (auth != NULL) { + getInfoResp->authList = g_list_append(getInfoResp->authList, auth); + auth = NULL; + } + foundMember = true; + break; + + default: + foundMember = false; + break; + } + _INFO("rawIter=[%d]", rawIter); + rawIter = rawIter + 2 + 2 + child->len; + if (rawIter >= end_iter) + break; + + child = tlv_decode(rawData + rawIter); + } + + if (foundMember == false) { + free(getInfoResp); + return NULL; + } + + _INFO("GetInfoRespTlvEncoder::decode end"); + + return getInfoResp; +} diff --git a/common/uafv1tlvutil/src/IntTlvEncoder.cpp b/common/uafv1tlvutil/src/IntTlvEncoder.cpp new file mode 100644 index 0000000..5c0f4b5 --- /dev/null +++ b/common/uafv1tlvutil/src/IntTlvEncoder.cpp @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "IntTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" + +IntTlvEncoder::IntTlvEncoder(void) +{ + +} + +Buffer * +IntTlvEncoder::encode(const void *intTlv) +{ + return NULL; +} + +void* +IntTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("IntTlvEncoder start"); + + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *tlv = tlv_decode(rawData); + RET_IF_FAIL(tlv != NULL, NULL); + + int val = 0; + int i = 0; + for (i = 0; i < (tlv->len); i++) { + + _INFO("tlv->val[i] = %d", tlv->val[i]); + + int b_val = tlv->val[i] << (i * 8); + + _INFO("b_val = %d", b_val); + + val |= b_val; + } + + _INFO("[%d]", val); + + int *val_ptr = (int *)calloc(1, sizeof(int)); + *val_ptr = val; + + _INFO("IntTlvEncoder end"); + + return val_ptr; +} diff --git a/common/uafv1tlvutil/src/RegAssertionInfoTlvEncoder.cpp b/common/uafv1tlvutil/src/RegAssertionInfoTlvEncoder.cpp new file mode 100644 index 0000000..928c166 --- /dev/null +++ b/common/uafv1tlvutil/src/RegAssertionInfoTlvEncoder.cpp @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "RegAssertionInfoTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" + +RegAssertionInfoTlvEncoder::RegAssertionInfoTlvEncoder(void) +{ + +} + +Buffer * +RegAssertionInfoTlvEncoder::encode(const void *authData) +{ + _INFO("AssertionInfoTlvEncoder::encode start"); + + RET_IF_FAIL(authData != NULL, NULL); + + _INFO("AssertionInfoTlvEncoder::encode start with valid ip"); + + AssertionInfo *getAssertionInfo = (AssertionInfo*)authData; + + int getAssertionInfoLen = 2 * sizeof(uint8_t); + + getAssertionInfoLen += 1 * sizeof(uint8_t); + + getAssertionInfoLen += 2 * sizeof(uint8_t); + + getAssertionInfoLen += 2 * sizeof(uint8_t); + + Buffer *getAssertionInfoBuff = ALLOC(Buffer); + getAssertionInfoBuff->len = getAssertionInfoLen; + getAssertionInfoBuff->data = NALLOC(getAssertionInfoLen, uint8_t); + uint8_t *iter = getAssertionInfoBuff->data; + + /*1. AuthenticatorVersion*/ + *iter = getAssertionInfo->authVersion & 0xFF; + iter++; + *iter = (getAssertionInfo->authVersion >> 8) & 0xFF; + iter++; + + /*2. AuthenticationMode*/ + *iter = getAssertionInfo->authMode & 0xFF; + iter++; + + /*3. SignatureAlgAndEncoding*/ + *iter = getAssertionInfo->signatureAlgAndEncoding & 0xFF; + iter++; + *iter = (getAssertionInfo->signatureAlgAndEncoding >> 8) & 0xFF; + iter++; + + /*4. PublicKeyAlgAndEncoding*/ + *iter = getAssertionInfo->publicKeyAlgAndEncoding & 0xFF; + iter++; + *iter = (getAssertionInfo->publicKeyAlgAndEncoding >> 8) & 0xFF; + iter++; + + _INFO("AssertionInfoTlvEncoder::encode end"); + return getAssertionInfoBuff; +} + +void * +RegAssertionInfoTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("RegAssertionInfoTlvEncoder::decode start"); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *root = tlv_decode(rawData); + RET_IF_FAIL(root != NULL, NULL); + + AssertionInfo *getAssertionInfo = ALLOC(AssertionInfo); + + uint8_t rawIter = 0; + uint8_t endIter = rawIter + root->len; + uint8_t *root_val = root->val; + + getAssertionInfo->authVersion = tlv_get_int_by_reverse_endian(root_val, 2); + _INFO("authVersion [%d]", getAssertionInfo->authVersion); + rawIter += 2; + CATCH_IF_FAIL(rawIter < endIter); + + getAssertionInfo->authMode = tlv_get_int_by_reverse_endian(root_val + rawIter, 1); + _INFO("authMode [%d]", getAssertionInfo->authMode); + rawIter += 1; + CATCH_IF_FAIL(rawIter < endIter); + + getAssertionInfo->signatureAlgAndEncoding = tlv_get_int_by_reverse_endian(root_val + rawIter, 2); + _INFO("signatureAlgAndEncoding [%d]", getAssertionInfo->signatureAlgAndEncoding); + rawIter += 2; + CATCH_IF_FAIL(rawIter < endIter); + + getAssertionInfo->publicKeyAlgAndEncoding = tlv_get_int_by_reverse_endian(root_val + rawIter, 2); + rawIter += 2; + _INFO("publicKeyAlgAndEncoding [%d]", getAssertionInfo->publicKeyAlgAndEncoding); + + +CATCH: + _INFO("RegAssertionInfoTlvEncoder::decode end"); + return getAssertionInfo; +} diff --git a/common/uafv1tlvutil/src/RegAuthAssertionTlvEncoder.cpp b/common/uafv1tlvutil/src/RegAuthAssertionTlvEncoder.cpp new file mode 100644 index 0000000..80ed1af --- /dev/null +++ b/common/uafv1tlvutil/src/RegAuthAssertionTlvEncoder.cpp @@ -0,0 +1,163 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "RegAuthAssertionTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" +#include "stdio.h" + +RegAuthAssertionTlvEncoder::RegAuthAssertionTlvEncoder(void) +{ + +} + +Buffer * +RegAuthAssertionTlvEncoder::encode(const void *authData) +{ + _BEGIN; + RET_IF_FAIL(authData != NULL, NULL); + + tlv_builder_s *builder = tlv_builder_create(); + RegAssertion *getRegAssertion = (RegAssertion*)authData; + + + /*1. TAG_UAFV1_REG_ASSERTION*/ + tlv_builder_start_composite(builder, TAG_UAFV1_REG_ASSERTION); + + if(getRegAssertion->krd != NULL) { + _INFO(""); + + Krd *getRegAssertionKrd = (Krd*)getRegAssertion->krd ; + Buffer *getRegAssertionKrdBuff = (Buffer*)__uafv1KrdTlvEncoder.encode(getRegAssertionKrd); + + tlv_s *getRegAssertionKrdTlv = tlv_decode(getRegAssertionKrdBuff->data); + + Buffer *regAssertionKrdBuff = ALLOC(Buffer); + regAssertionKrdBuff->len = getRegAssertionKrdTlv->len; + regAssertionKrdBuff->data = getRegAssertionKrdTlv->val; + tlv_builder_add_buffer(builder, TAG_UAFV1_KRD, regAssertionKrdBuff); + } + + if(getRegAssertion->attFull != NULL) { + + _INFO(""); + AttestationBasicFull *getAttBasicFullInfo = (AttestationBasicFull*)getRegAssertion->attFull; + Buffer *getAttBasicFullBuffInfo = (Buffer*)__attBasicFullTlvEncoder.encode(getAttBasicFullInfo); + + tlv_s *getAttBasicFullInfoTlv = tlv_decode(getAttBasicFullBuffInfo->data); + + Buffer *attBasicFullBuff = ALLOC(Buffer); + attBasicFullBuff->len = getAttBasicFullInfoTlv->len; + attBasicFullBuff->data = getAttBasicFullInfoTlv->val; + tlv_builder_add_buffer(builder, TAG_ATTESTATION_BASIC_FULL, attBasicFullBuff); + } + else if(getRegAssertion->attSur != NULL) { + + _INFO(""); + AttestationBasicSurrogate *getAttSurrInfo = (AttestationBasicSurrogate*)getRegAssertion->attSur; + Buffer *getAttBasicSurrInfoBuff = (Buffer*)__attBasicSurrTlvEncoder.encode(getAttSurrInfo); + + tlv_s *getAttBasicSurrInfoTlv = tlv_decode(getAttBasicSurrInfoBuff->data); + + Buffer *attBasicSurrBuff = ALLOC(Buffer); + attBasicSurrBuff->len = getAttBasicSurrInfoTlv->len; + attBasicSurrBuff->data = getAttBasicSurrInfoTlv->val; + tlv_builder_add_buffer(builder, TAG_ATTESTATION_BASIC_SURROGATE, attBasicSurrBuff); + } + else { + + _ERR("No option of AttestationBasic is set"); + return NULL; + } + + /*1. end*/ + tlv_builder_end_composite(builder); + + _END; + return tlv_builder_get_buffer(builder); +} + +void * +RegAuthAssertionTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("RegAuthAssertionTlvEncoder::decode start"); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *root = tlv_decode(rawData); + RET_IF_FAIL(root != NULL, NULL); + RET_IF_FAIL(root->tag == TAG_UAFV1_REG_ASSERTION, NULL); + + RegAssertion *getRegAssertionInfo = ALLOC(RegAssertion); + + bool foundMember = false; + + + int rawIter = 2 + 2; + int endIter = rawIter + root->len; + + tlv_s *child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + + while(1) { + + switch(child->tag) { + + case TAG_UAFV1_KRD: + _INFO(""); + getRegAssertionInfo->krd = (Krd*)__uafv1KrdTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_ATTESTATION_BASIC_FULL: + _INFO(""); + getRegAssertionInfo->attFull = (AttestationBasicFull*)__attBasicFullTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_ATTESTATION_BASIC_SURROGATE: + _INFO(""); + getRegAssertionInfo->attSur = (AttestationBasicSurrogate*)__attBasicSurrTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + default: + _INFO(""); + foundMember = false; + break; + } + + _INFO(""); + rawIter = rawIter + 2 + 2 + child->len; + if(rawIter >= endIter) + break; + + _INFO(""); + child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + } + + _INFO(""); + if(foundMember == false) { + _INFO(""); + free(getRegAssertionInfo); + return NULL; + } + + _INFO("RegAuthAssertionTlvEncoder::decode end"); + return getRegAssertionInfo; +} diff --git a/common/uafv1tlvutil/src/RegCountersInfoTlvEncoder.cpp b/common/uafv1tlvutil/src/RegCountersInfoTlvEncoder.cpp new file mode 100644 index 0000000..d2ce9c7 --- /dev/null +++ b/common/uafv1tlvutil/src/RegCountersInfoTlvEncoder.cpp @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "RegCountersInfoTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" + +RegCountersInfoTlvEncoder::RegCountersInfoTlvEncoder(void) +{ + +} + +Buffer * +RegCountersInfoTlvEncoder::encode(const void *authData) +{ + _INFO("CountersInfoTlvEncoder::encode start"); + + RET_IF_FAIL(authData != NULL, NULL); + + _INFO("CountersInfoTlvEncoder::encode start with valid ip"); + + Counters *getCountersInfo = (Counters*)authData; + + int getCountersInfoLen = 4 * sizeof(uint8_t); + + getCountersInfoLen += 4 * sizeof(uint8_t); + + Buffer *getCountersInfoBuff = ALLOC(Buffer); + getCountersInfoBuff->len = getCountersInfoLen; + getCountersInfoBuff->data = NALLOC(getCountersInfoLen, uint8_t); + uint8_t *iter = getCountersInfoBuff->data; + + /*1. SignCounter*/ + *iter = getCountersInfo->signCounter & 0xFF; + iter++; + *iter = (getCountersInfo->signCounter >> 8) & 0xFF; + iter++; + *iter = (getCountersInfo->signCounter >> 16) & 0xFF; + iter++; + *iter = (getCountersInfo->signCounter >> 24) & 0xFF; + iter++; + + /*2. RegCounter*/ + *iter = getCountersInfo->regCounter & 0xFF; + iter++; + *iter = (getCountersInfo->regCounter >> 8) & 0xFF; + iter++; + *iter = (getCountersInfo->regCounter >> 16) & 0xFF; + iter++; + *iter = (getCountersInfo->regCounter >> 24) & 0xFF; + iter++; + + _INFO("CountersInfoTlvEncoder::encode end"); + return getCountersInfoBuff; +} + +void * +RegCountersInfoTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("RegCountersInfoTlvEncoder::decode end"); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *root = tlv_decode(rawData); + RET_IF_FAIL(root != NULL, NULL); + + Counters *getCountersInfo = ALLOC(Counters); + + uint8_t rawIter = 0; + uint8_t endIter = rawIter + root->len; + uint8_t *root_val = root->val; + + getCountersInfo->signCounter = tlv_get_int_by_reverse_endian(root_val, 4); + _INFO("signCounter [%d]", getCountersInfo->signCounter); + rawIter += 4; + CATCH_IF_FAIL(rawIter < endIter); + + getCountersInfo->regCounter = tlv_get_int_by_reverse_endian(root_val + rawIter, 4); + _INFO("regCounter [%d]", getCountersInfo->regCounter); + rawIter += 4; + +CATCH: + _INFO("RegCountersInfoTlvEncoder::decode end"); + return getCountersInfo; +} diff --git a/common/uafv1tlvutil/src/RegReqTlvEncoder.cpp b/common/uafv1tlvutil/src/RegReqTlvEncoder.cpp new file mode 100644 index 0000000..9d75efa --- /dev/null +++ b/common/uafv1tlvutil/src/RegReqTlvEncoder.cpp @@ -0,0 +1,170 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "RegReqTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" + +RegAssertionTlvEncoder::RegAssertionTlvEncoder(void) +{ + +} + +Buffer * +RegAssertionTlvEncoder::encode(const void *authData) +{ + + _INFO("RegAssertionTlvEncoder::encode start"); + + RET_IF_FAIL(authData != NULL, NULL); + + _INFO("RegAssertionTlvEncoder::encode start with valid ip"); + + + RegisterReq *getRegReq = (RegisterReq*)authData; + _INFO("RegAssertionTlvEncoder::encode 2"); + + tlv_builder_s *builder = tlv_builder_create(); + _INFO("RegAssertionTlvEncoder::encode 3"); + + tlv_builder_start_composite(builder, TAG_UAFV1_REGISTER_CMD); + _INFO("RegAssertionTlvEncoder::encode 4"); + + tlv_builder_add_int8(builder, TAG_AUTHENTICATOR_INDEX, getRegReq->authIdx); + _INFO("RegAssertionTlvEncoder::encode 5"); + + if(getRegReq->appId != NULL) { + tlv_builder_add_string(builder, TAG_APPID, getRegReq->appId); + _INFO("RegAssertionTlvEncoder::encode 6"); + } + + tlv_builder_add_buffer(builder, TAG_FINAL_CHALLENGE, getRegReq->fch); + _INFO("RegAssertionTlvEncoder::encode 7"); + + tlv_builder_add_string(builder, TAG_USERNAME, getRegReq->userName); + _INFO("RegAssertionTlvEncoder::encode 8"); + + tlv_builder_add_int16(builder, TAG_ATTESTATION_TYPE, getRegReq->attType); + _INFO("RegAssertionTlvEncoder::encode 9"); + + tlv_builder_add_buffer(builder, TAG_KEYHANDLE_ACCESS_TOKEN, getRegReq->khAccessToken); + _INFO("RegAssertionTlvEncoder::encode 10"); + + if(getRegReq->userVToken != NULL) { + tlv_builder_add_string(builder, TAG_USERVERIFY_TOKEN, getRegReq->userVToken); + _INFO("RegAssertionTlvEncoder::encode 11"); + } + + tlv_builder_end_composite(builder); + _INFO("RegAssertionTlvEncoder::encode 12"); + + return tlv_builder_get_buffer(builder); +} + +void* +RegAssertionTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("RegAssertionInfoTlvEncoder::decode start"); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s* root = tlv_decode(rawData); + RET_IF_FAIL(root != NULL, NULL); + RET_IF_FAIL(root->tag == TAG_UAFV1_REGISTER_CMD, NULL); + + int rawIter = 2 + 2; + int endIter = rawIter + root->len; + + tlv_s* child = tlv_decode(root->val); + RET_IF_FAIL(child != NULL, NULL); + + bool foundMember = false; + RegisterReq *getRegReqInfo = ALLOC(RegisterReq); + + while(1) { + switch(child->tag) { + + case TAG_AUTHENTICATOR_INDEX: + _INFO(""); + getRegReqInfo->authIdx = *(int*)__intTlvEncoder.decode(rawData + rawIter); + _INFO("authIdx = [%d]", getRegReqInfo->authIdx); + foundMember = true; + break; + + case TAG_APPID: + _INFO(""); + getRegReqInfo->appId = (char*)__strTlvEncoder.decode(rawData + rawIter); + _INFO("appId = [%d]", getRegReqInfo->appId); + foundMember = true; + break; + + case TAG_FINAL_CHALLENGE: + _INFO(""); + getRegReqInfo->fch = (Buffer*)__buffTlvEncoder.decode(rawData + rawIter); + _INFO("finalChallenge = [%s]", getRegReqInfo->fch); + foundMember = true; + break; + + case TAG_USERNAME: + _INFO(""); + getRegReqInfo->userName = (char*)__strTlvEncoder.decode(rawData + rawIter); + _INFO("userName = [%s]", getRegReqInfo->userName); + foundMember = true; + break; + + case TAG_ATTESTATION_TYPE: + _INFO(""); + getRegReqInfo->attType = *(int*)__intTlvEncoder.decode(rawData + rawIter); + _INFO("attType = [%d]", getRegReqInfo->attType); + foundMember = true; + break; + + case TAG_KEYHANDLE_ACCESS_TOKEN: + _INFO(""); + getRegReqInfo->khAccessToken = (Buffer*)__buffTlvEncoder.decode(rawData + rawIter); + _INFO("khAccessToken = [%s]", getRegReqInfo->khAccessToken->data); + foundMember = true; + break; + + case TAG_USERVERIFY_TOKEN: + _INFO(""); + getRegReqInfo->userVToken = (char*)__strTlvEncoder.decode(rawData + rawIter); + _INFO("userVToken = [%s]", getRegReqInfo->userVToken); + foundMember = true; + break; + + default: + foundMember = false; + break; + } + + rawIter = rawIter + 2 + 2 + child->len; + if(rawIter >= endIter) + break; + + child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + } + + if(foundMember == false) { + free(getRegReqInfo); + return NULL; + } + + _INFO("RegAssertionInfoTlvEncoder::decode end"); + return getRegReqInfo; +} diff --git a/common/uafv1tlvutil/src/RegRespTlvEncoder.cpp b/common/uafv1tlvutil/src/RegRespTlvEncoder.cpp new file mode 100644 index 0000000..639cbf8 --- /dev/null +++ b/common/uafv1tlvutil/src/RegRespTlvEncoder.cpp @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "RegRespTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" + +RegRespTlvEncoder::RegRespTlvEncoder(void) +{ + +} + +Buffer * +RegRespTlvEncoder::encode(const void *authData) +{ + _INFO("RegRespTlvEncoder::encode start"); + + RET_IF_FAIL(authData != NULL, NULL); + + _INFO("RegRespTlvEncoder::encode start with valid ip"); + + RegisterResp *getRegResp = (RegisterResp*)authData; + + tlv_builder_s *builder = tlv_builder_create(); + + /*1 TAG_UAFV1_REGISTER_CMD_RESPONSE*/ + tlv_builder_start_composite(builder, TAG_UAFV1_REGISTER_CMD_RESPONSE); + + /*1.2 TAG_STATUS_CODE*/ + tlv_builder_add_int16(builder, TAG_STATUS_CODE, getRegResp->statusCode); + + /*1.3 TAG_AUTHENTICATOR_ASSERTION*/ + RegAssertion *getRegAssertion = NULL; + getRegAssertion = (RegAssertion*)getRegResp->regAssertion; + Buffer *getRegAssertionBuff = (Buffer*)__regAuthAssertion.encode(getRegAssertion); + + tlv_builder_add_buffer(builder, TAG_AUTHENTICATOR_ASSERTION, getRegAssertionBuff); + /*1.3 end*/ + + /*1.4 TAG_KEYHANDLE*/ + if(getRegResp->kh != NULL) { + tlv_builder_add_buffer(builder, TAG_KEYHANDLE, getRegResp->kh); + } + + tlv_builder_end_composite(builder); + + return tlv_builder_get_buffer(builder); +} + +void* +RegRespTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("RegRespTlvEncoder::decode start"); + RET_IF_FAIL(rawData != NULL, NULL); + + RegisterResp *getRegRespInfo = ALLOC(RegisterResp); + + tlv_s *root = tlv_decode(rawData); + RET_IF_FAIL(root != NULL, NULL); + RET_IF_FAIL(root->tag == TAG_UAFV1_REGISTER_CMD_RESPONSE, NULL); + + int rawIter = 2 + 2; + int endIter = rawIter + root->len; + + tlv_s *child = tlv_decode(root->val); + RET_IF_FAIL(child != NULL, NULL); + + bool foundMember = false; + + while(1) { + + switch(child->tag) { + + case TAG_STATUS_CODE: + _INFO(""); + getRegRespInfo->statusCode = *(int*)__intTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_AUTHENTICATOR_ASSERTION: + _INFO(""); + getRegRespInfo->regAssertion = (RegAssertion*)__regAuthAssertion.decode(rawData + rawIter + 2 + 2); + //TODO : ERROR CHECKING + foundMember = true; + break; + + case TAG_KEYHANDLE: + _INFO(""); + getRegRespInfo->kh = (Buffer*)__buffTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + default: + _INFO("Unknown tag=[%d]", child->tag); + foundMember = false; + break; + } + + _INFO(""); + rawIter = rawIter + 2 + 2 + child->len; + if(rawIter >= endIter) { + _INFO(""); + break; + } + + _INFO(""); + child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + } + + _INFO(""); + if(foundMember == false) { + _INFO(""); + free(getRegRespInfo); + return NULL; + } + + _INFO("RegRespTlvEncoder::decode end"); + return getRegRespInfo; +} diff --git a/common/uafv1tlvutil/src/SignAuthAssertionTlvEncoder.cpp b/common/uafv1tlvutil/src/SignAuthAssertionTlvEncoder.cpp new file mode 100644 index 0000000..49bf21e --- /dev/null +++ b/common/uafv1tlvutil/src/SignAuthAssertionTlvEncoder.cpp @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "SignAuthAssertionTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" + +SignAuthAssertionTlvEncoder::SignAuthAssertionTlvEncoder(void) +{ + +} + +Buffer * +SignAuthAssertionTlvEncoder::encode(const void *authData) +{ + _BEGIN; + RET_IF_FAIL(authData != NULL, NULL); + + AuthAssertion *getAuthAssertionInfo = (AuthAssertion*)authData; + + tlv_builder_s *builder = tlv_builder_create(); + + /*1. TAG_UAFV1_AUTH_ASSERTION*/ + tlv_builder_start_composite(builder, TAG_UAFV1_AUTH_ASSERTION); + + if(getAuthAssertionInfo->sigData != NULL) { + + /*1.2 TAG_UAFV1_SIGNED_DATA*/ + + SigData *getSigDataInfo = (SigData*)getAuthAssertionInfo->sigData; + Buffer *getSigDataInfoBuff = (Buffer*)__sigDataTlvEncoder.encode(getSigDataInfo); + + tlv_s *getSigDataInfoTlv = tlv_decode(getSigDataInfoBuff->data); + + Buffer *getSigDataBuff = ALLOC(Buffer); + getSigDataBuff->len = getSigDataInfoTlv->len; + getSigDataBuff->data = getSigDataInfoTlv->val; + + tlv_builder_add_buffer(builder, TAG_UAFV1_SIGNED_DATA, getSigDataBuff); + + /*1.2 end*/ + } + + /*1.3 TAG_SIGNATURE*/ + tlv_builder_add_buffer(builder, TAG_SIGNATURE, getAuthAssertionInfo->sig); + + /*1. end*/ + tlv_builder_end_composite(builder); + + _END; + return tlv_builder_get_buffer(builder); +} + +void * +SignAuthAssertionTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("SignAuthAssertionTlvEncoder::decode start"); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *root = tlv_decode(rawData); + RET_IF_FAIL(root != NULL, NULL); + RET_IF_FAIL(root->tag == TAG_UAFV1_AUTH_ASSERTION, NULL); + + int rawIter = 2 + 2; + AuthAssertion *getAuthAssInfo = ALLOC(AuthAssertion); + + + bool foundMember = false; + + + int endIter = rawIter + root->len; + + tlv_s *child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + + while(1) { + + switch(child->tag) { + + case TAG_UAFV1_SIGNED_DATA: + getAuthAssInfo->sigData = (SigData*)__sigDataTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_SIGNATURE: + getAuthAssInfo->sig = (Buffer*)__buffTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + default: + foundMember = false; + break; + } + rawIter = rawIter + 2 + 2 + child->len; + if(rawIter >= endIter) + break; + + child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + } + + if(foundMember == false) { + free(getAuthAssInfo); + return NULL; + } + + _INFO("SignAuthAssertionTlvEncoder::decode end"); + return getAuthAssInfo; +} diff --git a/common/uafv1tlvutil/src/SignReqTlvEncoder.cpp b/common/uafv1tlvutil/src/SignReqTlvEncoder.cpp new file mode 100644 index 0000000..12f49e5 --- /dev/null +++ b/common/uafv1tlvutil/src/SignReqTlvEncoder.cpp @@ -0,0 +1,176 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "SignReqTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" + +SignReqTlvEncoder::SignReqTlvEncoder(void) +{ + +} + +Buffer * +SignReqTlvEncoder::encode(const void *authData) +{ + _INFO("SignReqTlvEncoder::encode start"); + + RET_IF_FAIL(authData != NULL, NULL); + + _INFO("SignReqTlvEncoder::encode start with valid ip"); + + AuthenticateReq *getAuthReqInfo = (AuthenticateReq*)authData; + + + tlv_builder_s *builder = tlv_builder_create(); + + /*1. TAG_UAFV1_SIGN_CMD*/ + tlv_builder_start_composite(builder, TAG_UAFV1_SIGN_CMD); + + /*1.2 TAG_AUTHENTICATOR_INDEX*/ + tlv_builder_add_int8(builder, TAG_AUTHENTICATOR_INDEX, getAuthReqInfo->authIdx); + + if(getAuthReqInfo->appId != NULL) { + + /*1.3 TAG_APPID*/ + tlv_builder_add_string(builder, TAG_APPID, getAuthReqInfo->appId); + } + + /*1.4 TAG_FINAL_CHALLENGE*/ + tlv_builder_add_buffer(builder, TAG_FINAL_CHALLENGE, getAuthReqInfo->fch); + + if(getAuthReqInfo->tc != NULL) { + + /*1.5 TAG_TRANSACTION_CONTENT*/ + tlv_builder_add_string(builder, TAG_TRANSACTION_CONTENT, getAuthReqInfo->tc); + } + + /*1.6 TAG_KEYHANDLE_ACCESS_TOKEN*/ + tlv_builder_add_buffer(builder, TAG_KEYHANDLE_ACCESS_TOKEN, getAuthReqInfo->khATok); + + if(getAuthReqInfo->userVToken != NULL) { + + /*1.7 TAG_USERVERIFY_TOKEN*/ + tlv_builder_add_string(builder, TAG_USERVERIFY_TOKEN, getAuthReqInfo->userVToken); + } + + if(getAuthReqInfo->khHList != NULL) { + + GList *getKhInfoIter = g_list_first(getAuthReqInfo->khHList); + + while(getKhInfoIter != NULL) { + char *getKhInfo = (char*)(getKhInfoIter->data); + + /*1.8 TAG_KEYHANDLE*/ + tlv_builder_add_string(builder, TAG_KEYHANDLE, getKhInfo); + + getKhInfoIter = getKhInfoIter->next; + } + } + + tlv_builder_end_composite(builder); + + return tlv_builder_get_buffer(builder); +} + +void * +SignReqTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("SignReqTlvEncoder::decode start"); + + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *root = tlv_decode(rawData); + RET_IF_FAIL(root != NULL, NULL); + RET_IF_FAIL(root->tag == TAG_UAFV1_SIGN_CMD, NULL); + + int rawIter = 2 + 2; + int endIter = rawIter + root->len; + + AuthenticateReq *getAuthReqInfo = NALLOC(1, AuthenticateReq); + + tlv_s *child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + + bool foundMember = false; + + while(1) { + + switch(child->tag) { + + case TAG_AUTHENTICATOR_INDEX: + getAuthReqInfo->authIdx = *(int*)__intTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_APPID: + getAuthReqInfo->appId = (char*)__strTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_FINAL_CHALLENGE: + getAuthReqInfo->fch = (Buffer*)__buffTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_TRANSACTION_CONTENT: + getAuthReqInfo->tc = (char*)__strTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_KEYHANDLE_ACCESS_TOKEN: + getAuthReqInfo->khATok = (Buffer*)__buffTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_USERVERIFY_TOKEN: + getAuthReqInfo->userVToken = (char*)__strTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_KEYHANDLE: { + char *getKeyHandle = (char*)__strTlvEncoder.decode(rawData + rawIter); + if(getKeyHandle != NULL) { + getAuthReqInfo->khHList = g_list_append(getAuthReqInfo->khHList, getKeyHandle); + getKeyHandle = NULL; + } + foundMember = true; + break; + } + + default: + foundMember = false; + break; + } + + rawIter = rawIter + 2 + 2 + child->len; + if(rawIter >= endIter) + break; + + child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + } + + if(foundMember == false) { + free(getAuthReqInfo); + return NULL; + } + + _INFO("SignReqTlvEncoder::decode end"); + return getAuthReqInfo; +} diff --git a/common/uafv1tlvutil/src/SignRespTlvEncoder.cpp b/common/uafv1tlvutil/src/SignRespTlvEncoder.cpp new file mode 100644 index 0000000..98a71ad --- /dev/null +++ b/common/uafv1tlvutil/src/SignRespTlvEncoder.cpp @@ -0,0 +1,221 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "SignRespTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" + +UserNameKhTlvEncoder::UserNameKhTlvEncoder(void) +{ + +} + +Buffer * +UserNameKhTlvEncoder::encode(const void *authData) +{ + return NULL; +} + +void * +UserNameKhTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("UserNameKhTlvEncoder::decode start"); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *root = tlv_decode(rawData); + RET_IF_FAIL(root->tag == TAG_USERNAME_AND_KEYHANDLE, NULL); + RET_IF_FAIL(root != NULL, NULL); + + int rawIter = 2 + 2; + int endIter = rawIter + root->len; + + UserNameKeyHandle *getUsnKhInfo = ALLOC(UserNameKeyHandle); + + tlv_s *child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + + bool foundMember = false; + + while(1) { + + switch(child->tag) { + + case TAG_USERNAME: + getUsnKhInfo->userName = (char*)__strTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_KEYHANDLE: + getUsnKhInfo->kh = (Buffer*)__buffTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + default: + foundMember = false; + break; + } + rawIter = rawIter + 2 + 2 + child->len; + if(rawIter >= endIter) + break; + + child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + } + + if(foundMember == false) { + free(getUsnKhInfo); + return NULL; + } + + _INFO("UserNameKhTlvEncoder::decode end"); + return getUsnKhInfo; +} + +SignRespTlvEncoder::SignRespTlvEncoder(void) +{ + +} + +Buffer * +SignRespTlvEncoder::encode(const void *authData) +{ + _INFO("SignRespTlvEncoder::encode start"); + RET_IF_FAIL(authData != NULL, NULL); + + AuthenticateResp *getAuthRespInfo = (AuthenticateResp*)authData; + + tlv_builder_s *builder = tlv_builder_create(); + + /*1. TAG_UAFV1_SIGN_CMD_RESPONSE*/ + tlv_builder_start_composite(builder, TAG_UAFV1_SIGN_CMD_RESPONSE); + + /*1.1 TAG_STATUS_CODE*/ + tlv_builder_add_int16(builder, TAG_STATUS_CODE, getAuthRespInfo->statusCode); + + if(getAuthRespInfo->uKhList != NULL) { + + _INFO("SignRespTlvEncoder::uKhList"); + GList *iter = g_list_first(getAuthRespInfo->uKhList); + while(iter != NULL) { + /*1.3 TAG_USERNAME_AND_KEYHANDLE*/ + tlv_builder_start_composite(builder, TAG_USERNAME_AND_KEYHANDLE); + + UserNameKeyHandle *getUserKhInfo = (UserNameKeyHandle*)(iter->data); + + /*1.3.2 TAG_USERNAME*/ + tlv_builder_add_string(builder, TAG_USERNAME, getUserKhInfo->userName); + + /*1.3.3 TAG_KEYHANDLE*/ + tlv_builder_add_buffer(builder, TAG_KEYHANDLE, getUserKhInfo->kh); + + tlv_builder_end_composite(builder); + + iter = iter->next; + } + } + else if(getAuthRespInfo->authAssertion != NULL) { + + _INFO("SignRespTlvEncoder::authAssertion"); + /*1.3 TAG_AUTHENTICATOR_ASSERTION*/ + + AuthAssertion *getAuthAssertionInfo = (AuthAssertion*)getAuthRespInfo->authAssertion; + Buffer *getAuthAssertionInfoBuff = (Buffer*)__signAuthAssertionInfo.encode(getAuthAssertionInfo); + + tlv_builder_add_buffer(builder, TAG_AUTHENTICATOR_ASSERTION, getAuthAssertionInfoBuff); + + /*1.3 end*/ + } + else { + + _ERR("Neither UsernameKeyhandle List nor Authentication Assertion is set"); + return NULL; + } + + /*1. end*/ + tlv_builder_end_composite(builder); + + _INFO("SignRespTlvEncoder::encode end"); + return tlv_builder_get_buffer(builder); +} + +void * +SignRespTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("SignRespTlvEncoder::decode start."); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *root = tlv_decode(rawData); + RET_IF_FAIL(root->tag == TAG_UAFV1_SIGN_CMD_RESPONSE, NULL); + RET_IF_FAIL(root != NULL, NULL); + + int rawIter = 2 + 2; + int endIter = rawIter + root->len; + + AuthenticateResp *getAuthRespInfo = NALLOC(1, AuthenticateResp); + + tlv_s *child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + + bool foundMember = false; + + while(1) { + + switch(child->tag) { + + case TAG_STATUS_CODE: + getAuthRespInfo->statusCode = *(int*)__intTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_USERNAME_AND_KEYHANDLE: { + _INFO("SignRespTlvEncoder::decode TAG_USERNAME_AND_KEYHANDLE"); + UserNameKeyHandle *uKhInfo = (UserNameKeyHandle*)__uKhTlvEncoder.decode(rawData + rawIter); + if(uKhInfo != NULL) { + getAuthRespInfo->uKhList = g_list_append(getAuthRespInfo->uKhList, uKhInfo); + uKhInfo = NULL; + } + } + foundMember = true; + break; + + case TAG_AUTHENTICATOR_ASSERTION: + _INFO("SignRespTlvEncoder::decode TAG_AUTHENTICATOR_ASSERTION"); + getAuthRespInfo->authAssertion = (AuthAssertion*)__signAuthAssertionInfo.decode(rawData + rawIter + 2 + 2); + foundMember = true; + break; + + default: + foundMember = false; + break; + } + rawIter = rawIter + 2 + 2 + child->len; + if(rawIter >= endIter) + break; + + child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + } + + if(foundMember == false) { + free(getAuthRespInfo); + return NULL; + } + + _INFO("SignRespTlvEncoder::decode end"); + return getAuthRespInfo; +} diff --git a/common/uafv1tlvutil/src/SignedDataTlvEncoder.cpp b/common/uafv1tlvutil/src/SignedDataTlvEncoder.cpp new file mode 100644 index 0000000..c147cce --- /dev/null +++ b/common/uafv1tlvutil/src/SignedDataTlvEncoder.cpp @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "SignedDataTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" + +SignedDataTlvEncoder::SignedDataTlvEncoder(void) +{ + +} + +Buffer * +SignedDataTlvEncoder::encode(const void *authData) +{ + _BEGIN; + RET_IF_FAIL(authData != NULL, NULL); + + SigData *getSigDataInfo = (SigData*)authData; + + tlv_builder_s *builder = tlv_builder_create(); + + /*1.2 TAG_UAFV1_SIGNED_DATA*/ + tlv_builder_start_composite(builder, TAG_UAFV1_SIGNED_DATA); + + /*1.2.2 TAG_AAID*/ + tlv_builder_add_string(builder, TAG_AAID, getSigDataInfo->aaid); + + if(getSigDataInfo->assrtInfo != NULL) { + + Buffer *getAssertionInfoBuff = __assertionInfo.encode(getSigDataInfo->assrtInfo); + if(getAssertionInfoBuff != NULL) { + + /*1.2.3 TAG_ASSERTION_INFO*/ + tlv_builder_add_buffer(builder, TAG_ASSERTION_INFO, getAssertionInfoBuff); + } + } + + /*1.2.4 TAG_AUTHENTICATOR_NONCE*/ + tlv_builder_add_buffer(builder, TAG_AUTHENTICATOR_NONCE, getSigDataInfo->authNonce); + + /*1.2.5 TAG_FINAL_CHALLENGE*/ + tlv_builder_add_buffer(builder, TAG_FINAL_CHALLENGE, getSigDataInfo->fch); + + /*1.2.6 TAG_TRANSACTION_CONTENT_HASH*/ + tlv_builder_add_buffer(builder, TAG_TRANSACTION_CONTENT_HASH, getSigDataInfo->tcHash); + + /*1.2.7 TAG_KEYID*/ + tlv_builder_add_buffer(builder, TAG_KEYID, getSigDataInfo->keyId); + + if(getSigDataInfo->counter != NULL) { + + Buffer *getCounterInfoBuff = __counterInfo.encode(getSigDataInfo->counter); + if(getCounterInfoBuff != NULL) { + + /*1.2.8 TAG_COUNTERS*/ + tlv_builder_add_buffer(builder, TAG_COUNTERS, getCounterInfoBuff); + } + } + + /*1.2 end*/ + tlv_builder_end_composite(builder); + + _END; + return tlv_builder_get_buffer(builder); +} + +void * +SignedDataTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("SignedDataTlvEncoder::decode start"); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *root = tlv_decode(rawData); + RET_IF_FAIL(rawData != NULL, NULL); + + int rawIter = 2 + 2; + int endIter = rawIter + root->len; + + tlv_s *child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + + SigData *getSigDataInfo = ALLOC(SigData); + + bool foundMember = false; + + while(1) { + + switch(child->tag) { + + case TAG_AAID: + getSigDataInfo->aaid = (char*)__strTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_ASSERTION_INFO: + getSigDataInfo->assrtInfo = (AssertionInfo*)__assertionInfo.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_AUTHENTICATOR_NONCE: + getSigDataInfo->authNonce = (Buffer*)__buffTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_FINAL_CHALLENGE: + getSigDataInfo->fch = (Buffer*)__buffTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_TRANSACTION_CONTENT_HASH: + getSigDataInfo->tcHash = (Buffer*)__buffTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_KEYID: + getSigDataInfo->keyId = (Buffer*)__buffTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_COUNTERS: + getSigDataInfo->counter = (Counters*)__counterInfo.decode(rawData + rawIter); + foundMember = true; + break; + + default: + foundMember = false; + break; + } + + rawIter = rawIter + 2 + 2 + child->len; + if(rawIter >= endIter) + break; + + child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + } + + if(foundMember == false) { + free(getSigDataInfo); + return NULL; + } + _INFO("SignedDataTlvEncoder::decode ebd"); + return getSigDataInfo; +} diff --git a/common/uafv1tlvutil/src/StringTlvEncoder.cpp b/common/uafv1tlvutil/src/StringTlvEncoder.cpp new file mode 100644 index 0000000..3427146 --- /dev/null +++ b/common/uafv1tlvutil/src/StringTlvEncoder.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "StringTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" + +StringTlvEncoder::StringTlvEncoder(void) +{ + +} + +Buffer * +StringTlvEncoder::encode(const void *strTlv) +{ + return NULL; +} + +void* +StringTlvEncoder::decode(const uint8_t *rawData) +{ + _INFO("StringTlvEncoder start"); + + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s *tlv = tlv_decode(rawData); + RET_IF_FAIL(tlv != NULL, NULL); + + tlv->val = (uint8_t*)realloc(tlv->val, tlv->len + 1); + char *val = (char *)tlv->val; + val[tlv->len] = '\0'; + + _INFO("[%s]", val); + + _INFO("StringTlvEncoder end"); + return val; +} diff --git a/common/uafv1tlvutil/src/Tlv.cpp b/common/uafv1tlvutil/src/Tlv.cpp new file mode 100644 index 0000000..7f79dc0 --- /dev/null +++ b/common/uafv1tlvutil/src/Tlv.cpp @@ -0,0 +1,263 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "Tlv.h" +#include "AsmHelper.h" +#include +#include + +int +tlv_get_int_by_reverse_endian(const unsigned char *tlv_buffer_in, int bytes) +{ + _INFO(""); + + RET_IF_FAIL(tlv_buffer_in != NULL, -1); + + int val = 0; + int i = 0; + for (i = 0; i < bytes; i++) { + uint16_t b_val = (tlv_buffer_in[i]) << (i * 8); + val |= b_val; + } + return val; +} + +Buffer * +tlv_to_buffer(tlv_s *tlv) +{ + int total_len = 2 + 2 + tlv->len; + + unsigned char *enc = (unsigned char*)calloc(1, total_len); + unsigned char *iter = enc; + + *iter = tlv->tag & 0xFF; + iter++; + *iter = (tlv->tag >> 8) & 0xFF; + iter++; + + *iter = tlv->len & 0xFF; + iter++; + *iter = (tlv->len >> 8) & 0xFF; + iter++; + + if ((tlv->len > 0) && (tlv->val != NULL)) + memcpy(iter, tlv->val, tlv->len); + + Buffer *buff = (Buffer*)calloc(1, sizeof(Buffer)); + buff->len = total_len; + buff->data = enc; + + return buff; +} + +tlv_s* +tlv_decode(const uint8_t *tlv_buffer_in) +{ + _INFO("tlv_buffer_in"); + + RET_IF_FAIL(tlv_buffer_in != NULL, NULL); + + uint16_t tag = tlv_get_int_by_reverse_endian(tlv_buffer_in, 2); + + uint16_t length = tlv_get_int_by_reverse_endian(tlv_buffer_in + 2, 2); + + tlv_s *tlv = (tlv_s*)calloc(1, sizeof(tlv_s)); + tlv->tag = tag; + tlv->len = length; + if (tlv->len > 0) { + tlv->val = (uint8_t *)calloc(1, tlv->len); + memcpy(tlv->val, tlv_buffer_in + 2 + 2, tlv->len); + + } + _INFO("[%0002x][%d]", tlv->tag, tlv->len); + + return tlv; +} + +tlv_builder_s* +tlv_builder_create(void) +{ + tlv_builder_s *builder = ALLOC(tlv_builder_s); + + builder->stack = g_queue_new(); + builder->root = NULL; + + return builder; +} + +tlv_builder_s* +tlv_builder_start_composite(tlv_builder_s* builder, int tag) +{ + if (builder->stack == NULL) + return NULL; + + tlv_s *node = ALLOC(tlv_s); + node->tag = tag; + node->len = 0; + node->val = NULL; + + if (builder->root == NULL) + builder->root = node; + + g_queue_push_head(builder->stack, node); + + return builder; +} + +tlv_builder_s* +tlv_builder_add_int8(tlv_builder_s* builder, int tag, uint8_t val) +{ + if (builder->stack == NULL) + return NULL; + + tlv_s *node = ALLOC(tlv_s); + node->tag = tag; + node->len = sizeof(uint8_t); + node->val = NALLOC(1, uint8_t); + *(node->val) = val; + + Buffer *node_buff = tlv_to_buffer(node); + + tlv_s *head = (tlv_s *)g_queue_peek_head(builder->stack); + head->val = (uint8_t *)realloc(head->val, head->len + node_buff->len); + memcpy(head->val + head->len, node_buff->data, node_buff->len); + head->len += node_buff->len; + + //g_queue_push_head(builder->stack, head); + + free(node); + + return builder; +} + +tlv_builder_s* +tlv_builder_add_int16(tlv_builder_s* builder, int tag, uint16_t val) +{ + if (builder->stack == NULL) + return NULL; + + tlv_s *node = ALLOC(tlv_s); + node->tag = tag; + node->len = sizeof(uint16_t); + node->val = NALLOC(2, uint8_t); + *(node->val) = (val) & 0xFF; + *(node->val+1) = (val>>8) & 0xFF; + + Buffer *node_buff = tlv_to_buffer(node); + + tlv_s *head = (tlv_s *)g_queue_peek_head(builder->stack); + head->val = (uint8_t *)realloc(head->val, head->len + node_buff->len); + memcpy(head->val + head->len, node_buff->data, node_buff->len); + head->len += node_buff->len; + + //g_queue_push_head(builder->stack, head); + + free(node); + + return builder; +} + +tlv_builder_s* +tlv_builder_add_string(tlv_builder_s *builder, int tag, char *val) +{ + if (builder->stack == NULL) + return NULL; + + if (val == NULL) { + _ERR("[%d] tag value given is NULL", tag); + return builder; + } + + tlv_s *node = ALLOC(tlv_s); + node->tag = tag; + node->len = strlen(val); + node->val = (uint8_t*)val; + + Buffer *node_buff = tlv_to_buffer(node); + + tlv_s *head = (tlv_s *)g_queue_peek_head(builder->stack); + head->val = (uint8_t *)realloc(head->val, head->len + node_buff->len); + memcpy(head->val + head->len, node_buff->data, node_buff->len); + head->len += node_buff->len; + + //g_queue_push_head(builder->stack, head); + + free(node); + + return builder; +} + +tlv_builder_s* +tlv_builder_add_buffer(tlv_builder_s *builder, int tag, Buffer *val) +{ + if (builder->stack == NULL) + return NULL; + + tlv_s *node = ALLOC(tlv_s); + node->tag = tag; + node->len = val->len; + node->val = val->data; + + Buffer *node_buff = tlv_to_buffer(node); + + tlv_s *head = (tlv_s *)g_queue_peek_head(builder->stack); + head->val = (uint8_t *)realloc(head->val, head->len + node_buff->len); + memcpy(head->val + head->len, node_buff->data, node_buff->len); + head->len += node_buff->len; + + //g_queue_push_head(builder->stack, head); + + free(node); + + return builder; +} + +tlv_builder_s* +tlv_builder_end_composite(tlv_builder_s *builder) +{ + if (builder->stack == NULL) + return NULL; + + tlv_s *head = (tlv_s *)g_queue_pop_head(builder->stack); + + if (g_queue_is_empty(builder->stack) == true) { + return builder; + } + + Buffer *head_buff = tlv_to_buffer(head); + + tlv_s *cur_head = (tlv_s *)g_queue_peek_head(builder->stack); + + cur_head->val = (uint8_t *)realloc(cur_head->val, cur_head->len + head_buff->len); + //cur_head->len += head_buff->len; + memcpy(cur_head->val + cur_head->len, head_buff->data, head_buff->len); + cur_head->len += head_buff->len; + + //g_queue_push_head(builder->stack, cur_head); + + return builder; +} + + +Buffer* +tlv_builder_get_buffer(tlv_builder_s *builder) +{ + Buffer *root_buff = tlv_to_buffer(builder->root); + + return root_buff; +} + diff --git a/common/uafv1tlvutil/src/TlvEncoderFactory.cpp b/common/uafv1tlvutil/src/TlvEncoderFactory.cpp new file mode 100644 index 0000000..1a4ad83 --- /dev/null +++ b/common/uafv1tlvutil/src/TlvEncoderFactory.cpp @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "TlvData.h" +#include "GetInfoReqTlvEncoder.h" +#include "GetInfoRespTlvEncoder.h" +#include "RegReqTlvEncoder.h" +#include "RegRespTlvEncoder.h" +#include "SignReqTlvEncoder.h" +#include "SignRespTlvEncoder.h" +#include "DeRegReqTlvEncoder.h" +#include "DeRegRespTlvEncoder.h" +#include "AsmHelper.h" + +std::map *TlvEncoderFactory::__encoderTable = NULL; + +ITlvEncoder* +TlvEncoderFactory::getTlvEncoderById(int id) +{ + _INFO(""); + + if (__encoderTable == NULL) + __encoderTable = loadAllEncoders(); + + RET_IF_FAIL(__encoderTable != NULL, NULL); + + _INFO(""); + return __encoderTable->find(id)->second; +} + +TlvEncoderFactory::TlvEncoderFactory(void) +{ + +} + +std::map* +TlvEncoderFactory::loadAllEncoders(void) +{ + _INFO(""); + + std::map* encTable = new std::map(); + + encTable->insert(std::make_pair(EID_UAFV1_GETINFO_REQ, new GetInfoReqTlvEncoder())); + encTable->insert(std::make_pair(EID_UAFV1_GETINFO_RESP, new GetInfoRespTlvEncoder())); + encTable->insert(std::make_pair(EID_UAFV1_REGISTER_REQ, new RegAssertionTlvEncoder())); + encTable->insert(std::make_pair(EID_UAFV1_REGISTER_RESP, new RegRespTlvEncoder())); + encTable->insert(std::make_pair(EID_UAFV1_SIGN_REQ, new SignReqTlvEncoder())); + encTable->insert(std::make_pair(EID_UAFV1_SIGN_RESP, new SignRespTlvEncoder())); + encTable->insert(std::make_pair(EID_UAFV1_DEREG_REQ, new DeRegReqTlvEncoder())); + encTable->insert(std::make_pair(EID_UAFV1_DEREG_RESP, new DeRegRespTlvEncoder())); + encTable->insert(std::make_pair(EID_UAFV1_REG_ASSERTION_RESP, new RegAuthAssertionTlvEncoder())); + encTable->insert(std::make_pair(EID_UAFV1_REG_ASSERTION_KRD_RESP, new Uafv1KrdTlvEncoder())); + encTable->insert(std::make_pair(EID_UAFV1_SIGN_ASSERTION_RESP, new SignAuthAssertionTlvEncoder())); + encTable->insert(std::make_pair(EID_UAFV1_SIGN_DATA_RESP, new SignedDataTlvEncoder())); + + /*TODO Add rests*/ + + _INFO(""); + return encTable; +} diff --git a/common/uafv1tlvutil/src/Uafv1KrdTlvEncoder.cpp b/common/uafv1tlvutil/src/Uafv1KrdTlvEncoder.cpp new file mode 100644 index 0000000..3f06eb3 --- /dev/null +++ b/common/uafv1tlvutil/src/Uafv1KrdTlvEncoder.cpp @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "Uafv1KrdTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" +#include "stdio.h" + +Uafv1KrdTlvEncoder::Uafv1KrdTlvEncoder(void) +{ + +} + +Buffer * +Uafv1KrdTlvEncoder::encode(const void *authData) +{ + _INFO("Uafv1KrdTlvEncoder::encode start"); + RET_IF_FAIL(authData != NULL, NULL); + + Krd *getRegAssertionKrd = (Krd*)authData; + + tlv_builder_s *builder = tlv_builder_create(); + + /*1.2 TAG_UAFV1_KRD*/ + tlv_builder_start_composite(builder, TAG_UAFV1_KRD); + + /*1.2.2 TAG_AAID*/ + tlv_builder_add_string(builder, TAG_AAID, getRegAssertionKrd->aaid); + + if(getRegAssertionKrd->assrtInfo != NULL) { + + Buffer *assertionInfoBuff = __assertionInfo.encode(getRegAssertionKrd->assrtInfo); + if(assertionInfoBuff != NULL) { + + /*1.2.3 TAG_ASSERTION_INFO*/ + tlv_builder_add_buffer(builder, TAG_ASSERTION_INFO, assertionInfoBuff); + } + } + + /*1.2.4 TAG_FINAL_CHALLENGE*/ + tlv_builder_add_buffer(builder, TAG_FINAL_CHALLENGE, getRegAssertionKrd->fch); + + /*1.2.5 TAG_KEYID*/ + tlv_builder_add_buffer(builder, TAG_KEYID, getRegAssertionKrd->keyId); + + if(getRegAssertionKrd->counter != NULL) { + + Buffer *countersInfoBuff = __countersInfo.encode(getRegAssertionKrd->counter); + if(countersInfoBuff != NULL) { + + /*1.2.6 TAG_COUNTERS*/ + tlv_builder_add_buffer(builder, TAG_COUNTERS, countersInfoBuff); + } + } + + /*1.2.7 TAG_PUB_KEY*/ + tlv_builder_add_buffer(builder, TAG_PUB_KEY, getRegAssertionKrd->pubKey); + + /*1.2 end*/ + tlv_builder_end_composite(builder); + + _INFO("Uafv1KrdTlvEncoder::encode end"); + return tlv_builder_get_buffer(builder); +} + +void * +Uafv1KrdTlvEncoder::decode(const unsigned char *rawData) +{ + _INFO("Uafv1KrdTlvEncoder::decode start"); + RET_IF_FAIL(rawData != NULL, NULL); + + tlv_s* root = tlv_decode(rawData); + RET_IF_FAIL(root != NULL, NULL); + RET_IF_FAIL(root->tag == TAG_UAFV1_KRD, NULL); + + int rawIter = 2 + 2; + int endIter = rawIter + root->len; + + Krd *getKrdInfo = ALLOC(Krd); + + tlv_s *child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + + bool foundMember = false; + + while(1) { + + switch(child->tag) { + + case TAG_AAID: + getKrdInfo->aaid = (char*)__strTlvEncoder.decode(rawData + rawIter); + _INFO("aaid [%s]", getKrdInfo->aaid); + foundMember = true; + break; + + case TAG_ASSERTION_INFO: + getKrdInfo->assrtInfo = (AssertionInfo*)__assertionInfo.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_FINAL_CHALLENGE: + getKrdInfo->fch = (Buffer*)__buffTlvEncoder.decode(rawData + rawIter); + _INFO("Final Challenge [%s]", getKrdInfo->fch); + foundMember = true; + break; + + case TAG_COUNTERS: + getKrdInfo->counter = (Counters*)__countersInfo.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_KEYID: + getKrdInfo->keyId = (Buffer*)__buffTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + case TAG_PUB_KEY: + getKrdInfo->pubKey = (Buffer*)__buffTlvEncoder.decode(rawData + rawIter); + foundMember = true; + break; + + default: + foundMember = false; + break; + } + + rawIter = rawIter + 2 + 2 + child->len; + if(rawIter >= endIter) + break; + + child = tlv_decode(rawData + rawIter); + RET_IF_FAIL(child != NULL, NULL); + } + + if(foundMember == false) { + free(getKrdInfo); + return NULL; + } + + _INFO("Uafv1KrdTlvEncoder::decode end"); + return getKrdInfo; +} diff --git a/common/uiutil/inc/AcUiAdaptor.h b/common/uiutil/inc/AcUiAdaptor.h new file mode 100644 index 0000000..b74c471 --- /dev/null +++ b/common/uiutil/inc/AcUiAdaptor.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef ACUIADAPTOR_H_ +#define ACUIADAPTOR_H_ + +#include +#include +#include + +class AcUiAdaptor { +public: + static AcUiAdaptor* getInstance(void); + + std::string confirmAccount(const std::string& appId, + const std::vector& accList, int *err); + + static void OnAccountResponseFromUi(const char *sessionData, int result, + const char *selecAcc); +private: + AcUiAdaptor(void); + ~AcUiAdaptor(void); + char *genNonce(void); + + const char **convertVectorToCharArray(const std::vector& stringVec); +private: + static AcUiAdaptor *__this; + char *__sessionData; + int __result; + std::string __selectedAcc; + GMainLoop *__mainLoop; + int __uiAppPid; +}; + + +#endif /* ACUIADAPTOR_H_ */ diff --git a/common/uiutil/inc/AsmUiCommonTypes.h b/common/uiutil/inc/AsmUiCommonTypes.h new file mode 100644 index 0000000..84af383 --- /dev/null +++ b/common/uiutil/inc/AsmUiCommonTypes.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef ASMUICOMMONTYPES_H +#define ASMUICOMMONTYPES_H + + +#define ASM_UI_APP_NAME "org.tizen.asmui" +#define TC_UI_KEY_MODE "mode" +#define TC_UI_VAL_MODE_TC "TC" +#define TC_UI_VAL_MODE_ACCOUNT "ACCOUNT" +#define TC_UI_VAL_MODE_PIN_ENROLL "PIN_ENROLL" +#define TC_UI_VAL_MODE_PIN_VERIFY "PIN_VERIFY" +#define TC_UI_KEY_NONCE "nonce" +#define TC_UI_KEY_TEXT "transaction_text" +#define TC_UI_KEY_ACC_LIST "account_list" +#define TC_UI_KEY_APP "app_id" +#define TC_UI_KEY_TOK "token" +#define OWNER_UID 5001 + +typedef enum { + TC_UI_RESULT_USER_DENIED = -1, + TC_UI_RESULT_USER_ALLOWED = 0 +} tc_ui_result_e; + +typedef enum { + AC_UI_RESULT_USER_DENIED = -1, + AC_UI_RESULT_USER_SELCTED = 0 +} ac_ui_result_e; + +#endif // ASMUICOMMONTYPES_H diff --git a/common/uiutil/inc/AuthUiFactory.h b/common/uiutil/inc/AuthUiFactory.h new file mode 100644 index 0000000..a98710f --- /dev/null +++ b/common/uiutil/inc/AuthUiFactory.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef AUTHUIFACTORY_H +#define AUTHUIFACTORY_H + +#include +#include +#include "IAuthUiAdaptor.h" + +typedef enum { + AUTH_UI_TYPE_PIN, + AUTH_UI_TYPE_FACE, + AUTH_UI_TYPE_FINGER_PRINT, + AUTH_UI_TYPE_PIN_VOICE +} auth_ui_type_e; + +class AuthUiFactory { +public: + static IAuthUiAdaptor *getAuthUiAdaptor(auth_ui_type_e type); + +private: + AuthUiFactory(void); + ~AuthUiFactory(void); +}; + +#endif // AUTHUIFACTORY_H diff --git a/common/uiutil/inc/IAuthUiAdaptor.h b/common/uiutil/inc/IAuthUiAdaptor.h new file mode 100644 index 0000000..4285aac --- /dev/null +++ b/common/uiutil/inc/IAuthUiAdaptor.h @@ -0,0 +1,20 @@ +#ifndef IAUTHUIADAPTOR_H +#define IAUTHUIADAPTOR_H + +#include +#include + +class IAuthUiAdaptor { +public: + /*O/P : UserVerificationToken, the subsequent reg/sign commands must have the same*/ + virtual std::string enrollUser(const std::string& appId, int *err) = 0; + virtual std::string verifyUser(const std::string& appId, const std::string &token, int *err) = 0; + + virtual void OnAuthResponseFromUi(const char *sessionData, + const char *usrVerTok, + int result) = 0; + + virtual ~IAuthUiAdaptor(void) {} +}; + +#endif // IAUTHUIADAPTOR_H diff --git a/common/uiutil/inc/PinAuthUiAdaptor.h b/common/uiutil/inc/PinAuthUiAdaptor.h new file mode 100644 index 0000000..da9fb1c --- /dev/null +++ b/common/uiutil/inc/PinAuthUiAdaptor.h @@ -0,0 +1,45 @@ +#ifndef PINAUTHUIADAPTOR_H +#define PINAUTHUIADAPTOR_H + +#include +#include +#include "IAuthUiAdaptor.h" + +class PinAuthUiAdaptor : public IAuthUiAdaptor { +public: + static PinAuthUiAdaptor* getInstance(void); + + /*O/P : UserVerificationToken, the subsequent reg/sign commands must have the same*/ + virtual std::string enrollUser(const std::string& appId, int *err); + virtual std::string verifyUser(const std::string& appId, const std::string &token, int *err); + + virtual void OnAuthResponseFromUi(const char *sessionData, + const char *usrVerTok, + int result); +private: + typedef enum { + PIN_AUTH_MODE_MIN, + PIN_AUTH_MODE_ENROLL, + PIN_AUTH_MODE_VERIFY, + PIN_AUTH_MODE_MAX + } pin_auth_mode_e; + + PinAuthUiAdaptor(void); + ~PinAuthUiAdaptor(void); + char *genNonce(void); + + std::string getTokenFromUi(pin_auth_mode_e type, const std::string& appId, + const std::string& tok, int *err); + + static void init(void); + +private: + static PinAuthUiAdaptor *__this; + char *__sessionData; + int __result; + char *__usrVerTok; + GMainLoop *__mainLoop; + int __uiAppPid; +}; + +#endif // PINAUTHUIADAPTOR_H diff --git a/common/uiutil/inc/TCUiAdaptor.h b/common/uiutil/inc/TCUiAdaptor.h new file mode 100644 index 0000000..9ca6c45 --- /dev/null +++ b/common/uiutil/inc/TCUiAdaptor.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef TCUIADAPTOR_H_ +#define TCUIADAPTOR_H_ + +#include +#include + +class TcUiAdaptor { +public: + static TcUiAdaptor* getInstance(void); + /*Currently only supports TEXT Transaction Confirmation, TODO: Image + Text combo*/ + int confirmTransaction(const std::string& trans, const std::string& app); + + static void OnTcResponseFromUi(const char *sessionData, int result); +private: + TcUiAdaptor(void); + ~TcUiAdaptor(void); + char *genNonce(void); + +private: + static TcUiAdaptor *__this; + char *__sessionData; + int __result; + GMainLoop *__mainLoop; + int __uiAppPid; +}; + + +#endif /* TCUIADAPTOR_H_ */ diff --git a/common/uiutil/src/AcUiAdaptor.cpp b/common/uiutil/src/AcUiAdaptor.cpp new file mode 100644 index 0000000..038447b --- /dev/null +++ b/common/uiutil/src/AcUiAdaptor.cpp @@ -0,0 +1,198 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "AcUiAdaptor.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "AsmUiCommonTypes.h" + +AcUiAdaptor* AcUiAdaptor::__this = NULL; +static const int NONCE_LEN = 8; + +AcUiAdaptor* +AcUiAdaptor::getInstance(void) +{ + if (__this != NULL) + return __this; + + __this = new AcUiAdaptor(); + + return __this; +} + +char * +AcUiAdaptor::genNonce(void) +{ + struct timeval t1; + gettimeofday(&t1, NULL); + srand(t1.tv_usec * t1.tv_sec); + + char *nonce = NALLOC(NONCE_LEN + 1, char); + for (int i = 0; i < NONCE_LEN; i++) { + int randNum = rand() % ('z' - '0'); + nonce[i] = '0' + randNum; + } + nonce[NONCE_LEN] = '\0'; + + return nonce; +} + +const char ** +AcUiAdaptor::convertVectorToCharArray(const std::vector& stringVec) +{ + int vecSize = stringVec.size(); + RET_IF_FAIL(vecSize > 0, NULL); + + const char **charArray = NALLOC(vecSize, const char*); + for (int i = 0; i < vecSize; i++) { + std::string ipStr = stringVec.at(i); + int ipStrLen = ipStr.length(); + + char *cpStr = NALLOC(ipStrLen + 1, char); + strncpy(cpStr, ipStr.c_str(), ipStrLen); + + charArray[i] = cpStr; + } + + return charArray; +} + +std::string +AcUiAdaptor::confirmAccount(const std::string& appId, + const std::vector& accList, int *err) +{ + /*TODO: Disabled until UI launch-kill-launch sequence issue is fixed*/ + _INFO("Disabled Account UI"); + return accList.at(0); + + if (__sessionData != NULL) { + _ERR("UI operation already in progress"); + *err = -1; + return ""; + } + + int vecSize = accList.size(); + if (vecSize <= 0) { + *err = -1; + return ""; + } + + __sessionData = genNonce(); + __result = -1; + __selectedAcc.clear(); + + + bundle *b = bundle_create(); + bundle_add_str(b, TC_UI_KEY_MODE, TC_UI_VAL_MODE_ACCOUNT); + bundle_add_str(b, TC_UI_KEY_NONCE, __sessionData); + bundle_add_str_array(b, TC_UI_KEY_ACC_LIST, convertVectorToCharArray(accList), + accList.size()); + bundle_add_str(b, TC_UI_KEY_APP, appId.c_str()); + + int uiPid = -1; + int tryCount = 0; + + for(; tryCount < 10; tryCount++) { + uiPid = aul_launch_app_for_uid(ASM_UI_APP_NAME, b, OWNER_UID); + _INFO("aul_launch_app = [%d]", uiPid); + if (uiPid > 0) + break; + } + + if (uiPid < 0) { + if (uiPid == AUL_R_EINVAL) + _INFO("AUL_R_EINVAL"); + if (uiPid == AUL_R_ECOMM) + _INFO("AUL_R_ECOM"); + if (uiPid == AUL_R_ERROR) + _INFO("AUL_R_ERROR"); + + __sessionData = NULL; + + /*TODO*/ + _ERR("Account UI Launch failed, returning first one for test"); + __sessionData = NULL; + return accList.at(0); + } + + __uiAppPid = uiPid; + + __mainLoop = NULL; + + __mainLoop = g_main_loop_new(NULL, FALSE); + + g_main_loop_run(__mainLoop); + + _INFO("AcUiAdaptor::confirmAccount:: set _sessionData NULL"); + SAFE_DELETE(__sessionData); + __sessionData = NULL; + + aul_terminate_pid_sync_for_uid(__uiAppPid, OWNER_UID); + + *err = __result; + return __selectedAcc; +} + +void +AcUiAdaptor::OnAccountResponseFromUi(const char *sessionData, int result, const char *selecAcc) +{ + _INFO(""); + if (AcUiAdaptor::getInstance()->__sessionData == NULL || sessionData == NULL) + return; + + _INFO("%s", sessionData); + + _INFO("%s", AcUiAdaptor::getInstance()->__sessionData); + if (strcmp(sessionData, AcUiAdaptor::getInstance()->__sessionData) != 0) + return; + + _INFO(""); + AcUiAdaptor::getInstance()->__result = result; + if (selecAcc != NULL) { + _INFO("%s", selecAcc); + std::string selectedAcc(selecAcc); + AcUiAdaptor::getInstance()->__selectedAcc = selectedAcc; + } else { + AcUiAdaptor::getInstance()->__selectedAcc.clear(); + if (AcUiAdaptor::getInstance()->__result == AC_UI_RESULT_USER_SELCTED) + AcUiAdaptor::getInstance()->__result = AC_UI_RESULT_USER_DENIED; + } + + + g_main_loop_quit(AcUiAdaptor::getInstance()->__mainLoop); + +} + +AcUiAdaptor::AcUiAdaptor(void) +{ + __sessionData = NULL; + __result = -1; +} + +AcUiAdaptor::~AcUiAdaptor(void) +{ + SAFE_DELETE(__sessionData); +} + diff --git a/common/uiutil/src/AuthUiFactory.cpp b/common/uiutil/src/AuthUiFactory.cpp new file mode 100644 index 0000000..354ee1c --- /dev/null +++ b/common/uiutil/src/AuthUiFactory.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "AuthUiFactory.h" +#include "PinAuthUiAdaptor.h" +#include "AsmHelper.h" + +IAuthUiAdaptor * +AuthUiFactory::getAuthUiAdaptor(auth_ui_type_e type) +{ + _BEGIN; + switch (type) { + + case AUTH_UI_TYPE_PIN: + _INFO("AuthUiFactory::getAuthUiAdaptor:: PinAuthUiAdaptor"); + return PinAuthUiAdaptor::getInstance(); + default: + return NULL; + } + + _END; + return NULL; +} diff --git a/common/uiutil/src/PinAuthUiAdaptor.cpp b/common/uiutil/src/PinAuthUiAdaptor.cpp new file mode 100644 index 0000000..46fb643 --- /dev/null +++ b/common/uiutil/src/PinAuthUiAdaptor.cpp @@ -0,0 +1,202 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "PinAuthUiAdaptor.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "AsmUiCommonTypes.h" + +PinAuthUiAdaptor* PinAuthUiAdaptor::__this = NULL; +static const int NONCE_LEN = 8; + +void +PinAuthUiAdaptor::init(void) +{ + __this = new PinAuthUiAdaptor(); + _INFO("[%p]", __this); +} + +PinAuthUiAdaptor* +PinAuthUiAdaptor::getInstance(void) +{ + static pthread_once_t onceBlock = PTHREAD_ONCE_INIT; + pthread_once(&onceBlock, init); + + _INFO("[%p]", __this); + return __this; +} + +char * +PinAuthUiAdaptor::genNonce(void) +{ + struct timeval t1; + gettimeofday(&t1, NULL); + srand(t1.tv_usec * t1.tv_sec); + + char *nonce = NALLOC(NONCE_LEN + 1, char); + for (int i = 0; i < NONCE_LEN; i++) { + int randNum = rand() % ('z' - '0'); + nonce[i] = '0' + randNum; + } + nonce[NONCE_LEN] = '\0'; + + _INFO("None gen=[%s]", nonce); + + return nonce; +} + +std::string +PinAuthUiAdaptor::getTokenFromUi(pin_auth_mode_e type, const std::string& appId, + const std::string& tok, int *err) +{ + _BEGIN; + if (type <= PIN_AUTH_MODE_MIN || + type >= PIN_AUTH_MODE_MAX) + return ""; + + if (__sessionData != NULL) { + _ERR("UI operation already in progress"); + return ""; + } + + __sessionData = genNonce(); + _INFO("SessionData sent to UI=[%s][%p]", __sessionData, __sessionData); + __usrVerTok = NULL; + __result = -1; + + bundle *b = bundle_create(); + if (type == PIN_AUTH_MODE_ENROLL) + bundle_add_str(b, TC_UI_KEY_MODE, TC_UI_VAL_MODE_PIN_ENROLL); + else if (type == PIN_AUTH_MODE_VERIFY) { + bundle_add_str(b, TC_UI_KEY_MODE, TC_UI_VAL_MODE_PIN_VERIFY); + bundle_add_str(b, TC_UI_KEY_TOK, tok.c_str()); + } + + bundle_add_str(b, TC_UI_KEY_NONCE, __sessionData); + _INFO("SessionData sent to UI=[%s]", __sessionData); + bundle_add_str(b, TC_UI_KEY_APP, appId.c_str()); + + int uiPid = -1; + + for (int i = 0; i < 10; i++) { + uiPid = aul_launch_app_for_uid(ASM_UI_APP_NAME, b, OWNER_UID); + _INFO("aul_launch_app = [%d]", uiPid); + if (uiPid < 0) { + if (uiPid == AUL_R_EINVAL) + _INFO("AUL_R_EINVAL"); + if (uiPid == AUL_R_ECOMM) + _INFO("AUL_R_ECOM"); + if (uiPid == AUL_R_ERROR) + _INFO("AUL_R_ERROR"); + + *err = -1; + //return ""; + + } else { + break; + } + } + + if (uiPid < 0) { + *err = -1; + return ""; + } + + __uiAppPid = uiPid; + + __mainLoop = NULL; + + __mainLoop = g_main_loop_new(NULL, FALSE); + + g_main_loop_run(__mainLoop); + + _INFO(""); + SAFE_DELETE(__sessionData); + __sessionData = NULL; + + aul_terminate_pid_sync_for_uid(__uiAppPid, OWNER_UID); + + *err = __result; + + if (__usrVerTok == NULL) + return ""; + + return std::string(__usrVerTok); +} + +std::string +PinAuthUiAdaptor::enrollUser(const std::string& appId, int *err) +{ + return getTokenFromUi(PIN_AUTH_MODE_ENROLL, appId, "", err); +} + +std::string +PinAuthUiAdaptor::verifyUser(const std::string& appId, + const std::string& token, int *err) +{ + _BEGIN; + return getTokenFromUi(PIN_AUTH_MODE_VERIFY, appId, token, err); +} + +void +PinAuthUiAdaptor::OnAuthResponseFromUi(const char *sessionData, const char *usrVerTok, int result) +{ + _INFO(""); + if (sessionData != NULL) + _INFO("SessionData received from to UI=[%s]", sessionData); + else + _INFO("SessionData received from to UI=[NULL]"); + + _INFO("SessionData stored addr=[%p]", PinAuthUiAdaptor::getInstance()->__sessionData); + + if (PinAuthUiAdaptor::getInstance()->__sessionData == NULL || sessionData == NULL) + return; + + _INFO("%s", sessionData); + _INFO("%s", PinAuthUiAdaptor::getInstance()->__sessionData); + if (strcmp(sessionData, PinAuthUiAdaptor::getInstance()->__sessionData) != 0) + return; + + _INFO(""); + PinAuthUiAdaptor::getInstance()->__usrVerTok = strdup(usrVerTok); + PinAuthUiAdaptor::getInstance()->__result = result; + + g_main_loop_quit(PinAuthUiAdaptor::getInstance()->__mainLoop); + +} + +PinAuthUiAdaptor::PinAuthUiAdaptor(void) +{ + __sessionData = NULL; + __result = -1; + __usrVerTok = NULL; +} + +PinAuthUiAdaptor::~PinAuthUiAdaptor(void) +{ + SAFE_DELETE(__sessionData); + SAFE_DELETE(__usrVerTok); +} + diff --git a/common/uiutil/src/TCUiAdaptor.cpp b/common/uiutil/src/TCUiAdaptor.cpp new file mode 100644 index 0000000..0b0bb2a --- /dev/null +++ b/common/uiutil/src/TCUiAdaptor.cpp @@ -0,0 +1,153 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "TCUiAdaptor.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "AsmUiCommonTypes.h" + +TcUiAdaptor* TcUiAdaptor::__this = NULL; +static const int NONCE_LEN = 8; + +TcUiAdaptor* +TcUiAdaptor::getInstance(void) +{ + if (__this != NULL) + return __this; + + __this = new TcUiAdaptor(); + + return __this; +} + +char * +TcUiAdaptor::genNonce(void) +{ + struct timeval t1; + gettimeofday(&t1, NULL); + srand(t1.tv_usec * t1.tv_sec); + + char *nonce = NALLOC(NONCE_LEN + 1, char); + for (int i = 0; i < NONCE_LEN; i++) { + int randNum = rand() % ('z' - '0'); + nonce[i] = '0' + randNum; + } + nonce[NONCE_LEN] = '\0'; + + return nonce; +} + +/*Currently only supports TEXT Transaction Confirmation, TODO: Image + Text combo*/ +int +TcUiAdaptor::confirmTransaction(const std::string& trans, const std::string& app) +{ + _BEGIN; + /*TODO: Disabled until UI launch-kill-launch sequence issue is fixed*/ + _INFO("Disabled Transaction Confirmation UI"); + return 0; + + if (__sessionData != NULL) { + _ERR("UI operation already in progress"); + return -1; + } + + __sessionData = genNonce(); + __result = -1; + + bundle *b = bundle_create(); + bundle_add_str(b, TC_UI_KEY_MODE, TC_UI_VAL_MODE_TC); + bundle_add_str(b, TC_UI_KEY_NONCE, __sessionData); + bundle_add_str(b, TC_UI_KEY_TEXT, trans.c_str()); + bundle_add_str(b, TC_UI_KEY_APP, app.c_str()); + + int uiPid; + int tryCount = 0; + + for(; tryCount < 10; tryCount++) { + uiPid = aul_launch_app_for_uid(ASM_UI_APP_NAME, b, OWNER_UID); + _INFO("aul_launch_app = [%d]", uiPid); + if(uiPid > 0) + break; + } + if (uiPid < 0) { + if (uiPid == AUL_R_EINVAL) + _INFO("AUL_R_EINVAL"); + if (uiPid == AUL_R_ECOMM) + _INFO("AUL_R_ECOM"); + if (uiPid == AUL_R_ERROR) + _INFO("AUL_R_ERROR"); + + /*TODO*/ + _ERR("TC UI Launch failed, returning success for test"); + __sessionData = NULL; + return 0; + } + + __uiAppPid = uiPid; + + __mainLoop = NULL; + + __mainLoop = g_main_loop_new(NULL, FALSE); + + g_main_loop_run(__mainLoop); + + _INFO("TcUiAdaptor::confirmTransaction::set _sessionData NULL"); + SAFE_DELETE(__sessionData); + __sessionData = NULL; + + aul_terminate_pid_sync_for_uid(__uiAppPid, OWNER_UID); + + _END; + return __result; +} + +void +TcUiAdaptor::OnTcResponseFromUi(const char *sessionData, int result) +{ + _INFO(""); + if (TcUiAdaptor::getInstance()->__sessionData == NULL || sessionData == NULL) + return; + + _INFO("%s", sessionData); + _INFO("%s", TcUiAdaptor::getInstance()->__sessionData); + if (strcmp(sessionData, TcUiAdaptor::getInstance()->__sessionData) != 0) + return; + + _INFO(""); + TcUiAdaptor::getInstance()->__result = result; + + g_main_loop_quit(TcUiAdaptor::getInstance()->__mainLoop); + +} + +TcUiAdaptor::TcUiAdaptor(void) +{ + __sessionData = NULL; + __result = -1; +} + +TcUiAdaptor::~TcUiAdaptor(void) +{ + SAFE_DELETE(__sessionData); +} diff --git a/fido-asm.manifest b/fido-asm.manifest new file mode 100644 index 0000000..ad0406a --- /dev/null +++ b/fido-asm.manifest @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/fido-ble-ragent.manifest b/fido-ble-ragent.manifest new file mode 100644 index 0000000..97e8c31 --- /dev/null +++ b/fido-ble-ragent.manifest @@ -0,0 +1,5 @@ + + + + + diff --git a/fido-bt-ragent.manifest b/fido-bt-ragent.manifest new file mode 100644 index 0000000..97e8c31 --- /dev/null +++ b/fido-bt-ragent.manifest @@ -0,0 +1,5 @@ + + + + + diff --git a/fido-roaming-agent.manifest b/fido-roaming-agent.manifest new file mode 100644 index 0000000..97e8c31 --- /dev/null +++ b/fido-roaming-agent.manifest @@ -0,0 +1,5 @@ + + + + + diff --git a/fido_tizen_auth.der b/fido_tizen_auth.der new file mode 100644 index 0000000000000000000000000000000000000000..ec464781c8c4e3087a2f360dc74b114270de5a06 GIT binary patch literal 940 zcmXqLVqRg;#5944li}CN4i0AjH5vxIY@Awc9&O)w85y}*84Mby8gd(OvN4CUun9AH z2O07i@PIfRJgmW~`K389K0AyrV;}{R=i(6#PRuPX%}ZBs%}GrzDay~wOfH70=H_7y z$*fAvGZZoq0I6o?;S6yN4pBA)0Tlx!xDz-T#YA%x^Ad|Qv-FA_iXkTICFkcF$cghB zni(1yni^ObSelqb0lDT#+(GN^CPpRXAZBD`U~XdMXE11D4`^7!R3 z4yIXMKVEsAJay!Mq|fB7Vq8tTIu0-DHrf4SHyab1pSBY_SFqdts%2#@nUkNY7N)yt z`IP=#tlx7a-e~!%p9Tg;UEVUidCr(%v9=)QpL?rc`Lg?~as*tGE8c6`ZrL6BA|UQT zC(H3Gj5GYjyUtDGJA857hBX^I_npiRX9-(mrhARyn-Dfe`G z+@51BiOGWh1e(R9E`}UG)s*t*>LQmq`&D_bPIasI9eg%%>c5R@ng_0gE4uHAjPO&; zJ0&c;(BlVN>dGUGJEZRleMtSKdg(OF`6*N0?YZ@_u=%9(j8fe>Y@4!!9_+X~EuCq) zFcUK)10!+>0TUrGgcuo^?j=rG{qnZ9WVC8h!Rx(q^CD~iCi8GMe6=w7xpkTQLr%es zZv+~A6&IZI=#hN>b79Dw5|g=a*8N{6&K)jT`?s*)p69t^dmnFn%8}D-z5Hg1iOgn} zZ+Dpb>b5p7*z6_gRC&X+j=juf*5(3cbA>$3i)kOX%9woJ7P``Gr^%N~lR_8G;t!Yf z{P)oC=dt}S`*yzO$a{a{z`>pGj#qN7XMT8W|IQA5v%m9aYXoQVcwKm?uUhcsB9ClW zwRpvI$Ey~9!t5fqT#>u^@@xEi-( + + + + diff --git a/packaging/fido-asm.service b/packaging/fido-asm.service new file mode 100644 index 0000000..132bf2a --- /dev/null +++ b/packaging/fido-asm.service @@ -0,0 +1,10 @@ +[Unit] +Description=FIDO ASM service +After=tizen-runtime.target +Requires=tizen-runtime.target + +[Service] +ExecStart=/usr/bin/fido-asm + +[Install] +WantedBy=multi-user.target diff --git a/packaging/fido-asm.spec b/packaging/fido-asm.spec new file mode 100644 index 0000000..2868296 --- /dev/null +++ b/packaging/fido-asm.spec @@ -0,0 +1,352 @@ + +Name: fido-asm +Summary: Tizen FIDO Reference ASM +Version: 0.0.1 +Release: 1 +Group: Social & Content/Other +License: Apache-2.0 +Source0: fido-asm-%{version}.tar.gz +Source1: org.tizen.fido-asm.service +Source2: org.tizen.fido-asm.conf +Source3: fido-asm.service +Source4: fido-roaming-agent.service +Source5: fido-ble-roaming-agent.service +Source6: fido-bt-roaming-agent.service + +BuildRequires: cmake +BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(db-util) +BuildRequires: pkgconfig(capi-base-common) +BuildRequires: pkgconfig(pkgmgr-info) +BuildRequires: pkgconfig(glib-2.0) >= 2.26 +BuildRequires: pkgconfig(gio-2.0) +BuildRequires: pkgconfig(json-glib-1.0) +BuildRequires: pkgconfig(vconf) +BuildRequires: pkgconfig(cynara-client) +BuildRequires: pkgconfig(cynara-session) +BuildRequires: pkgconfig(cynara-creds-gdbus) +BuildRequires: pkgconfig(capi-network-connection) +BuildRequires: pkgconfig(libtzplatform-config) +BuildRequires: pkgconfig(sqlite3) +BuildRequires: pkgconfig(capi-appfw-app-manager) +BuildRequires: pkgconfig(iotcon) +BuildRequires: pkgconfig(capi-system-info) +BuildRequires: pkgconfig(capi-system-system-settings) +BuildRequires: pkgconfig(openssl) +BuildRequires: pkgconfig(vconf) +BuildRequires: pkgconfig(capi-network-bluetooth) +BuildRequires: pkgconfig(capi-network-wifi-direct) +BuildRequires: pkgconfig(capi-network-connection) +BuildRequires: pkgconfig(db-util) + +Requires(post): /sbin/ldconfig +Requires(post): /usr/bin/sqlite3 +Requires(postun): /sbin/ldconfig + +%description +Tizen Reference ASM + +%package devel +Summary: Tizen Reference ASM (DEV) +Group: Social & Content/Other +Requires: %{name} = %{version}-%{release} + +%description devel +Tizen Reference ASM (DEV) + +%prep +%setup -q +cp %{SOURCE1} . + +%build +%if 0%{?sec_build_binary_debug_enable} +export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE" +export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE" +export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE" +%endif + +export CFLAGS="${CFLAGS} -fPIC -fvisibility=hidden" + +cmake . \ +-DCMAKE_INSTALL_PREFIX=%{_prefix} \ +-DLIBDIR=%{_libdir} \ +-DINCLUDEDIR=%{_includedir} + +make %{?jobs:-j%jobs} + +%install +rm -rf %{buildroot} +%make_install + +mkdir -p %{buildroot}/usr/share/dbus-1/system-services +install -m 0644 %SOURCE1 %{buildroot}/usr/share/dbus-1/system-services/org.tizen.fido-asm.service + +mkdir -p %{buildroot}%{_sysconfdir}/dbus-1/system.d +install -m 0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/dbus-1/system.d/ + +mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants +install -m 644 %SOURCE3 %{buildroot}%{_unitdir}/fido-asm.service +%install_service multi-user.target.wants fido-asm.service + +mkdir -p %{buildroot}%{_libdir}/fido/asm/auth + +mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants +install -m 0644 %SOURCE4 %{buildroot}%{_unitdir}/fido-roaming-agent.service +%install_service multi-user.target.wants fido-roaming-agent.service + +mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants +install -m 0644 %SOURCE5 %{buildroot}%{_unitdir}/fido-ble-roaming-agent.service +%install_service multi-user.target.wants fido-ble-roaming-agent.service + +mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants +install -m 0644 %SOURCE6 %{buildroot}%{_unitdir}/fido-bt-roaming-agent.service +%install_service multi-user.target.wants fido-bt-roaming-agent.service + + +%post +/sbin/ldconfig +mkdir -p /opt/data/fido-asm/ +chown -R service_fw:service_fw /opt/data/fido-asm/ +chsmack -a '_' /opt/data/fido-asm/ + +if [ ! -f %{TZ_SYS_DB}/.fido_asm.db ] +then + sqlite3 %{TZ_SYS_DB}/.fido_asm.db 'PRAGMA journal_mode = PERSIST; + CREATE TABLE IF NOT EXISTS ASMKEYS ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + auth_idx INTEGER NOT NULL, + caller_id TEXT NOT NULL, + app_id TEXT NOT NULL, + key_handle TEXT UNIQUE, + key_id TEXT NOT NULL UNIQUE, + time_stamp TEXT NOT NULL UNIQUE); +' +fi + +chown service_fw:service_fw %{TZ_SYS_DB}/.fido_asm.db +chown service_fw:service_fw %{TZ_SYS_DB}/.fido_asm.db-journal +chsmack -a '_' %{TZ_SYS_DB}/.fido_asm.db +chsmack -a '_' %{TZ_SYS_DB}/.fido_asm.db-journal + +if [ ! -f %{TZ_SYS_DB}/.fido_auth.db ] +then + sqlite3 %{TZ_SYS_DB}/.fido_auth.db 'PRAGMA journal_mode = PERSIST; + CREATE TABLE if not exists AUTHLIST ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + auth_index INTEGER NOT NULL, + device_id TEXT NOT NULL, + aaid TEXT NOT NULL, + mapped_index INTEGER UNIQUE); +' +fi + +chown service_fw:service_fw %{TZ_SYS_DB}/.fido_auth.db +chown service_fw:service_fw %{TZ_SYS_DB}/.fido_auth.db-journal +chsmack -a '_' %{TZ_SYS_DB}/.fido_auth.db +chsmack -a '_' %{TZ_SYS_DB}/.fido_auth.db-journal + + +if [ ! -f %{TZ_SYS_DB}/.fido_secret.db ] +then + sqlite3 %{TZ_SYS_DB}/.fido_secret.db 'PRAGMA journal_mode = PERSIST; + CREATE TABLE IF NOT EXISTS SECRET ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + aaid TEXT NOT NULL, + device_id TEXT NOT NULL, + uid INTEGER NOT NULL, + secret_1 TEXT NOT NULL, + secret_2 TEXT); +' +fi + +chown service_fw:service_fw %{TZ_SYS_DB}/.fido_secret.db +chown service_fw:service_fw %{TZ_SYS_DB}/.fido_secret.db-journal +chsmack -a '_' %{TZ_SYS_DB}/.fido_secret.db +chsmack -a '_' %{TZ_SYS_DB}/.fido_secret.db-journal + +%postun +/sbin/ldconfig +rm -rf /opt/share/fido-asm/ +rm /opt/dbspace/.fido* + + +%files +%manifest fido-asm.manifest +%{_bindir}/fido-asm +%config %{_sysconfdir}/dbus-1/system.d/org.tizen.fido-asm.conf +%attr(0644,root,root) %{_unitdir}/fido-asm.service +%attr(0644,root,root) %{_unitdir}/multi-user.target.wants/fido-asm.service +%attr(0644,root,root) /usr/share/dbus-1/system-services/org.tizen.fido-asm.service +%{_libdir}/fido/asm/fido_asm.json + +%files devel +##/opt/usr/devel/fido_asm/tc/* + +################################################################################# +# FIDO ASM UI +################################################################################# + +%package -n org.tizen.asmui +Summary: FIDO ASM UI +Group: Social & Content/API + +BuildRequires: cmake +BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(capi-system-system-settings) +BuildRequires: pkgconfig(elementary) +BuildRequires: pkgconfig(efl-extension) +BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(bundle) +BuildRequires: pkgconfig(json-glib-1.0) +BuildRequires: pkgconfig(glib-2.0) >= 2.26 +BuildRequires: pkgconfig(gio-unix-2.0) +BuildRequires: pkgconfig(elementary) +BuildRequires: pkgconfig(efl-extension) +BuildRequires: pkgconfig(openssl) + +BuildRequires: pkgconfig(libtzplatform-config) + +%description -n org.tizen.asmui +FIDO ASM UI provides various UI operations required. + +%files -n org.tizen.asmui +%manifest org.tizen.asmui.manifest +%defattr(-,root,root,-) +%{TZ_SYS_RO_APP}/org.tizen.asmui/bin/asmui +##%{TZ_SYS_RO_APP}/org.tizen.asmui/res/locale/* +##%{TZ_SYS_RO_APP}/org.tizen.asmui/res/edje/* +#%{TZ_SYS_RO_APP}/org.tizen.asmui/data +/usr/share/packages/org.tizen.asmui.xml +##%{TZ_SYS_RO_APP}/org.tizen.asmui/shared/res/* +%{TZ_SYS_RW_ICONS}/default/small/org.tizen.asmui.png + + +################################################################################# +# FIDO Silent Authenticator +################################################################################# + +%package -n fido_silent +Summary: FIDO Silent Authenticator +Group: Account +#Requires: %{name} = %{version}-%{release} + +BuildRequires: cmake +BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(capi-system-system-settings) +BuildRequires: pkgconfig(elementary) +BuildRequires: pkgconfig(efl-extension) +BuildRequires: pkgconfig(pkgmgr-info) +BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(bundle) +BuildRequires: pkgconfig(json-glib-1.0) +BuildRequires: pkgconfig(glib-2.0) >= 2.26 +BuildRequires: pkgconfig(gio-unix-2.0) +BuildRequires: pkgconfig(capi-network-connection) + +%description -n fido_silent +FIDO Silent Authenticator + +%post -n fido_silent +chown service_fw:service_fw /opt/usr/data/silent_auth/fido_tizen_auth.der +chown service_fw:service_fw /opt/usr/data/silent_auth/fido_tizen_auth.key +chmod 660 /opt/usr/data/silent_auth/fido_tizen_auth.der +chmod 660 /opt/usr/data/silent_auth/fido_tizen_auth.key +chsmack -a '_' /opt/usr/data/silent_auth/fido_tizen_auth.der +chsmack -a '_' /opt/usr/data/silent_auth/fido_tizen_auth.key + +%postun -n fido_silent +rm -r /opt/usr/data/silent_auth/ + +%files -n fido_silent +%{_libdir}/fido/asm/auth/libfido_silent_*.so* +/opt/usr/data/silent_auth/fido_tizen_auth.der +/opt/usr/data/silent_auth/fido_tizen_auth.key + +################################################################################# +# FIDO IoT Roaming Agent +################################################################################# +%package -n fido_roaming_agent +Summary: FIDO Roaming Agent +Group: Account + +BuildRequires: cmake +BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(bundle) +BuildRequires: pkgconfig(json-glib-1.0) +BuildRequires: pkgconfig(glib-2.0) >= 2.26 +BuildRequires: pkgconfig(gio-unix-2.0) +BuildRequires: pkgconfig(capi-network-connection) + + +%description -n fido_roaming_agent +FIDO Roaming Agent IoTivity Server + +%post -n fido_roaming_agent +mkdir -p /opt/data/fido-ra/ +chown -R service_fw:service_fw /opt/data/fido-ra/ +chsmack -a '_' /opt/data/fido-ra/ + +chown -R service_fw:service_fw /opt/data/fido-ra/*.dat +chsmack -a '_' /opt/data/fido-ra/*.dat + +%files -n fido_roaming_agent +%manifest fido-roaming-agent.manifest +%{_bindir}/* +%{_unitdir}/fido-roaming-agent.service +%{_unitdir}/multi-user.target.wants/fido-roaming-agent.service +%attr(0777,service_fw,service_fw)/opt/data/fido-ra/*.dat + +################################################################################# +# FIDO BLE Roaming Agent +################################################################################# +%package -n fido_ble_roaming_agent +Summary: FIDO BLE Roaming Agent +Group: Account + +BuildRequires: cmake +BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(bundle) +BuildRequires: pkgconfig(json-glib-1.0) +BuildRequires: pkgconfig(glib-2.0) >= 2.26 +BuildRequires: pkgconfig(gio-unix-2.0) +BuildRequires: pkgconfig(capi-network-connection) +BuildRequires: pkgconfig(capi-network-bluetooth) + + +%description -n fido_ble_roaming_agent +FIDO BT Roaming Agent GATT Server + +%files -n fido_ble_roaming_agent +%manifest fido-ble-ragent.manifest +%{_bindir}/fido-ble-ragent-service +%{_unitdir}/fido-ble-roaming-agent.service +%{_unitdir}/multi-user.target.wants/fido-ble-roaming-agent.service + +################################################################################# +# FIDO BT Roaming Agent +################################################################################# +%package -n fido_bt_roaming_agent +Summary: FIDO BT Roaming Agent +Group: Account + +BuildRequires: cmake +BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(bundle) +BuildRequires: pkgconfig(json-glib-1.0) +BuildRequires: pkgconfig(glib-2.0) >= 2.26 +BuildRequires: pkgconfig(gio-unix-2.0) +BuildRequires: pkgconfig(capi-network-connection) +BuildRequires: pkgconfig(capi-network-bluetooth) + + +%description -n fido_bt_roaming_agent +FIDO BT Roaming Agent + +%files -n fido_bt_roaming_agent +%manifest fido-bt-ragent.manifest +%{_bindir}/fido-bt-ragent-service +%{_unitdir}/fido-bt-roaming-agent.service +%{_unitdir}/multi-user.target.wants/fido-bt-roaming-agent.service diff --git a/packaging/fido-ble-roaming-agent.service b/packaging/fido-ble-roaming-agent.service new file mode 100644 index 0000000..0e21329 --- /dev/null +++ b/packaging/fido-ble-roaming-agent.service @@ -0,0 +1,10 @@ +[Unit] +Description=FIDO GATT Service for Roaming Authenticator + +[Service] +ExecStart=/usr/bin/fido-ble-ragent-service +User=system +Group=system + +[Install] +WantedBy=multi-user.target diff --git a/packaging/fido-bt-roaming-agent.service b/packaging/fido-bt-roaming-agent.service new file mode 100644 index 0000000..da82014 --- /dev/null +++ b/packaging/fido-bt-roaming-agent.service @@ -0,0 +1,10 @@ +[Unit] +Description=FIDO BT Agent Service for Roaming Authenticator + +[Service] +ExecStart=/usr/bin/fido-bt-ragent-service +User=system +Group=system + +[Install] +WantedBy=multi-user.target diff --git a/packaging/fido-roaming-agent.service b/packaging/fido-roaming-agent.service new file mode 100644 index 0000000..6f9d31d --- /dev/null +++ b/packaging/fido-roaming-agent.service @@ -0,0 +1,10 @@ +[Unit] +Description=FIDO Agent Service for Roaming Authenticator + +[Service] +ExecStart=/usr/bin/fido-roaming-agent-service +User=system +Group=system + +[Install] +WantedBy=multi-user.target diff --git a/packaging/org.tizen.fido-asm.conf b/packaging/org.tizen.fido-asm.conf new file mode 100644 index 0000000..5a5fb04 --- /dev/null +++ b/packaging/org.tizen.fido-asm.conf @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packaging/org.tizen.fido-asm.service b/packaging/org.tizen.fido-asm.service new file mode 100644 index 0000000..3b72f51 --- /dev/null +++ b/packaging/org.tizen.fido-asm.service @@ -0,0 +1,8 @@ +[Unit] +Description=FIDO ASM Service D-BUS + +[D-BUS Service] +Name=org.tizen.fidoasm +Exec=/usr/bin/fido-asm +User=service_fw +Group=service_fw diff --git a/roaming_agent/CMakeLists.txt b/roaming_agent/CMakeLists.txt new file mode 100644 index 0000000..3039ec9 --- /dev/null +++ b/roaming_agent/CMakeLists.txt @@ -0,0 +1,47 @@ +SET(RAGENT_DAEMON fido-roaming-agent-service) + +INCLUDE(FindPkgConfig) +pkg_check_modules(RAGENT_DAEMON_PKGS REQUIRED + dlog + db-util + glib-2.0 + capi-base-common + pkgmgr-info + gio-2.0 + gio-unix-2.0 + gmodule-2.0 + cynara-client + cynara-session + cynara-creds-gdbus + capi-network-connection + capi-base-common + capi-appfw-application + capi-appfw-app-manager + aul + json-glib-1.0 + iotcon + capi-system-info + capi-system-system-settings +) + +FOREACH(flag ${RAGENT_DAEMON_PKGS_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIE") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS}") +SET(PKGS_LDFLAGS "${RAGENT_DAEMON_PKGS_LDFLAGS} -pie") + +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/roaming_agent/inc/) + +FILE( GLOB RAGENT_DAEMON_SRCS_CC + src/*.c +) + +ADD_EXECUTABLE(${RAGENT_DAEMON} ${RAGENT_DAEMON_SRCS_CC}) + +TARGET_LINK_LIBRARIES(${RAGENT_DAEMON} ${RAGENT_DAEMON_PKGS_LDFLAGS} fido-asm-dbus "-ldl") + +INSTALL(TARGETS ${RAGENT_DAEMON} DESTINATION bin) +INSTALL(FILES ${CMAKE_SOURCE_DIR}/common/fido-ra-acl-server.dat DESTINATION /opt/data/fido-ra) diff --git a/roaming_agent/inc/RoamingKeys.h b/roaming_agent/inc/RoamingKeys.h new file mode 100644 index 0000000..3b23bf9 --- /dev/null +++ b/roaming_agent/inc/RoamingKeys.h @@ -0,0 +1,16 @@ +#include + +#ifndef ROAMINGKEYS_H +#define ROAMINGKEYS_H + +#define RA_RESOURCE_URI "/fido/auth/roaming/pin" +#define RA_RESOURCE_TYPE "org.tizen.fidoauthroamingpin" + +#define RA_QUERY_KEY_REQUEST "ra_query_prcoess_tlv" +#define RA_QUERY_KEY_SERVER_ID "ra_query_server_id" +#define RA_QUERY_KEY_RESPONSE "ra_response" + +#define RA_ACL_SERVER tzplatform_mkpath(TZ_SYS_DATA, "fido-ra/fido-ra-acl-server.dat") +#define RA_ACL_CLIENT tzplatform_mkpath(TZ_SYS_DATA, "fido-asm/fido-ra-acl-client.dat") + +#endif // ROAMINGKEYS_H diff --git a/roaming_agent/src/iotcon_handler.c b/roaming_agent/src/iotcon_handler.c new file mode 100644 index 0000000..3dc8bad --- /dev/null +++ b/roaming_agent/src/iotcon_handler.c @@ -0,0 +1,504 @@ +/* + * iotcon_handler.c + * + * Created on: May 16, 2016 + * Author: manasij.r + */ + +#include +#include +#include +#include + +#include +#include + +#include "iotcon_handler.h" +#include "RoamingKeys.h" +#include "AsmHelper.h" +#include "fido-client-ipc-stub.h" + +#include +#include +#include + +#define IC_FEATURE_OIC "http://tizen.org/feature/iot.oic" +#define IC_FEATURE_OCF "http://tizen.org/feature/iot.ocf" + +#include + +//#define ASM_GET_INFO_RESP "{\"responseData\":{\"Authenticators\":[{\"aaid\":\"R001#8001\",\"asmVersions\":[{\"major\":1,\"minor\":0}],\"assertionScheme\":\"UAFV1TLV\",\"title\":\"UAF PIN Roaming\",\"attestationTypes\":[15879],\"tcDisplayContentType\":\"text/plain\",\"description\":\"Tizen Roaming PIN Authenticator\",\"supportedExtensionIDs\":[\"abc\"],\"icon\":\"data:image/png;base64,iVBORw0KGgoAAA\",\"isRoamingAuthenticator\":true,\"isSecondFactorOnly\":false,\"isUserEnrolled\":true,\"keyProtection\":1,\"matcherProtection\":1,\"hasSettings\":true,\"tcDisplay\":1,\"authenticatorIndex\":9,\"authenticationAlgorithm\":1,\"attachmentHint\":2,\"userVerification\":4}]},\"statusCode\":0}" + +/* ra Resource */ +typedef struct _ra_resource_s { + bool state; + char *uri_path; + char *type; + iotcon_resource_interfaces_h ifaces; + int properties; + iotcon_resource_h handle; + iotcon_observers_h observers; + iotcon_representation_h repr; +} ra_resource_s; + +static void _request_handler(iotcon_resource_h resource, iotcon_request_h request, + void *user_data); + +static Fidoasm* +__asm_get_dbus_proxy(void) +{ +#if !GLIB_CHECK_VERSION(2, 35, 0) + g_type_init(); +#endif + + GDBusConnection *connection = NULL; + GError *error = NULL; + + connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error); + + /* Create the object */ + Fidoasm *dbus_proxy = fidoasm_proxy_new_sync(connection, + G_DBUS_PROXY_FLAGS_NONE, + "org.tizen.fidoasm", + "/org/tizen/fidoasm", + NULL, + &error); + + if (error != NULL) + _ERR("fidoasm_proxy_new_sync failed %s", error->message); + + return dbus_proxy; +} + +static int +_set_ra_resource(ra_resource_s *ra) +{ + _INFO("_set_ra_resource"); + + int ret; + + ra->state = false; + + ra->uri_path = strdup(RA_RESOURCE_URI); + if (NULL == ra->uri_path) { + return -1; + } + + ra->type = strdup(RA_RESOURCE_TYPE); + if (NULL == ra->type) { + free(ra->uri_path); + return -1; + } + + ret = iotcon_resource_interfaces_create(&ra->ifaces); + if (IOTCON_ERROR_NONE != ret) { + free(ra->type); + free(ra->uri_path); + return -1; + } + + ret = iotcon_resource_interfaces_add(ra->ifaces, IOTCON_INTERFACE_DEFAULT); + if (IOTCON_ERROR_NONE != ret) { + iotcon_resource_interfaces_destroy(ra->ifaces); + free(ra->type); + free(ra->uri_path); + return -1; + } + + ra->properties = IOTCON_RESOURCE_DISCOVERABLE; + +// ret = iotcon_observers_create(&ra->observers); +// if (IOTCON_ERROR_NONE != ret) { +// iotcon_resource_interfaces_destroy(ra->ifaces); +// free(ra->type); +// free(ra->uri_path); +// return -1; +// } + + _INFO("_set_ra_resource end"); + + return 0; +} + +static void _free_ra_resource(ra_resource_s *ra) +{ + iotcon_observers_destroy(ra->observers); + iotcon_resource_interfaces_destroy(ra->ifaces); + free(ra->type); + free(ra->uri_path); +} + +static iotcon_resource_h +_create_ra_resource(char *uri_path, char *type, + iotcon_resource_interfaces_h ifaces, int properties, void *user_data) +{ + _INFO("_create_ra_resource start"); + + int ret; + iotcon_resource_h handle; + iotcon_resource_types_h resource_types; + + ret = iotcon_resource_types_create(&resource_types); + if (IOTCON_ERROR_NONE != ret) { + return NULL; + } + + ret = iotcon_resource_types_add(resource_types, type); + if (IOTCON_ERROR_NONE != ret) { + iotcon_resource_types_destroy(resource_types); + return NULL; + } + + /* register ra resource */ + ret = iotcon_resource_create(uri_path, resource_types, ifaces, properties, + _request_handler, user_data, &handle); + if (IOTCON_ERROR_NONE != ret) { + iotcon_resource_types_destroy(resource_types); + return NULL; + } + + iotcon_resource_types_destroy(resource_types); + + _INFO("_create_ra_resource end"); + + return handle; +} + +static int +_send_response(iotcon_request_h request, iotcon_representation_h repr, + iotcon_response_result_e result) +{ + _INFO("_send_response start"); + + int ret; + iotcon_response_h response; + + ret = iotcon_response_create(request, &response); + if (IOTCON_ERROR_NONE != ret) { + return -1; + } + + ret = iotcon_response_set_result(response, result); + if (IOTCON_ERROR_NONE != ret) { + iotcon_response_destroy(response); + return -1; + } + + ret = iotcon_response_set_representation(response, repr); + if (IOTCON_ERROR_NONE != ret) { + iotcon_response_destroy(response); + return -1; + } + + /* send Representation to the client */ + ret = iotcon_response_send(response); + if (IOTCON_ERROR_NONE != ret) { + iotcon_response_destroy(response); + return -1; + } + + iotcon_response_destroy(response); + + _INFO("_send_response end"); + + return 0; +} + +static iotcon_representation_h +_create_ra_representation(ra_resource_s *ra, char *tlvRespB64) +{ + _INFO("_get_ra_representation start"); + + int ret; + iotcon_attributes_h state = NULL; + iotcon_representation_h repr = NULL; + + /* create a ra Representation */ + ret = iotcon_representation_create(&repr); + if (IOTCON_ERROR_NONE != ret) { + return NULL; + } + + _INFO("After iotcon_representation_create"); + + /* create a ra state */ + ret = iotcon_attributes_create(&state); + if (IOTCON_ERROR_NONE != ret) { + iotcon_representation_destroy(repr); + return NULL; + } + + _INFO("After iotcon_attributes_create"); + + ret = iotcon_representation_set_uri_path(repr, RA_RESOURCE_URI/*ra->uri_path*/); + if (IOTCON_ERROR_NONE != ret) { + iotcon_attributes_destroy(state); + iotcon_representation_destroy(repr); + return NULL; + } + + _INFO("After iotcon_representation_set_uri_path"); + + /*TODO:Call Mobile ASM with the incoming query (Base64 decoded TLV)*/ + //char tlv_b64_dec[5000] = {0,}; + //snprintf(tlv_b64_dec, 4999, "%s", ASM_GET_INFO_RESP); + iotcon_attributes_add_str(state, RA_QUERY_KEY_RESPONSE, tlvRespB64); + if (IOTCON_ERROR_NONE != ret) { + iotcon_attributes_destroy(state); + iotcon_representation_destroy(repr); + return NULL; + } + + _INFO("After iotcon_attributes_add_str"); + ret = iotcon_representation_set_attributes(repr, state); + if (IOTCON_ERROR_NONE != ret) { + iotcon_attributes_destroy(state); + iotcon_representation_destroy(repr); + return NULL; + } + + //iotcon_attributes_destroy(state); + + _INFO("After end [%p]", repr); + return repr; +} + +char* +__getServerId(void) +{ + connection_h conn = NULL; + connection_create(&conn); + + static char *mac = NULL; + if (mac != NULL) + return mac; + + /*Try: Ethernet*/ + int ret = connection_get_mac_address(conn, CONNECTION_TYPE_ETHERNET, &mac); + + /*Try: Wifi*/ + if (ret != CONNECTION_ERROR_NONE) + ret = connection_get_mac_address(conn, CONNECTION_TYPE_WIFI, &mac); + + /*Try: BT*/ + if (ret != CONNECTION_ERROR_NONE) + ret = connection_get_mac_address(conn, CONNECTION_TYPE_BT, &mac); + + return mac; +} + +static int +_request_handler_put(ra_resource_s *ra, iotcon_request_h request) +{ + _INFO("_request_handler_put start"); + + int ret = 0; + + iotcon_representation_h repr = NULL; + iotcon_request_get_representation(request, &repr); + if (repr == NULL) { + _ERR("iotcon_request_get_representation failed"); + return -1; + } + + iotcon_attributes_h attr = NULL; + iotcon_representation_get_attributes(repr, &attr); + if (attr == NULL) { + _ERR("iotcon_representation_get_attributes failed"); + return -1; + } + + char *tlvReqB64 = NULL; + iotcon_attributes_get_str(attr, RA_QUERY_KEY_REQUEST, &tlvReqB64); + if (tlvReqB64 == NULL) { + _ERR("[%s] key missing", RA_QUERY_KEY_REQUEST); + _send_response(request, NULL, IOTCON_RESPONSE_ERROR); + + return -1; + } + + char *serverId = NULL; + iotcon_attributes_get_str(attr, RA_QUERY_KEY_SERVER_ID, &serverId); + if (serverId == NULL) { + _ERR("[%s] key missing", RA_QUERY_KEY_SERVER_ID); + _send_response(request, NULL, IOTCON_RESPONSE_ERROR); + + return -1; + } + + if (strcmp(serverId, __getServerId()) == 0) { + _ERR("Request from same Device is ignored"); + _send_response(request, NULL, IOTCON_RESPONSE_ERROR); + + return -1; + } + + + /*Call ASM dbus and receive the response*/ + Fidoasm *asm_proxy = __asm_get_dbus_proxy(); + if (asm_proxy == NULL) { + _ERR("Failed to get ASM proxy"); + _send_response(request, NULL, IOTCON_RESPONSE_ERROR); + return -1; + } + + + char *tlvRespB64 = NULL; + GError *gErr = NULL; + int tz_err = 0; + fidoasm_call_asm_request_sync(asm_proxy, tlvReqB64, + &tz_err, &tlvRespB64, NULL, &gErr); + if (gErr != NULL) { + + _send_response(request, NULL, IOTCON_RESPONSE_ERROR); + _ERR("Failed returned from ASM"); + return -1; + } + + iotcon_representation_h resp_repr; + + resp_repr = _create_ra_representation(ra, tlvRespB64); + if (NULL == resp_repr) { + _send_response(request, NULL, IOTCON_RESPONSE_ERROR); + _ERR("RA representation create failed"); + return -1; + } + + ret = _send_response(request, resp_repr, IOTCON_RESPONSE_OK); + if (0 != ret) { + iotcon_representation_destroy(resp_repr); + return -1; + } + + iotcon_representation_destroy(resp_repr); + + return 0; +} + +//static bool +//_query_cb(const char *key, const char *value, void *user_data) +//{ +// return IOTCON_FUNC_CONTINUE; +//} + +static void +_request_handler(iotcon_resource_h resource, iotcon_request_h request, + void *user_data) +{ + _INFO("_request_handler start"); + + /*TODO: Only allow if request is not coming from the same device*/ + + ra_resource_s *ra; + iotcon_query_h query; + //int ret, observe_id; + iotcon_request_type_e type; + //iotcon_observe_type_e observe_type; + //char *host_address; + + if (request == NULL) + return; + + int ret = iotcon_request_get_query(request, &query); + if (IOTCON_ERROR_NONE != ret) { + _send_response(request, NULL, IOTCON_RESPONSE_ERROR); + return; + } +// if (query) +// iotcon_query_foreach(query, _query_cb, NULL); + + ret = iotcon_request_get_request_type(request, &type); + if (IOTCON_ERROR_NONE != ret) { + _send_response(request, NULL, IOTCON_RESPONSE_ERROR); + return; + } + + + ra = user_data; + + + if (IOTCON_REQUEST_PUT == type) { + ret = _request_handler_put(ra, request); + } + else { + _send_response(request, NULL, IOTCON_RESPONSE_ERROR); + } + +} + +static bool +__iotcon_handler_is_supported(void) +{ + bool raSupported = false; + system_info_get_platform_bool(IC_FEATURE_OIC, &raSupported); + if (raSupported == false) + system_info_get_platform_bool(IC_FEATURE_OCF, &raSupported); + + return raSupported; +} + +int +iotcon_handler_init(void) +{ + _INFO("iotcon_handler_init"); + if (__iotcon_handler_is_supported() == false) { + _ERR("RA not supported"); + return -1; + } + + int ret; + ra_resource_s ra = {0}; + + + /* initialize iotcon */ + ret = iotcon_initialize(RA_ACL_SERVER); + if (IOTCON_ERROR_NONE != ret) { + return -1; + } + + /* set local ra resource */ + ret = _set_ra_resource(&ra); + if (0 != ret) { + iotcon_deinitialize(); + return -1; + } + + /* add resource options */ + ret = iotcon_resource_interfaces_add(ra.ifaces, IOTCON_INTERFACE_BATCH); + if (IOTCON_ERROR_NONE != ret) { + _free_ra_resource(&ra); + iotcon_deinitialize(); + + return -1; + } + //ra.properties |= IOTCON_RESOURCE_OBSERVABLE; + + /* add presence */ + //g_timeout_add_seconds(10, _presence_timer, NULL); + //iotcon_start_presence(10); + + /* create new ra resource */ + ra.handle = _create_ra_resource(ra.uri_path, ra.type, ra.ifaces, + ra.properties, &ra); + if (NULL == ra.handle) { + + _free_ra_resource(&ra); + iotcon_deinitialize(); + return -1; + } + + //_check_ra_state(my_ra); + + + //iotcon_resource_destroy(ra.handle); + + //_free_ra_resource(&ra); + + /* deinitialize iotcon */ + //iotcon_deinitialize(); + + return 0; +} + + + diff --git a/roaming_agent/src/iotcon_handler.h b/roaming_agent/src/iotcon_handler.h new file mode 100644 index 0000000..6513123 --- /dev/null +++ b/roaming_agent/src/iotcon_handler.h @@ -0,0 +1,15 @@ +/* + * iotcon_handler.h + * + * Created on: May 16, 2016 + * Author: manasij.r + */ + +#ifndef IOTCON_HANDLER_H_ +#define IOTCON_HANDLER_H_ + + +int iotcon_handler_init(void); + + +#endif /* IOTCON_HANDLER_H_ */ diff --git a/roaming_agent/src/ragent_main.c b/roaming_agent/src/ragent_main.c new file mode 100644 index 0000000..512f4d9 --- /dev/null +++ b/roaming_agent/src/ragent_main.c @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include + +#include "iotcon_handler.h" +#include "AsmHelper.h" + +int +main(int argc, char *argv[]) +{ + _INFO("Starting Roaming Agent Service"); + + int ret = iotcon_handler_init(); + if (ret != 0) { + _ERR("iotcon init failed [%d]", ret); + + return 0; + } + + GMainLoop *mainloop = g_main_loop_new(NULL, FALSE); + + g_main_loop_run(mainloop); + + _INFO("Stopping Roaming Agent Service"); + + return 0; +} diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt new file mode 100644 index 0000000..3ad6f4a --- /dev/null +++ b/server/CMakeLists.txt @@ -0,0 +1,75 @@ +SET(DAEMON fido-asm) + +INCLUDE(FindPkgConfig) +pkg_check_modules(SERVICE_PKGS REQUIRED + dlog + db-util + glib-2.0 + capi-base-common + pkgmgr-info + gio-2.0 + gio-unix-2.0 + gmodule-2.0 + vconf + cynara-client + cynara-session + cynara-creds-gdbus + capi-network-connection + sqlite3 + capi-base-common + capi-appfw-application + capi-appfw-app-manager + openssl + aul + json-glib-1.0 + iotcon + openssl + capi-system-info + capi-system-system-settings + vconf + capi-network-bluetooth + capi-network-wifi-direct + db-util +) + +FOREACH(flag ${SERVICE_PKGS_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIE") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS}") +SET(PKGS_LDFLAGS "${SERVICE_PKGS_LDFLAGS} -pie") + +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/server/inc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/server/states/inc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/server/ops/inc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/server/auth_discovery/inc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/datatypes/inc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/datatypes/auth/) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/jsonutil/inc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/uafv1tlvutil/inc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/cryptoutil/inc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/datatypes/auth/) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/uiutil/inc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/roaming_agent/inc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/bt_roaming_agent/inc) + +FILE( GLOB SERVICE_SRCS_CC + src/*.cpp + auth_discovery/src/*.cpp + ops/src/*.cpp + states/src/*.cpp + ../common/datatypes/src/*.cpp + ../common/jsonutil/src/*.cpp + ../common/uafv1tlvutil/src/*.cpp + ../common/cryptoutil/src/*.cpp + ../common/uiutil/src/*.cpp +) + +ADD_EXECUTABLE(${DAEMON} ${SERVICE_SRCS_CC}) + +TARGET_LINK_LIBRARIES(${DAEMON} ${SERVICE_PKGS_LDFLAGS} fido-asm-dbus "-ldl" "-lpthread" "-lgthread-2.0") + +INSTALL(TARGETS ${DAEMON} DESTINATION bin) +INSTALL(FILES ${CMAKE_SOURCE_DIR}/server/fido_asm.json DESTINATION ${LIBDIR}/fido/asm/) diff --git a/server/auth_discovery/inc/AuthIndexHanlder.h b/server/auth_discovery/inc/AuthIndexHanlder.h new file mode 100644 index 0000000..f106bf4 --- /dev/null +++ b/server/auth_discovery/inc/AuthIndexHanlder.h @@ -0,0 +1,26 @@ +#ifndef AUTHINDEXHANLDER_H +#define AUTHINDEXHANLDER_H + +#include +#include + +class AuthIndexHandler { + +public: + static AuthIndexHandler *getInstance(void); + + /*Maps the Auth Index reported by the Authenticator to the index used in ASM*/ + int getMappedIndex(const std::string& devId, const std::string& aaid, int authIndex); + + /*Maps the index used in ASM to the actual Authenticator Index*/ + int getAuthIndex(int mappedIndex); + +private: + AuthIndexHandler(void); + ~AuthIndexHandler(void); + +private: + static AuthIndexHandler *__this; +}; + +#endif // AUTHINDEXHANLDER_H diff --git a/server/auth_discovery/inc/AuthManager.h b/server/auth_discovery/inc/AuthManager.h new file mode 100644 index 0000000..bf8f59b --- /dev/null +++ b/server/auth_discovery/inc/AuthManager.h @@ -0,0 +1,31 @@ +#ifndef AuthManager_H +#define AuthManager_H + +#include +#include +#include + +#include "IADProvider.h" + + +class GetInfoResp; + +class AuthManager { +public: + static AuthManager* getInstance(void); + + std::vector* getAuthStubList(auth_type_e type); + IAuthStub* getAuthStub(int mappedIndex); + int setAuthStubCache(auth_type_e type, std::map *stubCache); + +private: + int initProviders(void); + void appendToFullStubList(std::vector *origList, std::vector *stubList); + +private: + static AuthManager *__this; + std::vector __providerList; + std::map *__cache; +}; + +#endif // AuthManager_H diff --git a/server/auth_discovery/inc/BAuthStub.h b/server/auth_discovery/inc/BAuthStub.h new file mode 100644 index 0000000..7ca3822 --- /dev/null +++ b/server/auth_discovery/inc/BAuthStub.h @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef _BAUTH_STUB_H_ +#define _BAUTH_STUB_H_ + +#include "IAuthStub.h" + +class BAuthStub : public IAuthStub { + + friend class BoundADProvider; + +public: + int initLocal(auth_plugin_handle_s *pluginH); + int initRemote(IAuthConnection *conH); + + auth_type_e getType(void); + + GetAuthInfoResp *getInfo(void); + + int connect(void); + int disConnect(void); + + /* + * Roaming Auth: No need to call enroll,verify + * Bound Auth: Silent Authenticator, no need to call enroll, verify + */ + bool isUserVerificationNeeded(void); + bool hasAuthUi(void); + int enroll(const char *opt); + bool isEnrolled(void); + int verify(const char *opt, const char *fch, char **vToken); + + RegisterResp* processRegister(const RegisterReq *regReq); + AuthenticateResp* processAuthenticate(const AuthenticateReq *authnReq); + DeregResp* processDeregister(const DeregReq *deregReq); + + int openSettings(void); + + Buffer* hash(const std::string& message); + + Buffer* encodeRegisterRespone(RegAssertion *regAssrt, char **assrt_scheme); + Buffer* encodeSignRespone(AuthAssertion *authAssertion, char **assrt_scheme); + virtual void shutDown(void) + { + + } + +private: + BAuthStub(void); + ~BAuthStub(void); + +private: + auth_plugin_handle_s *__pluginHandle; + GetAuthInfoResp *__cachedData; +}; + +#endif /* _BAUTH_STUB_H_ */ diff --git a/server/auth_discovery/inc/BleAdProvider.h b/server/auth_discovery/inc/BleAdProvider.h new file mode 100644 index 0000000..c59a96b --- /dev/null +++ b/server/auth_discovery/inc/BleAdProvider.h @@ -0,0 +1,39 @@ +#ifndef _BLE_AD_PROVIDER_H +#define _BLE_AD_PROVIDER_H + +#include + +#include "IADProvider.h" +#include + +class BleAdProvider : public IADProvider { + friend class AuthManager; +public: + virtual int init(void); + virtual auth_type_e getType(void); + virtual std::vector *getAuthStubList(void); + virtual void setCache(std::map *stubCache); + virtual IAuthStub* getStubFromCache(int mappedIdx); + + virtual ~BleAdProvider(void); + +private: + BleAdProvider(void); + + static void onGattConchanged(int result, bool connected, + const char *remote_address, void *user_data); + static void onBtStateChanged(int result, bt_adapter_state_e adapter_state, + void *user_data); + static void onLEScanResult(int result, bt_adapter_le_device_scan_result_info_s *info, + void *user_data); + static void finishDiscovery(gpointer data); + static gboolean discoverTimeOutCb(gpointer user_data); + +private: + std::map *__stubCache; + + GMainLoop *__waitLoop; + bool __isValidInst; +}; + +#endif // _BLE_AD_PROVIDER_H diff --git a/server/auth_discovery/inc/BleCon.h b/server/auth_discovery/inc/BleCon.h new file mode 100644 index 0000000..221deb2 --- /dev/null +++ b/server/auth_discovery/inc/BleCon.h @@ -0,0 +1,48 @@ +#ifndef _BLE_CON_H +#define _BLE_CON_H + +#include "IAuthConnection.h" +#include +#include + +class GattClient { +public: + GattClient(void) + { + __btClientInfo = NULL; + __btClient = NULL; + __btClientSvc = NULL; + __btClientChrReq = NULL; + __btClientChrResp = NULL; + } + +public: + /*bt_adapter_le_device_scan_result_info_s *__btClientInfo;*/ + char *__btClientInfo; + bt_gatt_client_h __btClient; + bt_gatt_h __btClientSvc; + bt_gatt_h __btClientChrReq; + bt_gatt_h __btClientChrResp; +}; + +class BleCon : public IAuthConnection { +public: + BleCon(void); + ~BleCon(void); + + virtual int init(void *handle); + virtual StringMap* sendReqSync(StringMap *reqData); + virtual int shutdown(void); + virtual char* getInfo(void); +private: + static void onGattServerResponse(bt_gatt_h characteristic, char *value, + int len, void *user_data); + static void onGattWriteComplete(int result, bt_gatt_h request_handle, + void *user_data); +private: + GattClient *__gClient; + GMainLoop *__waitLoop; + StringMap *__resp; +}; + +#endif // _BLE_CON_H diff --git a/server/auth_discovery/inc/BoundADProvider.h b/server/auth_discovery/inc/BoundADProvider.h new file mode 100644 index 0000000..c43e616 --- /dev/null +++ b/server/auth_discovery/inc/BoundADProvider.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef _BADP_H_ +#define _BADP_H_ + +#include "IADProvider.h" +#include +#include "AuthnrTypes.h" +#include +#include + +class BoundADProvider : public IADProvider { + + friend class AuthManager; +public: + virtual int init(void); + virtual auth_type_e getType(void); + virtual std::vector *getAuthStubList(void); + virtual void setCache(std::map *stubCache); + virtual IAuthStub* getStubFromCache(int mappedIdx); + + virtual ~BoundADProvider(void); + +private: + BoundADProvider(void); + + int loadPlugins(const std::string& dirName); + int initPluginList(void); + plugin_conn_handle_s* createConnectionHandle(void *mod); + plugin_assrt_handle_s* createAssertionHandle(void *mod); + plugin_process_handle_s* createProcessHandle(void *mod); + plugin_user_op_handle_s* createUserOpHandle(void *mod); + plugin_hash_handle_s* createHashHandle(void *mod); + plugin_ui_op_handle_s* createUiOpHandle(void *mod); + +private: + std::map *__stubCache; + typedef std::map::iterator AuthnrMapIter; + +}; + +#endif /* _BADP_H_ */ diff --git a/server/auth_discovery/inc/BtAdProvider.h b/server/auth_discovery/inc/BtAdProvider.h new file mode 100644 index 0000000..6925333 --- /dev/null +++ b/server/auth_discovery/inc/BtAdProvider.h @@ -0,0 +1,39 @@ +#ifndef BTADPROVIDER_H +#define BTADPROVIDER_H + +#include + +#include "IADProvider.h" +#include + +class BtAdProvider : public IADProvider { + friend class AuthManager; +public: + virtual int init(void); + virtual auth_type_e getType(void); + virtual std::vector *getAuthStubList(void); + virtual void setCache(std::map *stubCache); + virtual IAuthStub* getStubFromCache(int mappedIdx); + + virtual ~BtAdProvider(void); + +private: + BtAdProvider(void); + static void onSockChanged(int result, bt_socket_connection_state_e connection_state, + bt_socket_connection_s *connection, void *user_data); + static bool onBondedList(bt_device_info_s *device_info, void *user_data); + + static void finishDiscovery(gpointer data); + static gboolean discoverTimeOutCb(gpointer user_data); + +private: + std::map *__stubCache; + + GMainLoop *__waitLoop; + bool __isValidInst; + bool __isDiscovering; + char *__sAddr; + bool __isConCbSet; +}; + +#endif // BTADPROVIDER_H diff --git a/server/auth_discovery/inc/BtCon.h b/server/auth_discovery/inc/BtCon.h new file mode 100644 index 0000000..d19c0d4 --- /dev/null +++ b/server/auth_discovery/inc/BtCon.h @@ -0,0 +1,45 @@ +#ifndef BTCON_H +#define BTCON_H + +#include "IAuthConnection.h" +#include +#include + +class BtCon; + +class BtTimerInfo { +public: + int __timerId; + BtCon *__caller; +}; + +class BtCon : public IAuthConnection { +public: + BtCon(void); + ~BtCon(void); + + virtual int init(void *handle); + virtual StringMap* sendReqSync(StringMap *reqData); + virtual int shutdown(void); + virtual char* getInfo(void); + +private: + void receiveFinshed(void); + static int sendDataInternal(int sock_fd, char *data); + static void timerExpired(gpointer data); + static gboolean discoverTimeOutCb(gpointer user_data); + static void onBtSockDataReceived(bt_socket_received_data_s *data, void *user_data); +private: + bt_socket_connection_s *__sock; + GMainLoop *__waitLoop; + StringMap *__resp; + + char *__fullData; + int __fullDataLen; + + int __expDLen; + int __remDLen; + int __activeTimerId; +}; + +#endif // BTCON_H diff --git a/server/auth_discovery/inc/IADProvider.h b/server/auth_discovery/inc/IADProvider.h new file mode 100644 index 0000000..36b0069 --- /dev/null +++ b/server/auth_discovery/inc/IADProvider.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef _IADP_H_ +#define _IADP_H_ + +#include +#include +#include "AuthnrTypes.h" + +class IAuthStub; + +class IADProvider { +public: + virtual int init(void) = 0; + virtual auth_type_e getType(void) = 0; + virtual std::vector *getAuthStubList(void) = 0; + virtual void setCache(std::map *stubCache) = 0; + virtual IAuthStub* getStubFromCache(int mappedIdx) = 0; + + virtual ~IADProvider(){} +}; + +#endif /* _IADP_H_ */ diff --git a/server/auth_discovery/inc/IAuthConnection.h b/server/auth_discovery/inc/IAuthConnection.h new file mode 100644 index 0000000..773c23c --- /dev/null +++ b/server/auth_discovery/inc/IAuthConnection.h @@ -0,0 +1,19 @@ +#ifndef IAUTHCONNECTION_H +#define IAUTHCONNECTION_H + +#include +#include + +typedef std::map StringMap; + +class IAuthConnection { +public: + ~IAuthConnection(void){} + + virtual int init(void *handle) = 0; + virtual StringMap* sendReqSync(StringMap *reqData) = 0; + virtual char *getInfo(void) = 0; + virtual int shutdown(void) = 0; +}; + +#endif // IAUTHCONNECTION_H diff --git a/server/auth_discovery/inc/IAuthStub.h b/server/auth_discovery/inc/IAuthStub.h new file mode 100644 index 0000000..72c359e --- /dev/null +++ b/server/auth_discovery/inc/IAuthStub.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef _IAUTH_STUB_H_ +#define _IAUTH_STUB_H_ + +#include +#include "AuthnrTypes.h" + +class IAuthConnection; + +class IAuthStub { +public: + + /*Auth Stub can be created by either one of the two*/ + virtual int initLocal(auth_plugin_handle_s *pluginH) = 0; + virtual int initRemote(IAuthConnection *conH) = 0; + + virtual auth_type_e getType(void) = 0; + + virtual GetAuthInfoResp *getInfo(void) = 0; + + /* + * Roaming Auth: No need to call enroll,verify + * Bound Auth: Silent Authenticator, no need to call enroll, verify + */ + virtual bool isUserVerificationNeeded(void) = 0; + virtual bool hasAuthUi(void) = 0; + /*Silent Auth does not need Enroll/Verify*/ + virtual int enroll(const char *opt) = 0; + virtual bool isEnrolled(void) = 0; + virtual int verify(const char *opt, const char *fch, char **vToken) = 0; + virtual RegisterResp* processRegister(const RegisterReq *regReq) = 0; + virtual AuthenticateResp* processAuthenticate(const AuthenticateReq *authnReq) = 0; + virtual DeregResp* processDeregister(const DeregReq *deregReq) = 0; + virtual int openSettings(void) = 0; + virtual Buffer* hash(const std::string& message) = 0; + virtual Buffer* encodeRegisterRespone(RegAssertion *regAssrt, char **assrt_scheme) = 0; + virtual Buffer* encodeSignRespone(AuthAssertion *authAssertion, char **assrt_scheme) = 0; + virtual void shutDown(void) = 0; + + virtual ~IAuthStub(void){} +}; + +#endif /* _IAUTH_STUB_H_ */ diff --git a/server/auth_discovery/inc/IoTCon.h b/server/auth_discovery/inc/IoTCon.h new file mode 100644 index 0000000..f337023 --- /dev/null +++ b/server/auth_discovery/inc/IoTCon.h @@ -0,0 +1,28 @@ +#ifndef IOTCON_H +#define IOTCON_H + +#include "IAuthConnection.h" +#include +#include + +class IoTCon : public IAuthConnection { +public: + + IoTCon(void); + ~IoTCon(void); + + virtual int init(void *handle); + virtual StringMap* sendReqSync(StringMap *reqData); + virtual int shutdown(void); + virtual char* getInfo(void); + +private: + static void onResponsePut(iotcon_remote_resource_h resource, iotcon_error_e err, + iotcon_request_type_e request_type, iotcon_response_h response, void *user_data); +private: + GMainLoop *__waitLoop; + iotcon_remote_resource_h __iotClient; + StringMap* __resp; +}; + +#endif // IOTCON_H diff --git a/server/auth_discovery/inc/IotADProvider.h b/server/auth_discovery/inc/IotADProvider.h new file mode 100644 index 0000000..cc1dc28 --- /dev/null +++ b/server/auth_discovery/inc/IotADProvider.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef _IOT_ADP_H_ +#define _IOT_ADP_H_ + +#include +#include +#include +#include + +#include "IADProvider.h" + +class IAuthStub; + +class IotADProvider : public IADProvider { + + friend class AuthManager; +public: + virtual int init(void); + virtual auth_type_e getType(void); + virtual std::vector *getAuthStubList(void); + virtual void setCache(std::map *stubCache); + virtual IAuthStub* getStubFromCache(int mappedIdx); + + virtual ~IotADProvider(void); + static void finishDiscovery(gpointer data); + static gboolean discoverTimeOutCb(gpointer user_data); + static bool resourceFoundCb(iotcon_remote_resource_h resource, iotcon_error_e result, + void *user_data); +private: + IotADProvider(void); + +private: + /*std::vector *__authList;*/ + std::map *__stubCache; + + GMainLoop *__waitLoop; + bool __isValidInst; + +}; + +#endif /* _IOT_ADP_H_ */ diff --git a/server/auth_discovery/inc/LocalCon.h b/server/auth_discovery/inc/LocalCon.h new file mode 100644 index 0000000..71a3b82 --- /dev/null +++ b/server/auth_discovery/inc/LocalCon.h @@ -0,0 +1,21 @@ +#ifndef LOCALCON_H +#define LOCALCON_H + +#include "IAuthConnection.h" +#include "BoundADProvider.h" + +class LocalCon : public IAuthConnection { + //friend class BoundADProvider; +public: + LocalCon(void) {} + ~LocalCon(void) {} + + virtual int init(void *handle) {return -1;} + StringMap* sendReqSync(StringMap *reqData) {return NULL;} + virtual int shutdown(void) {return 0;} + virtual char* getInfo(void) {return NULL;} +private: + auth_plugin_handle_s *__pluginHandle; +}; + +#endif // LOCALCON_H diff --git a/server/auth_discovery/inc/RAuthStub.h b/server/auth_discovery/inc/RAuthStub.h new file mode 100644 index 0000000..d0d29db --- /dev/null +++ b/server/auth_discovery/inc/RAuthStub.h @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef _RAUTH_STUB_H_ +#define _RAUTH_STUB_H_ + +#include "IAuthStub.h" +#include "IAuthConnection.h" + +class RAuthStub : public IAuthStub { + + friend class IotADProvider; + friend class BleAdProvider; + friend class BtAdProvider; + +public: + int initLocal(auth_plugin_handle_s *pluginH); + int initRemote(IAuthConnection *conH); + + auth_type_e getType(void); + + GetAuthInfoResp *getInfo(void); + + /* + * Roaming Auth: No need to call enroll,verify + * Bound Auth: Silent Authenticator, no need to call enroll, verify + */ + bool isUserVerificationNeeded(void) + { + return false; + } + + bool hasAuthUi(void) + { + return false; + } + + int connect(void) + { + return -1; + } + + int disConnect(void) + { + return -1; + } + + int enroll(const char *opt) + { + return 0; + } + + bool isEnrolled(void) + { + return false; + } + + int verify(const char *opt, const char *fch, char **vToken) + { + return 0; + } + + RegisterResp* processRegister(const RegisterReq *regReq); + + AuthenticateResp* processAuthenticate(const AuthenticateReq *authnReq); + + DeregResp* processDeregister(const DeregReq *deregReq); + + int openSettings(void) + { + return -1; + } + + Buffer* hash(const std::string& message); + + Buffer* encodeRegisterRespone(RegAssertion *regAssrt, char **assrt_scheme); + + Buffer* encodeSignRespone(AuthAssertion *authAssertion, char **assrt_scheme); + + virtual void shutDown(void); + +private: + RAuthStub(void); + ~RAuthStub(void); + + int processTlv(const char *reqTlvB64, char **respTlvB64); + +private: + GetAuthInfoResp *__cachedData; + IAuthConnection *__conH; +}; + +#endif /* _RAUTH_STUB_H_ */ diff --git a/server/auth_discovery/inc/RoamingUtil.h b/server/auth_discovery/inc/RoamingUtil.h new file mode 100644 index 0000000..a67e891 --- /dev/null +++ b/server/auth_discovery/inc/RoamingUtil.h @@ -0,0 +1,46 @@ +#ifndef ROAMINGUTIL_H +#define ROAMINGUTIL_H + +#include +#include +#include "IAuthStub.h" + +class AsmRequest; + +class RoamingUtil { + +public: + static AsmRequest *createAuthReq(const char *tlvB64); + + static char *composeAuthGetInfoReq(void); + + static char *composeAuthRegisterReq(const RegisterReq *req); + static char *composeAuthSignReq(const AuthenticateReq *req); + static char *composeAuthDeregReq(const DeregReq *req); + + static char *composeAuthGetInfoResponce(std::vector *infoList); + + static char *composeAuthRegisterResponse(RegisterResp *regResp); + static char *composeAuthSignResponse(AuthenticateResp *authResp); + static char *composeAuthDeregResponse(DeregResp *dResp); + + static int b64Decode(const char *encoded_data, int encoded_size, unsigned char **decoded_data, + int *decoded_size); + + static char *b64Encode(unsigned char *input, int ip_len); + + static bool isRASupported(void); + + static std::string getBTMACAddr(void); + static std::string getDevName(void); + static std::string getP2PMACAddr(void); + + static char *getServerId(void); +private: + RoamingUtil(void) {} + ~RoamingUtil(void) {} + + static char makeP2PMAC(char c); +}; + +#endif // ROAMINGUTIL_H diff --git a/server/auth_discovery/src/AuthIndexHanlder.cpp b/server/auth_discovery/src/AuthIndexHanlder.cpp new file mode 100644 index 0000000..c021068 --- /dev/null +++ b/server/auth_discovery/src/AuthIndexHanlder.cpp @@ -0,0 +1,137 @@ + +#include "AuthIndexHanlder.h" +#include "AsmStorage.h" +#include "AsmHelper.h" + +AuthIndexHandler *AuthIndexHandler::__this = NULL; + +AuthIndexHandler* +AuthIndexHandler::getInstance(void) +{ + if (__this != NULL) + return __this; + + AuthIndexHandler *tempThis = new AuthIndexHandler(); + + __this = tempThis; + + return __this; + +} + +/*Maps the Auth Index reported by the Authenticator to the index used in ASM*/ +int +AuthIndexHandler::getMappedIndex(const std::string& devId, const std::string& aaid, int authIndex) +{ + /*Indexes are maitained in DB*/ + /*DeviceId-AAID-AuthIndex-MappedIndex*/ + + /*If match found for the given tuple, then stored MappedIndex is returned*/ + + /*Else a new entry is inserted, MappedIndex is surrogate key, auto-incremented*/ + + /*The newly inserted MappedIndex is returned*/ + + + _INFO("Real Index=[%d]", authIndex); + + IStorageParcel *searchParcel = new AuthStorageParcel(); + searchParcel->setInt(INT_PROP_AUTH_ID, authIndex); + searchParcel->setString(STR_PROP_DEV_ID, devId.c_str()); + searchParcel->setString(STR_PROP_AAID, aaid.c_str()); + + std::vector *searchRes = AsmStorage::getInstance()->searchData(searchParcel); + if (searchRes != NULL && searchRes->size() > 0) { + + _INFO("Previously mapped index"); + + std::vector::iterator searchResiter = searchRes->begin(); + for (; searchResiter != searchRes->end(); ++searchResiter) { + + IStorageParcel *resParcel = (IStorageParcel*)(*searchResiter); + + int mappedIndex = authIndex; + resParcel->getInt(INT_PROP_MAPPED_AUTH_ID, &mappedIndex); + + _INFO("Mapped Index=[%d]", mappedIndex); + return mappedIndex; + } + + } else { + + _INFO("New index"); + + IStorageParcel *searchParcelInner = new AuthStorageParcel(); + searchParcelInner->setInt(INT_PROP_AUTH_ID, authIndex); + searchParcelInner->setString(STR_PROP_DEV_ID, devId.c_str()); + searchParcelInner->setString(STR_PROP_AAID, aaid.c_str()); + + AsmStorage::getInstance()->insertData(searchParcelInner); + + _INFO("After insertData"); + + std::vector *searchResInner = AsmStorage::getInstance()->searchData(searchParcelInner); + if (searchResInner != NULL) { + + std::vector::iterator searchResiter = searchResInner->begin(); + for (; searchResiter != searchResInner->end(); ++searchResiter) { + + IStorageParcel *resParcel = (IStorageParcel*)(*searchResiter); + + int mappedIndex = authIndex; + resParcel->getInt(INT_PROP_MAPPED_AUTH_ID, &mappedIndex); + + _INFO("Mapped Index=[%d]", mappedIndex); + return mappedIndex; + } + + } + + } + + _INFO("Mapped Index with error=[%d]", authIndex); + return authIndex; +} + +/*Maps the index used in ASM to the actual Authenticator Index*/ +int +AuthIndexHandler::getAuthIndex(int mappedIndex) +{ + /*Searched the DB with the given mappedIndex, and return the corresponding AuthIndex*/ + + _INFO("Mapped Index=[%d]", mappedIndex); + + IStorageParcel *searchParcel = new AuthStorageParcel(); + searchParcel->setInt(INT_PROP_MAPPED_AUTH_ID, mappedIndex); + + + std::vector *searchRes = AsmStorage::getInstance()->searchData(searchParcel); + if (searchRes != NULL) { + + std::vector::iterator searchResiter = searchRes->begin(); + for (; searchResiter != searchRes->end(); ++searchResiter) { + + IStorageParcel *resParcel = (IStorageParcel*)(*searchResiter); + + int authIndex = mappedIndex; + resParcel->getInt(INT_PROP_AUTH_ID, &authIndex); + + _INFO("Real Index=[%d]", authIndex); + return authIndex; + } + + } + + _INFO("Real Index with error=[%d]", mappedIndex); + return mappedIndex; +} + +AuthIndexHandler::AuthIndexHandler(void) +{ + +} + +AuthIndexHandler::~AuthIndexHandler(void) +{ + +} diff --git a/server/auth_discovery/src/AuthManager.cpp b/server/auth_discovery/src/AuthManager.cpp new file mode 100644 index 0000000..5402cfd --- /dev/null +++ b/server/auth_discovery/src/AuthManager.cpp @@ -0,0 +1,189 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "AuthManager.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" + +#include +#include "BoundADProvider.h" +#include "IotADProvider.h" +#include "RoamingUtil.h" +#include "BleAdProvider.h" +#include "BtAdProvider.h" + +AuthManager* AuthManager::__this = NULL; + +int +AuthManager::initProviders(void) +{ + IADProvider *badPro = new BoundADProvider(); + /*Bound Auth plugins may be installed later*/ + badPro->init(); + _INFO("Bound Provider=[%p]", badPro); + __providerList.push_back(badPro); + + + if (RoamingUtil::isRASupported() == true) { + IADProvider *radPro = new IotADProvider(); + int retRa = radPro->init(); + if (retRa == 0) { + _INFO("Roaming Provider=[%p]", radPro); + __providerList.push_back(radPro); + } else { + _INFO("RA not supported"); + delete radPro; + } + } + + IADProvider *blePro = new BleAdProvider(); + int retBle = blePro->init(); + if (retBle == 0) { + _INFO("BLE Provider=[%p]", blePro); + __providerList.push_back(blePro); + } else { + _INFO("BLE Provider not supported"); + delete blePro; + } + + IADProvider *btPro = new BtAdProvider(); + int retBt = btPro->init(); + if (retBt == 0) { + _INFO("BT Provider=[%p]", btPro); + __providerList.push_back(btPro); + } else { + _INFO("BT Provider not supported"); + delete btPro; + } + + return 0; +} + +AuthManager* +AuthManager::getInstance(void) +{ + _INFO(""); + + /*TODO: Thread safe singleton*/ + if (__this != NULL) + return __this; + + + AuthManager *temp = new AuthManager(); + + int ret = temp->initProviders(); + + if (ret != 0) { + delete temp; + return NULL; + } + + __this = temp; + return __this; +} + +void +AuthManager::appendToFullStubList(std::vector *origList, + std::vector *stubList) +{ + _BEGIN; + RET_IF_FAIL_VOID(stubList != NULL); + + std::vector::iterator stIter = stubList->begin(); + for (; stIter != stubList->end(); ++stIter) { + + IAuthStub *stub = (IAuthStub*)(*stIter); + if (stub != NULL) { + origList->push_back(stub); + } + } + _END; +} + +std::vector* +AuthManager::getAuthStubList(auth_type_e type) +{ + _INFO("getAuthStubList [%d]", type); + + std::vector *stubListFull = new std::vector(); + + std::vector::iterator adIter = __providerList.begin(); + for (; adIter != __providerList.end(); ++adIter) { + + IADProvider *pro = (IADProvider*)(*adIter); + + if ((type == AUTH_TYPE_ALL) || (pro->getType() == type)) { + /*Depending on Provider type, stub list is refreshed, Bound: re-use + * Roaming: Refresh + */ + std::vector *stubList = pro->getAuthStubList(); + if (stubList != NULL) { + appendToFullStubList(stubListFull, stubList); + } + } + } + + int stubCount = stubListFull->size(); + _INFO("[%d] Type Stub list count=[%d]", type, stubCount); + return stubListFull; +} + +IAuthStub* +AuthManager::getAuthStub(int mappedIndex) +{ + std::vector::iterator adIter = __providerList.begin(); + for (; adIter != __providerList.end(); ++adIter) { + + IADProvider *pro = (IADProvider*)(*adIter); + IAuthStub *stub = pro->getStubFromCache(mappedIndex); + if (stub != NULL) { + _INFO("Found [%d][%p] in [%d] cache", mappedIndex, stub, pro->getType()); + return stub; + } + } + + _ERR("[%d] not found in any cache", mappedIndex); + return NULL; +} + +int +AuthManager::setAuthStubCache(auth_type_e type, std::map *stubCache) +{ + _INFO(""); + + if (type >= AUTH_TYPE_ALL) { + _ERR("Cache can not be set for all"); + return -1; + } + + _INFO(""); + std::vector::iterator adIter = __providerList.begin(); + for (; adIter != __providerList.end(); ++adIter) { + + IADProvider *pro = (IADProvider*)(*adIter); + + _INFO(""); + if (pro->getType() == type) { + _INFO(""); + pro->setCache(stubCache); + _INFO("Updated cache for [%d]", type); + return 0; + } + } + + return -1; +} diff --git a/server/auth_discovery/src/BAuthStub.cpp b/server/auth_discovery/src/BAuthStub.cpp new file mode 100644 index 0000000..acd527d --- /dev/null +++ b/server/auth_discovery/src/BAuthStub.cpp @@ -0,0 +1,522 @@ +#include "BAuthStub.h" +#include "AsmHelper.h" +#include "TlvData.h" +#include "AuthnrTypes.h" +#include "asmcrypto.h" +#include "AuthIndexHanlder.h" +#include +#include "PinAuthUiAdaptor.h" +#include "AuthUiFactory.h" +#include "AsmStorage.h" +#include "asmcrypto.h" +#include "JsonUtil.h" + +#define BIG_SIZE 5000 +#define uid 5001 +#define DIGEST_LEN 32 + +GetAuthInfoResp* +BAuthStub::getInfo(void) +{ + _INFO("getInfo"); + RET_IF_FAIL(__pluginHandle != NULL, NULL); + + if ((__cachedData == NULL)) { + _INFO("__cachedData NULL"); + + RET_IF_FAIL(__pluginHandle->process != NULL, NULL); + RET_IF_FAIL(__pluginHandle->process->process != NULL, NULL); + + TlvEncodable encodableReq; + encodableReq.setEncoder(EID_UAFV1_GETINFO_REQ); + + TlvEncodable encodableResp; + encodableResp.setEncoder(EID_UAFV1_GETINFO_RESP); + + Buffer *authReq = encodableReq.encode(); + unsigned char *authRespRaw = NULL; + + __pluginHandle->process->process(authReq->data, &authRespRaw); + + __cachedData = encodableResp.decode(authRespRaw); + /*Map AuthIndex*/ + /*TODO: Find Device ID logic used by IoTCon*/ + + if (__cachedData->authList != NULL) { + + GList *authListIter = g_list_first(__cachedData->authList); + while (authListIter != NULL) { + + AuthenticatorInfo *authInfo = (AuthenticatorInfo*)(authListIter->data); + /*TODO: Find Device ID logic used by IoTCon*/ + _INFO("Before calling getMappedIndex"); + authInfo->__authenticatorIndex = AuthIndexHandler::getInstance()->getMappedIndex( + AsmCrypto::getDeviceId(), std::string(authInfo->__aaid), + authInfo->__authenticatorIndex); + + _INFO("After calling getMappedIndex"); + authInfo->__devId = strdup(AsmCrypto::getDeviceId().c_str()); + authInfo->__isUserEnrolled = isEnrolled(); + authInfo->__isRoamingAuthenticator = false; + authListIter = authListIter->next; + } + + } + + + /*Fill-up additional data*/ + __cachedData->attach_hint = ATTACHMENT_HINT_INTERNAL; + /*__cachedData->attach_hint = __pluginHandle->conn->attach_hint();*/ + /*__cachedData->title = __pluginHandle->conn->title();*/ + /*__cachedData->description = __pluginHandle->conn->description();*/ + } + + _INFO("Returning __cachedData"); + return __cachedData; +} + +int +BAuthStub::connect(void) +{ + RET_IF_FAIL(__pluginHandle != NULL, -1); + RET_IF_FAIL(__pluginHandle->conn != NULL, -1); + RET_IF_FAIL(__pluginHandle->conn->init != NULL, -1); + + return __pluginHandle->conn->init(); +} + +int +BAuthStub::disConnect(void) +{ + RET_IF_FAIL(__pluginHandle != NULL, -1); + RET_IF_FAIL(__pluginHandle->conn != NULL, -1); + RET_IF_FAIL(__pluginHandle->conn->de_init != NULL, -1); + + delete __cachedData; + __cachedData = NULL; + + return __pluginHandle->conn->de_init(); +} + +int +_parse_enroll_request(char *enrollJson, char **appId, char **aaid) +{ + JsonParser *parser = json_parser_new(); + + GError *err = NULL; + json_parser_load_from_data(parser, (char*)enrollJson, -1, &err); + if (err != NULL) + { + _ERR("Parsing failed=[%s]", err->message); + return -1; + } + + JsonNode *rootNode = json_parser_get_root(parser); + RET_IF_FAIL(rootNode != NULL, -1); + + JsonObject *rootObj = json_node_get_object(rootNode); + RET_IF_FAIL(rootObj != NULL, -1); + + const char *appId_temp = json_object_get_string_member(rootObj, "appId"); + const char *aaid_temp = json_object_get_string_member(rootObj, "aaid"); + + *appId = strdup(appId_temp); + *aaid = strdup(aaid_temp); + + if (parser != NULL) + g_object_unref(parser); + + return 0; +} + +bool +BAuthStub::isUserVerificationNeeded(void) +{ + if(__pluginHandle->user == NULL || __pluginHandle->user->is_uv_reqd == NULL) { + return true; + } + + return __pluginHandle->user->is_uv_reqd(); +} + +bool +BAuthStub::hasAuthUi(void) +{ + if((__pluginHandle->user == NULL) || + (__pluginHandle->user->enroll == NULL) || + (__pluginHandle->user->verify == NULL)) { + _INFO("Auth does not have inbuilt UI"); + return false; + } + + return true; +} + +int +BAuthStub::enroll(const char *opt) +{ + _BEGIN; + RET_IF_FAIL(__pluginHandle != NULL, -1); + + if(__pluginHandle->user == NULL || __pluginHandle->user->enroll == NULL) { + + _INFO("BAuthStub::enroll::__pluginHandle->user->enroll NULL"); + + RET_IF_FAIL(opt != NULL, -1); + + char *appId = NULL; + char *aaid = NULL; + int res = _parse_enroll_request((char*)opt, &appId, &aaid); + RET_IF_FAIL(res == 0, -1); + + _INFO("enroll json parsed successfully"); + + /* TODO */ + IAuthUiAdaptor *uiAd = AuthUiFactory::getAuthUiAdaptor(AUTH_UI_TYPE_PIN); + + _INFO("UIAD = [%p]", uiAd); + + int ret = -1; + std::string appIdStr(appId); + std::string tok = uiAd->enrollUser(appIdStr, &ret); + if(tok.c_str() == NULL) { + _INFO("BAuthStub::enroll::token NULL"); + return -1; + } + _INFO("enrollUser = [%s]", tok.c_str()); + + unsigned char digest[DIGEST_LEN]; + AsmCrypto::genHash256(tok.c_str(), tok.length(), digest); + unsigned char *vToken = AsmCrypto::ToBase64Url(digest, DIGEST_LEN); + std::string vTokStr((char*)vToken); + + std::string devId = AsmCrypto::getDeviceId(); + RET_IF_FAIL(devId.empty() == false, -1); + + IStorageParcel *parcel = new SecretStorageParcel(); + res = parcel->setString(STR_PROP_AAID, aaid); + RET_IF_FAIL(res == 0, -1); + res = parcel->setString(STR_PROP_DEV_ID, devId); + RET_IF_FAIL(res == 0, -1); + res = parcel->setString(STR_PROP_SECRET1, vTokStr); + RET_IF_FAIL(res == 0, -1); + res = parcel->setInt(INT_PROP_UID, uid); + RET_IF_FAIL(res == 0, -1); + + res = AsmStorage::getInstance()->insertData(parcel); + RET_IF_FAIL(res == 0, -1); + + _INFO("Enroll data inserted success"); + _INFO("BAuthStub::enroll::end"); + return 0; + } + + _END; + return __pluginHandle->user->enroll(opt); +} + +bool +BAuthStub::isEnrolled(void) +{ + RET_IF_FAIL(__pluginHandle != NULL, false); + RET_IF_FAIL(__pluginHandle->user != NULL, false); + RET_IF_FAIL(__pluginHandle->user->enroll != NULL, false); + + return __pluginHandle->user->is_enrolled(NULL); +} + +int +BAuthStub::verify(const char *opt, const char *fch, char **vToken) +{ + _BEGIN; + + if(__pluginHandle->user == NULL || __pluginHandle->user->verify == NULL) { + + _INFO("BAuthStub::verify::__pluginHandle->user->verify NULL"); + + _INFO("VERIFY TOKEN = [%s]", *vToken); + RET_IF_FAIL(opt != NULL, -1); + RET_IF_FAIL(*vToken != NULL, -1); + RET_IF_FAIL(__pluginHandle != NULL, -1); + + IAuthUiAdaptor *uiAd = AuthUiFactory::getAuthUiAdaptor(AUTH_UI_TYPE_PIN); + int ret = -1; + + std::string appIdStr(opt); + std::string vTokStr(*vToken); + + uiAd->verifyUser(appIdStr, vTokStr, &ret); + RET_IF_FAIL(ret == 0, -1); + + _INFO("BAuthStub::verify::end"); + return 0; + } + + _END; + return __pluginHandle->user->verify(opt, fch, vToken); +} + +RegisterResp* +BAuthStub::processRegister(const RegisterReq *regReq) +{ + RET_IF_FAIL(__pluginHandle != NULL, NULL); + RET_IF_FAIL(__pluginHandle->process != NULL, NULL); + RET_IF_FAIL(__pluginHandle->process->process != NULL, NULL); + + + Buffer *authReq = NULL; + unsigned char *authRespRaw = NULL; + + /*Default handlers*/ + if (__pluginHandle->assrt == NULL) { + TlvEncodable encodableReq(regReq); + encodableReq.setEncoder(EID_UAFV1_REGISTER_REQ); + + TlvEncodable encodableResp; + encodableResp.setEncoder(EID_UAFV1_REGISTER_RESP); + + authReq = encodableReq.encode(); + + __pluginHandle->process->process(authReq->data, &authRespRaw); + + return encodableResp.decode(authRespRaw); + + } + else { + authReq = __pluginHandle->assrt->encode(TAG_UAFV1_REGISTER_CMD, regReq); + + __pluginHandle->process->process(authReq->data, &authRespRaw); + + RegisterResp *decodedResp = (RegisterResp*) + (__pluginHandle->assrt->decode(authRespRaw)); + + RET_IF_FAIL(decodedResp != NULL, NULL); + + return decodedResp; + } +} + +AuthenticateResp* +BAuthStub::processAuthenticate(const AuthenticateReq *authnReq) +{ + RET_IF_FAIL(__pluginHandle != NULL, NULL); + RET_IF_FAIL(__pluginHandle->process != NULL, NULL); + RET_IF_FAIL(__pluginHandle->process->process != NULL, NULL); + + + Buffer *authReq = NULL; + unsigned char *authRespRaw = NULL; + + /*Default handlers*/ + if (__pluginHandle->assrt == NULL) { + TlvEncodable encodableReq(authnReq); + encodableReq.setEncoder(EID_UAFV1_SIGN_REQ); + + TlvEncodable encodableResp; + encodableResp.setEncoder(EID_UAFV1_SIGN_RESP); + + authReq = encodableReq.encode(); + + __pluginHandle->process->process(authReq->data, &authRespRaw); + + return encodableResp.decode(authRespRaw); + + } + else { + authReq = __pluginHandle->assrt->encode(TAG_UAFV1_SIGN_CMD, authnReq); + + __pluginHandle->process->process(authReq->data, &authRespRaw); + + AuthenticateResp *decodedResp = (AuthenticateResp*) + (__pluginHandle->assrt->decode(authRespRaw)); + + RET_IF_FAIL(decodedResp != NULL, NULL); + + return decodedResp; + } +} + +DeregResp* +BAuthStub::processDeregister(const DeregReq *deregReq) +{ + RET_IF_FAIL(__pluginHandle != NULL, NULL); + RET_IF_FAIL(__pluginHandle->process != NULL, NULL); + RET_IF_FAIL(__pluginHandle->process->process != NULL, NULL); + + + Buffer *authReq = NULL; + unsigned char *authRespRaw = NULL; + + /*Default handlers*/ + if (__pluginHandle->assrt == NULL) { + TlvEncodable encodableReq(deregReq); + encodableReq.setEncoder(EID_UAFV1_DEREG_REQ); + + TlvEncodable encodableResp; + encodableResp.setEncoder(EID_UAFV1_DEREG_RESP); + + authReq = encodableReq.encode(); + RET_IF_FAIL(authReq != NULL, NULL); + + __pluginHandle->process->process(authReq->data, &authRespRaw); + + return encodableResp.decode(authRespRaw); + + } + else { + authReq = __pluginHandle->assrt->encode(TAG_UAFV1_DEREGISTER_CMD, deregReq); + + __pluginHandle->process->process(authReq->data, &authRespRaw); + + DeregResp *decodedResp = (DeregResp*) + (__pluginHandle->assrt->decode(authRespRaw)); + + + RET_IF_FAIL(decodedResp != NULL, NULL); + + return decodedResp; + } +} + +int +BAuthStub::openSettings(void) +{ + RET_IF_FAIL(__pluginHandle != NULL, -1); + RET_IF_FAIL(__pluginHandle->process != NULL, -1); + RET_IF_FAIL(__pluginHandle->process->process != NULL, -1); + + return -1;/*TODO*/ +} + +Buffer * +BAuthStub::hash(const std::string& message) +{ + _BEGIN; + RET_IF_FAIL(__pluginHandle != NULL, NULL); + + /*Defult handlers*/ + if (__pluginHandle->hash == NULL) { + + unsigned char digest[5000]; + AsmCrypto::genHash256(message.c_str(), strlen(message.c_str()), digest); + _INFO("AuthenrStub::hash::digest generated is [%s]", digest); + + Buffer *hashInfo = ALLOC(Buffer); + hashInfo->len = SHA256_DIGEST_LENGTH; + hashInfo->data = NALLOC(BIG_SIZE, uint8_t); + memcpy(hashInfo->data, digest, SHA256_DIGEST_LENGTH); + //std::string digestStr((char*)digest, 5000); + _END; + return hashInfo; + } + + char *digest = NULL; + __pluginHandle->hash->hash(message.c_str(), &digest); + + if (digest == NULL) + return NULL; + + //std::string digestStr(digest, strlen(digest)); + Buffer *hashInfo = ALLOC(Buffer); + hashInfo->len = SHA256_DIGEST_LENGTH; + hashInfo->data = NALLOC(BIG_SIZE, uint8_t); + memcpy(hashInfo->data, digest, SHA256_DIGEST_LENGTH); + + _END; + return hashInfo; + +} + +Buffer* +BAuthStub::encodeRegisterRespone(RegAssertion *regAssrt, char **assrt_scheme) +{ + _BEGIN; + RET_IF_FAIL(regAssrt != NULL, NULL); + + RET_IF_FAIL(__pluginHandle != NULL, NULL); + + /*Default handlers*/ + if (__pluginHandle->assrt == NULL) { + + TlvEncodable encodableRegAssrtn(regAssrt); + encodableRegAssrtn.setEncoder(EID_UAFV1_REG_ASSERTION_RESP); + + *assrt_scheme = (char *)(calloc(1, 128)); + snprintf(*assrt_scheme, 128 - 1, "%s", "UAFV1TLV"); + + _END; + return encodableRegAssrtn.encode(); + + } + else { + _END; + return __pluginHandle->assrt->encode(TAG_UAFV1_REG_ASSERTION, regAssrt); + } +} + +Buffer* +BAuthStub::encodeSignRespone(AuthAssertion *authAssertion, char **assrt_scheme) +{ + _BEGIN; + RET_IF_FAIL(authAssertion != NULL, NULL); + + _INFO(""); + + RET_IF_FAIL(__pluginHandle != NULL, NULL); + + _INFO(""); + + /*Default handlers*/ + if (__pluginHandle->assrt == NULL) { + + _INFO(""); + TlvEncodable encodableSignAssrtn(authAssertion); + encodableSignAssrtn.setEncoder(EID_UAFV1_SIGN_ASSERTION_RESP); + + _INFO(""); + *assrt_scheme = (char *)(calloc(128, sizeof(char))); + snprintf(*assrt_scheme, 128 - 1, "%s", "UAFV1TLV"); + + _INFO(""); + _END; + return encodableSignAssrtn.encode(); + + } + else { + _END; + return __pluginHandle->assrt->encode(TAG_UAFV1_AUTH_ASSERTION, authAssertion); + } +} + +BAuthStub::BAuthStub(void) +{ + _INFO("BAuthStub creation"); + __pluginHandle = NULL; + __cachedData = NULL; +} + +BAuthStub::~BAuthStub(void) +{ + _INFO("BAuthStub deletion"); + __pluginHandle = NULL; +} + + +int +BAuthStub::initLocal(auth_plugin_handle_s *pluginH) +{ + __pluginHandle = (auth_plugin_handle_s*)pluginH; + return 0; +} + +int +BAuthStub::initRemote(IAuthConnection *conH) +{ + return -1; +} + +auth_type_e +BAuthStub::getType(void) +{ + return AUTH_TYPE_BOUND; +} diff --git a/server/auth_discovery/src/BleAdProvider.cpp b/server/auth_discovery/src/BleAdProvider.cpp new file mode 100644 index 0000000..d8a24bf --- /dev/null +++ b/server/auth_discovery/src/BleAdProvider.cpp @@ -0,0 +1,413 @@ + +#include "BleAdProvider.h" +#include "IAuthConnection.h" +#include "BleCon.h" +#include "RAuthStub.h" +#include "AsmHelper.h" +#include "BTRoamingKeys.h" + +/*BLE is not working on 3.0*/ +#define DISABLE_BLE + +void +BleAdProvider::onBtStateChanged(int result, bt_adapter_state_e adapter_state, + void *user_data) +{ + _INFO("bluetooth onBtStateChanged=[%d]", adapter_state); + BleAdProvider *btPro = (BleAdProvider*)user_data; + if (adapter_state == BT_ADAPTER_DISABLED) { + if (btPro->__stubCache != NULL) { + _INFO("bluetooth Deletting cache=[%p]", btPro->__stubCache); + delete btPro->__stubCache; + btPro->__stubCache = NULL; + } + } +} + +int +BleAdProvider::init(void) +{ +#ifdef DISABLE_BLE + _INFO("BLE is disabled by ASM"); + return -1; +#endif + + _INFO("bluetooth "); + __stubCache = NULL; + int ret = bt_initialize(); + if(ret != BT_ERROR_NONE && ret != BT_ERROR_ALREADY_DONE) { + _ERR("bluetooth rclient bluetooth service can not initialize=[%d]", ret); + return -1; + } + + bt_adapter_set_state_changed_cb(onBtStateChanged, this); + _INFO("bluetooth "); + return 0; +} + +auth_type_e +BleAdProvider::getType(void) +{ + return AUTH_TYPE_ROAMING; +} + +static bool +__bt_gatt_client_foreach_desc_cb(int total, int index, bt_gatt_h desc_handle, void *data) +{ + char *uuid = NULL; + + bt_gatt_get_uuid(desc_handle, &uuid); + + _INFO("bluetooth [%d / %d] uuid: (%s)", index, total, uuid); + + g_free(uuid); + + return true; +} + +static bool +__bt_gatt_client_foreach_chr_cb(int total, int index, bt_gatt_h chr_handle, void *data) +{ + int ret; + char *uuid = NULL; + + bt_gatt_get_uuid(chr_handle, &uuid); + + _INFO("bluetooth [%d / %d] uuid: (%s)", index, total, uuid); + + g_free(uuid); + + ret = bt_gatt_characteristic_foreach_descriptors(chr_handle, + __bt_gatt_client_foreach_desc_cb, NULL); + if (ret != BT_ERROR_NONE) + _INFO("bluetooth bt_gatt_characteristic_foreach_descriptors failed: %d", ret); + + return true; +} + +static bool +__svcCb(int total, int index, bt_gatt_h gatt_handle, + void *user_data) +{ + int ret; + char *uuid = NULL; + + bt_gatt_get_uuid(gatt_handle, &uuid); + _INFO("bluetooth [%d / %d] uuid: (%s)", index, total, uuid); + + g_free(uuid); + + ret = bt_gatt_service_foreach_characteristics(gatt_handle, + __bt_gatt_client_foreach_chr_cb, NULL); + if (ret != BT_ERROR_NONE) + _INFO("bluetooth bt_gatt_service_foreach_characteristics failed: %d", ret); + + return true; +} + +#define printIfAndRet(e1, e2, str) \ + if (e1 == e2) {\ + _INFO("bluetooth fido asm bt error=[%s]", str);\ + return; \ + }\ + +static void +printBTError(bt_error_e e) +{ + printIfAndRet(e, BT_ERROR_NONE, "BT_ERROR_NONE"); + printIfAndRet(e, BT_ERROR_CANCELLED, "BT_ERROR_CANCELLED"); + printIfAndRet(e, BT_ERROR_INVALID_PARAMETER, "BT_ERROR_INVALID_PARAMETER"); + printIfAndRet(e, BT_ERROR_OUT_OF_MEMORY, "BT_ERROR_OUT_OF_MEMORY"); + printIfAndRet(e, BT_ERROR_RESOURCE_BUSY, "BT_ERROR_RESOURCE_BUSY"); + printIfAndRet(e, BT_ERROR_TIMED_OUT, "BT_ERROR_TIMED_OUT"); + printIfAndRet(e, BT_ERROR_NOW_IN_PROGRESS, "BT_ERROR_NOW_IN_PROGRESS"); + printIfAndRet(e, BT_ERROR_NOT_SUPPORTED, "BT_ERROR_NOT_SUPPORTED"); + printIfAndRet(e, BT_ERROR_PERMISSION_DENIED, "BT_ERROR_PERMISSION_DENIED"); + printIfAndRet(e, BT_ERROR_QUOTA_EXCEEDED, "BT_ERROR_QUOTA_EXCEEDED"); + printIfAndRet(e, BT_ERROR_NO_DATA, "BT_ERROR_NO_DATA"); + printIfAndRet(e, BT_ERROR_DEVICE_POLICY_RESTRICTION, "BT_ERROR_DEVICE_POLICY_RESTRICTION"); + printIfAndRet(e, BT_ERROR_NOT_INITIALIZED, "BT_ERROR_NOT_INITIALIZED"); + printIfAndRet(e, BT_ERROR_NOT_ENABLED, "BT_ERROR_NOT_ENABLED"); + printIfAndRet(e, BT_ERROR_ALREADY_DONE, "BT_ERROR_ALREADY_DONE"); + printIfAndRet(e, BT_ERROR_ALREADY_DONE, "BT_ERROR_ALREADY_DONE"); + printIfAndRet(e, BT_ERROR_OPERATION_FAILED, "BT_ERROR_OPERATION_FAILED"); + printIfAndRet(e, BT_ERROR_NOT_IN_PROGRESS, "BT_ERROR_NOT_IN_PROGRESS"); + printIfAndRet(e, BT_ERROR_REMOTE_DEVICE_NOT_BONDED, "BT_ERROR_REMOTE_DEVICE_NOT_BONDED"); + printIfAndRet(e, BT_ERROR_AUTH_REJECTED, "BT_ERROR_AUTH_REJECTED"); + printIfAndRet(e, BT_ERROR_AUTH_FAILED, "BT_ERROR_AUTH_FAILED"); + printIfAndRet(e, BT_ERROR_REMOTE_DEVICE_NOT_FOUND, "BT_ERROR_REMOTE_DEVICE_NOT_FOUND"); + printIfAndRet(e, BT_ERROR_SERVICE_SEARCH_FAILED, "BT_ERROR_SERVICE_SEARCH_FAILED"); + printIfAndRet(e, BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED, "BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED"); + printIfAndRet(e, BT_ERROR_AGAIN, "BT_ERROR_AGAIN"); + printIfAndRet(e, BT_ERROR_SERVICE_NOT_FOUND, "BT_ERROR_SERVICE_NOT_FOUND"); + printIfAndRet(e, e, "Unknown"); +} + +void +BleAdProvider::onGattConchanged(int result, bool connected, const char *remote_address, void *user_data) +{ + _INFO("bluetooth remote_address=[%s]", remote_address); + _INFO("bluetooth connected=[%d]", connected); + _INFO("bluetooth [%d]", result); + printBTError(static_cast(result)); + if (connected == false) { + _ERR("bluetooth GATT disconnected"); + return; + } + + bt_gatt_h svc = NULL; + bt_gatt_h chrReq = NULL; + bt_gatt_h chrResp = NULL; + bt_gatt_client_h client = NULL; + + _INFO("bluetooth "); + int ret = bt_gatt_client_create(remote_address, &client); + if (ret != BT_ERROR_NONE) { + _ERR("bluetooth rclient bt_gatt_client_create failed=[%d]", ret); + return; + } + + ret = bt_gatt_client_foreach_services(client, __svcCb, NULL); + printBTError(static_cast(ret)); + + char *cRAddr = NULL; + ret = bt_gatt_client_get_remote_address(client, &cRAddr); + printBTError(static_cast(ret)); + + _INFO("bluetooth bt_gatt_client_get_remote_address=[%s]", cRAddr); + ret = bt_gatt_client_get_service(client, RA_BLE_SERVICE_UUID, &svc); + if (ret != BT_ERROR_NONE) { + _ERR("bluetooth rclient bt_gatt_client_get_service failed=[%d]", ret); + printBTError(static_cast(ret)); + return; + } + + _INFO("bluetooth "); + ret = bt_gatt_service_get_characteristic(svc, RA_BLE_UUID_REQUEST, &chrReq); + if (ret != BT_ERROR_NONE) { + _ERR("bluetooth rclient bt_gatt_service_get_characteristic failed=[%d]", ret); + return; + } + + _INFO("bluetooth "); + ret = bt_gatt_service_get_characteristic(svc, RA_BLE_UUID_RESPONSE, &chrResp); + if (ret != BT_ERROR_NONE) { + _ERR("bluetooth rclient bt_gatt_service_get_characteristic failed=[%d]", ret); + return; + } + + _INFO("bluetooth "); + GattClient *gC = new GattClient(); + gC->__btClientInfo = _SAFE_DUP(remote_address); + gC->__btClient = client; + gC->__btClientSvc = svc; + gC->__btClientChrReq = chrReq; + gC->__btClientChrResp = chrResp; + + IAuthConnection *bleClient = new BleCon(); + bleClient->init(gC); + + IAuthStub *raStub = new RAuthStub(); + raStub->initRemote(bleClient); + + BleAdProvider *blePro = (BleAdProvider*)user_data; + if (blePro->__stubCache == NULL) { + blePro->__stubCache = new std::map(); + } + + /*Index auto incremented, set properly during setCache*/ + blePro->__stubCache->insert(std::make_pair(blePro->__stubCache->size(), raStub)); + + BleAdProvider::finishDiscovery(user_data); +} + +void +BleAdProvider::onLEScanResult(int result, bt_adapter_le_device_scan_result_info_s *info, + void *user_data) +{ + _INFO("bluetooth rclient __bt_adapter_le_scan_result_cb=[%d]", result); + _INFO("bluetooth remote_address=[%s]", info->remote_address); + _INFO("bluetooth address_type=[%d]", info->address_type); + /*_INFO("bluetooth adv_data=[%s]", info->adv_data); + _INFO("bluetooth scan_data=[%s]", info->scan_data);*/ + + if (info->adv_data_len > 31 || info->scan_data_len > 31) { + _INFO("bluetooth ###################"); + bt_adapter_le_stop_scan(); + _INFO("bluetooth ###################"); + return; + } + + bt_adapter_le_packet_type_e pkt_type = BT_ADAPTER_LE_PACKET_ADVERTISING; + int i = 0; + for (i = 0; i < 2; i++) { + char **uuids; + char *device_name; + int tx_power_level; + bt_adapter_le_service_data_s *data_list; + int appearance; + int manufacturer_id; + char *manufacturer_data; + int manufacturer_data_len; + int count; + + pkt_type = static_cast(static_cast(pkt_type) + i); + if (pkt_type == BT_ADAPTER_LE_PACKET_ADVERTISING && info->adv_data == NULL) + continue; + if (pkt_type == BT_ADAPTER_LE_PACKET_SCAN_RESPONSE && info->scan_data == NULL) + break; + + if (bt_adapter_le_get_scan_result_service_uuids(info, pkt_type, &uuids, &count) == BT_ERROR_NONE) { + int i; + for (i = 0; i < count; i++) { + _INFO("bluetooth UUID[%d] = %s", i + 1, uuids[i]); + g_free(uuids[i]); + } + g_free(uuids); + } + if (bt_adapter_le_get_scan_result_device_name(info, pkt_type, &device_name) == BT_ERROR_NONE) { + _INFO("bluetooth Device name = %s", device_name); + g_free(device_name); + } + if (bt_adapter_le_get_scan_result_tx_power_level(info, pkt_type, &tx_power_level) == BT_ERROR_NONE) + _INFO("bluetooth TX Power level = %d", tx_power_level); + if (bt_adapter_le_get_scan_result_service_solicitation_uuids(info, pkt_type, &uuids, &count) == BT_ERROR_NONE) { + int i; + for (i = 0; i < count; i++) { + _INFO("bluetooth Solicitation UUID[%d] = %s", i + 1, uuids[i]); + g_free(uuids[i]); + } + g_free(uuids); + } + if (bt_adapter_le_get_scan_result_service_data_list(info, pkt_type, &data_list, &count) == BT_ERROR_NONE) { + int i; + for (i = 0; i < count; i++) { + _INFO("bluetooth Service Data[%d] = [0x%2.2X%2.2X:0x%.2X...]", i + 1, + data_list[i].service_uuid[0], data_list[i].service_uuid[1], data_list[i].service_data[0]); + } + bt_adapter_le_free_service_data_list(data_list, count); + } + if (bt_adapter_le_get_scan_result_appearance(info, pkt_type, &appearance) == BT_ERROR_NONE) + _INFO("bluetooth Appearance = %d", appearance); + if (bt_adapter_le_get_scan_result_manufacturer_data(info, pkt_type, &manufacturer_id, + &manufacturer_data, &manufacturer_data_len) == BT_ERROR_NONE) { + _INFO("bluetooth Manufacturer data[ID:%.4X, 0x%.2X%.2X...(len:%d)]", + manufacturer_id, manufacturer_data[0], manufacturer_data[1], manufacturer_data_len); + g_free(manufacturer_data); + } + } + + /*RA_BLE_ADVERTISING_UUID*/ + + /*_INFO("bluetooth [%d] sec timeout starting", BT_DISC_TIMEOUT_SEC); + g_timeout_add_seconds_full(G_PRIORITY_DEFAULT, BT_DISC_TIMEOUT_SEC, discoverTimeOutCb, user_data, + finishDiscovery);*/ + + _INFO("bluetooth Before bt_gatt_connect"); + + int ret = bt_gatt_connect(info->remote_address, false); + if (ret != BT_ERROR_NONE) { + _ERR("bluetooth rclient bt_gatt_connect failed=[%d]", ret); + return; + } + + _INFO("bluetooth bt_gatt_connect=[%d]", ret); +} + +void +BleAdProvider::finishDiscovery(gpointer data) +{ + _INFO("bluetooth "); + bt_adapter_le_stop_scan(); + + BleAdProvider *btPro = (BleAdProvider*)(data); + g_main_loop_quit(btPro->__waitLoop); +} + +gboolean +BleAdProvider::discoverTimeOutCb(gpointer user_data) +{ + _INFO("bluetooth discoverTimeOutCb"); + + return G_SOURCE_REMOVE; +} + +std::vector * +BleAdProvider::getAuthStubList(void) +{ + _INFO("bluetooth getAuthStubList"); + delete __stubCache; + __stubCache = NULL; + + __waitLoop = g_main_loop_new(NULL, FALSE); + + bt_gatt_set_connection_state_changed_cb(onGattConchanged, this); + + _INFO("bluetooth starting LE scan"); + int ret = bt_adapter_le_start_scan(onLEScanResult, this); + if (ret != BT_ERROR_NONE) { + bt_gatt_unset_connection_state_changed_cb(); + _ERR("bluetooth rclient bt_adapter_le_start_scan failed."); + bt_adapter_le_stop_scan(); + + return NULL; + } + + _INFO("bluetooth starting wait loop"); + g_main_loop_run(__waitLoop); + + _INFO("bluetooth After waitloop"); + + g_main_loop_unref(__waitLoop); + __waitLoop = NULL; + + if (__stubCache != NULL) { + _INFO("bluetooth BT Roaming Auth Count=[%d]", __stubCache->size()); + } else { + _ERR("bluetooth BT Roaming Auth List is NULL"); + return NULL; + } + + std::vector *stubList = NULL; + + std::map::iterator it = __stubCache->begin(); + for (; it != __stubCache->end(); ++it) { + if (stubList == NULL) + stubList = new std::vector(); + + stubList->push_back(it->second); + } + _INFO("bluetooth "); + return stubList; +} + +void +BleAdProvider::setCache(std::map *stubCache) +{ + _INFO("bluetooth BleAdProvider::setCache"); + if (stubCache != NULL) + _INFO("bluetooth New cache set size =[%d]", stubCache->size()); + + __stubCache = stubCache; +} + +IAuthStub* +BleAdProvider::getStubFromCache(int mappedIdx) +{ + if (__stubCache == NULL) { + _ERR("bluetooth Stub cache NULL"); + return NULL; + } + + return __stubCache->find(mappedIdx)->second; +} + +BleAdProvider::~BleAdProvider(void) +{ + +} + +BleAdProvider::BleAdProvider(void) +{ + +} diff --git a/server/auth_discovery/src/BleCon.cpp b/server/auth_discovery/src/BleCon.cpp new file mode 100644 index 0000000..5ce9f68 --- /dev/null +++ b/server/auth_discovery/src/BleCon.cpp @@ -0,0 +1,103 @@ +#include "BleCon.h" +#include "AsmHelper.h" +#include "BTRoamingKeys.h" +#include "RoamingKeys.h" + +BleCon::BleCon(void) +{ + __gClient = NULL; +} + +BleCon::~BleCon(void) +{ + +} + +int +BleCon::init(void *handle) +{ + __gClient = (GattClient*)handle; + + return 0; +} + +void +BleCon::onGattServerResponse(bt_gatt_h characteristic, char *value, + int len, void *user_data) +{ + _INFO("Response length = [%d]", len); + + BleCon *btCon = (BleCon*)user_data; + btCon->__resp = new StringMap(); + + std::string k(RA_QUERY_KEY_RESPONSE); + std::string v(strdup(value)); + btCon->__resp->insert(std::make_pair(k, v)); + + g_main_loop_quit(btCon->__waitLoop); +} + +void +BleCon::onGattWriteComplete(int result, bt_gatt_h request_handle, void *user_data) +{ + _INFO("[%d]", result); + BleCon *btCon = (BleCon*)user_data; + if (result != 0) { + g_main_loop_quit(btCon->__waitLoop); + } +} + +StringMap* +BleCon::sendReqSync(StringMap *reqData) +{ + _INFO("sendReqSync start"); + + RET_IF_FAIL(reqData != NULL, NULL); + RET_IF_FAIL(__gClient != NULL, NULL); + + __resp = NULL; + std::string reqTlvB64 = (reqData->find(RA_QUERY_KEY_REQUEST)->second); + char *reqTlvB64Copy = strdup(reqTlvB64.c_str()); + + __waitLoop = g_main_loop_new(NULL, FALSE); + + int ret = bt_gatt_client_set_characteristic_value_changed_cb(__gClient->__btClientChrResp, + onGattServerResponse, this); + _ERR("rclient bt_gatt_client_set_characteristic_value_changed_cb failed=[%d]", ret); + + + ret = bt_gatt_set_value(__gClient->__btClientChrReq, reqTlvB64Copy, strlen(reqTlvB64Copy)); + if (ret != BT_ERROR_NONE) { + _ERR("rclient bt_gatt_set_value failed=[%d]", ret); + goto CATCH; + } + + ret = bt_gatt_client_write_value(__gClient->__btClientChrReq, onGattWriteComplete, this); + if (ret != BT_ERROR_NONE) { + _ERR("rclient bt_gatt_client_write_value failed=[%d]", ret); + goto CATCH; + } + + _INFO("bt_gatt_client_write_value=[%d]", ret); + g_main_loop_run(__waitLoop); + +CATCH: + g_main_loop_unref(__waitLoop); + bt_gatt_client_unset_characteristic_value_changed_cb(__gClient->__btClientChrResp); + _INFO("sendReqSync=%s", __resp); + return __resp; +} + +int +BleCon::shutdown(void) +{ + return -1; +} + +char* +BleCon::getInfo(void) +{ + RET_IF_FAIL(__gClient != NULL, NULL); + + return __gClient->__btClientInfo; +} diff --git a/server/auth_discovery/src/BoundADProvider.cpp b/server/auth_discovery/src/BoundADProvider.cpp new file mode 100644 index 0000000..0a2bd7b --- /dev/null +++ b/server/auth_discovery/src/BoundADProvider.cpp @@ -0,0 +1,364 @@ + +#include "BoundADProvider.h" +#include "AsmHelper.h" +#include "AuthnrTypes.h" +#include "BAuthStub.h" +#include "AuthIndexHanlder.h" + +#include +#include + +#define FIDO_AUTH_PLUGINS_PATH_PREFIX "/usr/lib/fido/asm/auth/" +#define FIDO_AUTH_PLUGINS_PATH_PREFIX_64 "/usr/lib64/fido/asm/auth/" + +BoundADProvider::BoundADProvider(void) +{ + _INFO("BoundADProvider create"); + __stubCache = NULL; +} + +BoundADProvider::~BoundADProvider(void) +{ + _INFO("BoundADProvider destroy"); + __stubCache = NULL; +} + +int +BoundADProvider::init(void) +{ + return initPluginList(); +} + +auth_type_e +BoundADProvider::getType(void) +{ + return AUTH_TYPE_BOUND; +} + +std::vector* +BoundADProvider::getAuthStubList(void) +{ + _INFO("getAllAuthenticators"); + if ((__stubCache == NULL) || (__stubCache->size() <= 0)) { + _ERR("Stub cache NULL"); + return NULL; + } + + std::vector *stubList = NULL; + + AuthnrMapIter it = __stubCache->begin(); + for (; it != __stubCache->end(); ++it) { + if (stubList == NULL) + stubList = new std::vector(); + + stubList->push_back(it->second); + _INFO(""); + } + _INFO(""); + return stubList; +} + +void +BoundADProvider::setCache(std::map *stubCache) +{ + _INFO("BoundADProvider::setCache"); + __stubCache = NULL; + + if (stubCache != NULL) + _INFO("New cache set size =[%d]", stubCache->size()); + + __stubCache = stubCache; + _INFO("BoundADProvider::Cache=[%p][%p]", this, __stubCache); + std::map::iterator it = __stubCache->begin(); + for (; it != __stubCache->end(); ++it) { + _INFO("Cache Stub=[%d][%p]", it->first, it->second); + } +} + +IAuthStub* +BoundADProvider::getStubFromCache(int mappedIdx) +{ + if (__stubCache == NULL) { + _ERR("Stub cache NULL"); + return NULL; + } + + _INFO("Searching [%d]", mappedIdx); + + _INFO("BoundADProvider::Cache=[%p][%p]", this, __stubCache); + std::map::iterator it = __stubCache->begin(); + for (; it != __stubCache->end(); ++it) { + _INFO("Cache Stub=[%d][%p]", it->first, it->second); + } + + std::map::iterator resIt = __stubCache->find(mappedIdx); + if (resIt == __stubCache->end()) { + _ERR("Stub not found"); + return NULL; + } + + _INFO("Result Stub=[%p]", resIt->second); + return resIt->second; +} + +plugin_conn_handle_s* +BoundADProvider::createConnectionHandle(void *mod) +{ + _INFO(""); + + RET_IF_FAIL(mod != NULL, NULL); + + plugin_conn_handle_s *handle = (plugin_conn_handle_s*) + calloc(1, sizeof(plugin_conn_handle_s)); + + handle->init = (plugin_init)dlsym(mod, "fido_auth_plugin_init"); + CATCH_IF_FAIL(handle->init != NULL); + + handle->de_init = (plugin_de_init)dlsym(mod, "fido_auth_plugin_de_init"); + CATCH_IF_FAIL(handle->de_init != NULL); + + handle->is_connected = (plugin_is_connected)dlsym(mod, "fido_auth_plugin_is_connected"); + CATCH_IF_FAIL(handle->is_connected != NULL); + + /*Not mandatory*/ + handle->attach_hint = (plugin_get_attachment_hint)dlsym(mod, "fido_auth_plugin_get_attachment_hint"); + handle->title = (plugin_get_title)dlsym(mod, "fido_auth_plugin_get_title"); + handle->description = (plugin_get_description)dlsym(mod, "fido_auth_plugin_get_description"); + + _INFO(""); + return handle; + +CATCH: + free(handle); + return NULL; + +} + +plugin_assrt_handle_s* +BoundADProvider::createAssertionHandle(void *mod) +{ + RET_IF_FAIL(mod != NULL, NULL); + + plugin_assrt_handle_s *handle = (plugin_assrt_handle_s*) + calloc(1, sizeof(plugin_assrt_handle_s)); + + handle->get_scheme = (plugin_get_assertion_scheme)dlsym(mod, "fido_auth_plugin_get_assertion_scheme"); + CATCH_IF_FAIL(handle->get_scheme != NULL); + + handle->encode = (plugin_encode_assertion)dlsym(mod, "fido_auth_plugin_encode_assertion"); + CATCH_IF_FAIL(handle->encode != NULL); + + handle->decode = (plugin_decode_assertion)dlsym(mod, "fido_auth_plugin_decode_assertion"); + CATCH_IF_FAIL(handle->decode != NULL); + + return handle; + +CATCH: + free(handle); + return NULL; +} + +plugin_process_handle_s* +BoundADProvider::createProcessHandle(void *mod) +{ + RET_IF_FAIL(mod != NULL, NULL); + + plugin_process_handle_s *handle = (plugin_process_handle_s*) + calloc(1, sizeof(plugin_process_handle_s)); + + handle->process = (plugin_fido_command_process)dlsym(mod, "fido_auth_plugin_fido_command_process"); + CATCH_IF_FAIL(handle->process != NULL); + + return handle; + +CATCH: + free(handle); + return NULL; +} + +plugin_user_op_handle_s* +BoundADProvider::createUserOpHandle(void *mod) +{ + RET_IF_FAIL(mod != NULL, NULL); + + plugin_user_op_handle_s *handle = (plugin_user_op_handle_s*) + calloc(1, sizeof(plugin_user_op_handle_s)); + + handle->is_uv_reqd = (plugin_is_uv_required)dlsym(mod, "fido_auth_plugin_is_uv_required"); + + handle->enroll = (plugin_enroll)dlsym(mod, "fido_auth_plugin_enroll"); + /*if enroll is not defined then default enroll function will be used*/ + //CATCH_IF_FAIL(isFound == true); + + handle->is_enrolled = (plugin_is_enrolled)dlsym(mod, "fido_auth_plugin_is_enrolled"); + CATCH_IF_FAIL(handle->is_enrolled != NULL); + + handle->verify = (plugin_verify)dlsym(mod, "fido_auth_plugin_verify"); + CATCH_IF_FAIL(handle->verify != NULL); + + return handle; + +CATCH: + free(handle); + return NULL; +} + +plugin_hash_handle_s* +BoundADProvider::createHashHandle(void *mod) +{ + RET_IF_FAIL(mod != NULL, NULL); + + plugin_hash_handle_s *handle = (plugin_hash_handle_s*) + calloc(1, sizeof(plugin_hash_handle_s)); + + handle->hash = (plugin_hash)dlsym(mod, "fido_auth_plugin_hash"); + CATCH_IF_FAIL(handle->hash != NULL); + + return handle; + +CATCH: + free(handle); + return NULL; +} + +plugin_ui_op_handle_s* +BoundADProvider::createUiOpHandle(void *mod) +{ + RET_IF_FAIL(mod != NULL, NULL); + + plugin_ui_op_handle_s *handle = (plugin_ui_op_handle_s*) + calloc(1, sizeof(plugin_ui_op_handle_s)); + + handle->confirm_account = (plugin_confirm_account)dlsym(mod, "fido_auth_plugin_confirm_account"); + CATCH_IF_FAIL(handle->confirm_account != NULL); + + handle->confirm_tc = (plugin_confirm_tc)dlsym(mod, "fido_auth_plugin_confirm_tc"); + CATCH_IF_FAIL(handle->confirm_tc != NULL); + + return handle; + + CATCH: + free(handle); + return NULL; + +} + +int +BoundADProvider::loadPlugins(const std::string& dirName) +{ + _INFO("loadPlugins from [%s]", dirName.c_str()); + + /*TODO: Directory watcher, to support dynamic add/remove of plugins*/ + + GDir *dir = NULL; + GError *error = NULL; + const gchar *filename = NULL; + + /*Find arch in run-time*/ + dir = g_dir_open(dirName.c_str(), 0, &error); + RET_IF_FAIL(dir != NULL, -1); + + GPatternSpec *plugin_name_pattern = g_pattern_spec_new("*?.so"); + + _INFO("Before g_dir_read_name loop"); + while ((filename = g_dir_read_name(dir))) { + if (g_pattern_match_string(plugin_name_pattern, filename)) { + + std::string fullPathName; + fullPathName += dirName.c_str(); + fullPathName += filename; + + _INFO("fullPathName = [%s]", fullPathName.c_str()); + + void *mod = dlopen(fullPathName.c_str(), RTLD_LAZY); + if (mod != NULL) { + _INFO("Module opened"); + + auth_plugin_handle_s *auth_plugin = (auth_plugin_handle_s*) + calloc(1, sizeof(auth_plugin_handle_s)); + + auth_plugin->conn = createConnectionHandle(mod); + auth_plugin->assrt = createAssertionHandle(mod); + auth_plugin->hash = createHashHandle(mod); + auth_plugin->process = createProcessHandle(mod); + auth_plugin->user = createUserOpHandle(mod); + auth_plugin->ui = createUiOpHandle(mod); + + if (__stubCache == NULL) + __stubCache = new std::map(); + + /*id starts from 0*/ + auth_plugin->id = __stubCache->size(); + + IAuthStub *stub = new BAuthStub(); + stub->initLocal(auth_plugin); + + /*Later, during setCache its overwritten by mappedIndex*/ + __stubCache->insert(std::make_pair(auth_plugin->id, stub)); + + } + + + + + /*GModule *mod = g_module_open(fullPathName.c_str(), G_MODULE_BIND_LAZY); + if (mod != NULL) { + + _INFO("Found module"); + + auth_plugin_handle_s *auth_plugin = (auth_plugin_handle_s*) + calloc(1, sizeof(auth_plugin_handle_s)); + + auth_plugin->conn = createConnectionHandle(mod); + auth_plugin->assrt = createAssertionHandle(mod); + auth_plugin->hash = createHashHandle(mod); + auth_plugin->process = createProcessHandle(mod); + auth_plugin->user = createUserOpHandle(mod); + auth_plugin->ui = createUiOpHandle(mod); + + if (__stubCache == NULL) + __stubCache = new std::map(); + + //id starts from 0 + auth_plugin->id = __stubCache->size(); + + IAuthStub *stub = new BAuthStub(); + stub->initLocal(auth_plugin); + + //Later, during setCache its overwritten by mappedIndex + __stubCache->insert(std::make_pair(auth_plugin->id, stub)); + + }*/ + } + } + + g_pattern_spec_free(plugin_name_pattern); + + g_dir_close(dir); + + int count = 0; + if (__stubCache != NULL) + count = __stubCache->size(); + + _INFO("Total plugins found = [%d]", count); + + if (count > 0) + return 0; + + return -1; +} + +int +BoundADProvider::initPluginList(void) +{ + _INFO("initPluginList"); + + int ret32 = loadPlugins(FIDO_AUTH_PLUGINS_PATH_PREFIX); + int ret64 = loadPlugins(FIDO_AUTH_PLUGINS_PATH_PREFIX_64); + + if ((ret32 != 0) && (ret64 != 0)) + return -1; + + else + return 0; +} diff --git a/server/auth_discovery/src/BtADProvider.cpp b/server/auth_discovery/src/BtADProvider.cpp new file mode 100644 index 0000000..2bcd709 --- /dev/null +++ b/server/auth_discovery/src/BtADProvider.cpp @@ -0,0 +1,255 @@ + +#include "BtAdProvider.h" +#include "IAuthConnection.h" +#include "BtCon.h" +#include "RAuthStub.h" +#include "AsmHelper.h" +#include "BTRoamingKeys.h" +//#include +#include + +#define RA_BT_SERVICE_UUID "00001101-0000-1000-8000-00805F9B34FB" + +int +BtAdProvider::init(void) +{ + __isDiscovering = false; + __sAddr = NULL; + + int ret = bt_initialize(); + _INFO("bt_initialize=[%d]", ret); + if (ret != BT_ERROR_NONE) + return -1; + __stubCache = NULL; + + return 0; +} + +auth_type_e +BtAdProvider::getType(void) +{ + return AUTH_TYPE_ROAMING; +} + +void +BtAdProvider::onSockChanged(int result, bt_socket_connection_state_e connection_state, + bt_socket_connection_s *connection, void *user_data) +{ + if (result != BT_ERROR_NONE) { + _ERR("[%d]", result); + return; + } + + if (connection_state == BT_SOCKET_CONNECTED) { + _INFO("Connected = [%s][%s][%d]", connection->remote_address, connection->service_uuid, + connection->local_role); + + IAuthConnection *btCon = new BtCon(); + bt_socket_connection_s *conClone = (bt_socket_connection_s*)calloc(1, sizeof(bt_socket_connection_s)); + conClone->socket_fd = connection->socket_fd; + conClone->server_fd = connection->server_fd; + conClone->local_role = connection->local_role; + conClone->remote_address = _SAFE_DUP(connection->remote_address); + conClone->service_uuid = _SAFE_DUP(connection->service_uuid); + btCon->init(conClone); + + IAuthStub *raStub = new RAuthStub(); + raStub->initRemote(btCon); + + BtAdProvider *btPro = (BtAdProvider*)user_data; + if (btPro->__stubCache == NULL) { + btPro->__stubCache = new std::map(); + } + + /*Index auto incremented, set properly during setCache*/ + btPro->__stubCache->insert(std::make_pair(btPro->__stubCache->size(), raStub)); + + btPro->__sAddr = _SAFE_DUP(connection->remote_address); + finishDiscovery(user_data); + return; + } + + if (connection_state == BT_SOCKET_DISCONNECTED) { + _INFO("DisConnected = [%s][%s][%d]", connection->remote_address, connection->service_uuid, + connection->local_role); + return; + } +} + +bool +BtAdProvider::onBondedList(bt_device_info_s *device_info, void *user_data) +{ + _INFO(""); + if (device_info->is_bonded == true) { + _INFO(""); + + /*bool isCon = false; + int ret = bt_device_is_profile_connected(device_info->remote_address, BT_PROFILE_RFCOMM, &isCon); + _INFO("%d", ret); + + if (isCon == false) { + //ret = bt_device_get_connection_state(device_info->remote_address, BT_PROFILE_RFCOMM, &isCon); + //_INFO("%d", ret); + if (isCon == false) { + _INFO("Ignoring [%s], since not connected currently", device_info->remote_address); + return true; + } + }*/ + + int sC = device_info->service_count; + _INFO("service count=[%d]", sC); + //for (int i = 0; i < sC; i++) { + //_INFO(""); + //_INFO("service uuid=[%s]", device_info->service_uuid[i]); + //char *uuid = device_info->service_uuid[i]; + //if (uuid != NULL) { + _INFO(""); + //if (strcmp(RA_BT_SERVICE_UUID, uuid) == 0) { + _INFO("Trying to conenct to [%s][%s]", device_info->remote_address, RA_BT_SERVICE_UUID); + + + BtAdProvider *btPro = (BtAdProvider*)user_data; + if (btPro->__isConCbSet == false) { + bt_socket_set_connection_state_changed_cb(onSockChanged, user_data); + btPro->__isConCbSet = true; + } + int ret = bt_socket_connect_rfcomm(device_info->remote_address, + RA_BT_SERVICE_UUID); + _INFO("%d", ret); + if (ret != BT_ERROR_NONE) { + _ERR("bt_socket_connect_rfcomm failed=[%d]", ret); + return true; + } + //} + //} + //} + } + return true; +} + +std::vector * +BtAdProvider::getAuthStubList(void) +{ + if (__stubCache != NULL) { + /*Close previous sockets*/ + std::map::iterator it = __stubCache->begin(); + for (; it != __stubCache->end(); ++it) { + _INFO(""); + it->second->shutDown(); + } + + delete __stubCache; + __stubCache = NULL; + } + + + __waitLoop = g_main_loop_new(NULL, FALSE); + + __isDiscovering = true; + __sAddr = NULL; + __isConCbSet = false; + + _INFO("bluetooth discovery [%d] sec timeout starting", 5); + g_timeout_add_seconds_full(G_PRIORITY_DEFAULT, 5, discoverTimeOutCb, this, + finishDiscovery); + + int ret = bt_adapter_foreach_bonded_device(onBondedList, this); + if (ret != BT_ERROR_NONE) { + _ERR("bt_adapter_foreach_bonded_device=[%d]", ret); + return NULL; + } + + _INFO("bluetooth starting wait loop"); + g_main_loop_run(__waitLoop); + + _INFO("bluetooth After waitloop"); + + if (__sAddr == NULL) { + _ERR("No supported device found"); + g_main_loop_unref(__waitLoop); + __waitLoop = NULL; + + __isDiscovering = false; + return NULL; + } + + g_main_loop_unref(__waitLoop); + __waitLoop = NULL; + __isDiscovering = false; + __isConCbSet = false; + + if (__stubCache != NULL) { + _INFO("bluetooth BT Roaming Auth Count=[%d]", __stubCache->size()); + } else { + _ERR("bluetooth BT Roaming Auth List is NULL"); + return NULL; + } + + std::vector *stubList = NULL; + + std::map::iterator it = __stubCache->begin(); + for (; it != __stubCache->end(); ++it) { + if (stubList == NULL) + stubList = new std::vector(); + + stubList->push_back(it->second); + } + _INFO("bluetooth "); + return stubList; + +} + +void +BtAdProvider::setCache(std::map *stubCache) +{ + _INFO("bluetooth BleAdProvider::setCache"); + if (stubCache != NULL) + _INFO("bluetooth New cache set size =[%d]", stubCache->size()); + + __stubCache = stubCache; +} + +IAuthStub* +BtAdProvider::getStubFromCache(int mappedIdx) +{ + if (__stubCache == NULL) { + _ERR("bluetooth Stub cache NULL"); + return NULL; + } + + return __stubCache->find(mappedIdx)->second; +} + +BtAdProvider::~BtAdProvider(void) +{ + +} + +BtAdProvider::BtAdProvider(void) +{ + +} + +void +BtAdProvider::finishDiscovery(gpointer data) +{ + _INFO("bluetooth "); + + bt_socket_unset_connection_state_changed_cb(); + + BtAdProvider *btPro = (BtAdProvider*)(data); + btPro->__isConCbSet = false; + if (btPro->__isDiscovering == false) + return; + + btPro->__isDiscovering = false; + g_main_loop_quit(btPro->__waitLoop); +} + +gboolean +BtAdProvider::discoverTimeOutCb(gpointer user_data) +{ + _INFO("bluetooth discoverTimeOutCb"); + + return G_SOURCE_REMOVE; +} diff --git a/server/auth_discovery/src/BtCon.cpp b/server/auth_discovery/src/BtCon.cpp new file mode 100644 index 0000000..ee16be2 --- /dev/null +++ b/server/auth_discovery/src/BtCon.cpp @@ -0,0 +1,354 @@ + +#include "BtCon.h" +#include "BTRoamingKeys.h" +#include "RoamingKeys.h" +#include "AsmHelper.h" +#include +#include + +/* +#define printIfAndRet(e1, e2, str) \ + if (e1 == e2) {\ + _INFO("bluetooth fido asm bt error=[%s]", str);\ + return; \ + }\ + +static void +printBTError(bt_error_e e) +{ + printIfAndRet(e, BT_ERROR_NONE, "BT_ERROR_NONE"); + printIfAndRet(e, BT_ERROR_CANCELLED, "BT_ERROR_CANCELLED"); + printIfAndRet(e, BT_ERROR_INVALID_PARAMETER, "BT_ERROR_INVALID_PARAMETER"); + printIfAndRet(e, BT_ERROR_OUT_OF_MEMORY, "BT_ERROR_OUT_OF_MEMORY"); + printIfAndRet(e, BT_ERROR_RESOURCE_BUSY, "BT_ERROR_RESOURCE_BUSY"); + printIfAndRet(e, BT_ERROR_TIMED_OUT, "BT_ERROR_TIMED_OUT"); + printIfAndRet(e, BT_ERROR_NOW_IN_PROGRESS, "BT_ERROR_NOW_IN_PROGRESS"); + printIfAndRet(e, BT_ERROR_NOT_SUPPORTED, "BT_ERROR_NOT_SUPPORTED"); + printIfAndRet(e, BT_ERROR_PERMISSION_DENIED, "BT_ERROR_PERMISSION_DENIED"); + printIfAndRet(e, BT_ERROR_QUOTA_EXCEEDED, "BT_ERROR_QUOTA_EXCEEDED"); + printIfAndRet(e, BT_ERROR_NO_DATA, "BT_ERROR_NO_DATA"); + printIfAndRet(e, BT_ERROR_DEVICE_POLICY_RESTRICTION, "BT_ERROR_DEVICE_POLICY_RESTRICTION"); + printIfAndRet(e, BT_ERROR_NOT_INITIALIZED, "BT_ERROR_NOT_INITIALIZED"); + printIfAndRet(e, BT_ERROR_NOT_ENABLED, "BT_ERROR_NOT_ENABLED"); + printIfAndRet(e, BT_ERROR_ALREADY_DONE, "BT_ERROR_ALREADY_DONE"); + printIfAndRet(e, BT_ERROR_ALREADY_DONE, "BT_ERROR_ALREADY_DONE"); + printIfAndRet(e, BT_ERROR_OPERATION_FAILED, "BT_ERROR_OPERATION_FAILED"); + printIfAndRet(e, BT_ERROR_NOT_IN_PROGRESS, "BT_ERROR_NOT_IN_PROGRESS"); + printIfAndRet(e, BT_ERROR_REMOTE_DEVICE_NOT_BONDED, "BT_ERROR_REMOTE_DEVICE_NOT_BONDED"); + printIfAndRet(e, BT_ERROR_AUTH_REJECTED, "BT_ERROR_AUTH_REJECTED"); + printIfAndRet(e, BT_ERROR_AUTH_FAILED, "BT_ERROR_AUTH_FAILED"); + printIfAndRet(e, BT_ERROR_REMOTE_DEVICE_NOT_FOUND, "BT_ERROR_REMOTE_DEVICE_NOT_FOUND"); + printIfAndRet(e, BT_ERROR_SERVICE_SEARCH_FAILED, "BT_ERROR_SERVICE_SEARCH_FAILED"); + printIfAndRet(e, BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED, "BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED"); + printIfAndRet(e, BT_ERROR_AGAIN, "BT_ERROR_AGAIN"); + printIfAndRet(e, BT_ERROR_SERVICE_NOT_FOUND, "BT_ERROR_SERVICE_NOT_FOUND"); + printIfAndRet(e, e, "Unknown"); +}*/ + +#define RA_LEN_DELIM ':' +#define DELIM_LEN 2 +#define D_LEN_MAX_LEN 12 + +static const std::string RA_LEN_DELIM_STR = ":"; + +int +BtCon::sendDataInternal(int sock_fd, char *data) +{ + if (data == NULL) { + _ERR(""); + return -1; + } + + int d_len = strlen(data); + int full_data_max_len = d_len + DELIM_LEN + D_LEN_MAX_LEN; + char *full_data = (char*)(calloc(full_data_max_len, sizeof(char))); + + snprintf(full_data, full_data_max_len, "%d%s%s", d_len, RA_LEN_DELIM_STR.c_str(), data); + + int full_data_len = strlen(full_data); + _INFO("Sending data of len=[%d]", full_data_len); + + int ret = bt_socket_send_data(sock_fd, full_data, full_data_len); + _INFO("bt_socket_send_data=[%d]", ret); + + return 0; +} + +BtCon::BtCon(void) +{ + __activeTimerId = 0; +} + +BtCon::~BtCon(void) +{ + if (__fullData != NULL) + free(__fullData); +} + +int +BtCon::init(void *handle) +{ + __sock = (bt_socket_connection_s *)handle; + return 0; +} + +void +BtCon::receiveFinshed(void) +{ + if (__fullData == NULL) { + _ERR("No response"); + __activeTimerId = 0; + g_main_loop_quit(__waitLoop); + return; + } + if (__expDLen <= 0) { + _INFO("Ignoring timer since data received fully before timeout"); + __activeTimerId = 0; + g_main_loop_quit(__waitLoop); + return; + } + + __expDLen = 0; + __remDLen = 0; + + __resp = new StringMap(); + + std::string k(RA_QUERY_KEY_RESPONSE); + + char *fullDataString = (char*)calloc(__fullDataLen + 1, sizeof(char)); + memcpy(fullDataString, __fullData, __fullDataLen); + + std::string v(strdup(fullDataString)); + _INFO("Total pack length = [%d]", __fullDataLen); + __resp->insert(std::make_pair(k, v)); + + __activeTimerId = 0; + + g_main_loop_quit(__waitLoop); +} + +void +BtCon::timerExpired(gpointer data) +{ + _INFO("bluetooth "); + BtTimerInfo *timerInfo = (BtTimerInfo*)data; + if (timerInfo == NULL) + return; + + BtCon *btCon = (BtCon*)timerInfo->__caller; + if (btCon == NULL) + return; + + _INFO("timeout id=[%d], active id =[%d]", timerInfo->__timerId, btCon->__activeTimerId); + + if (timerInfo->__timerId != btCon->__activeTimerId) { + _INFO("timeout ignored"); + timerInfo->__caller = NULL; + delete timerInfo; + return; + } + + btCon->__expDLen = 0; + btCon->__remDLen = 0; + + btCon->__activeTimerId = 0; + timerInfo->__caller = NULL; + delete timerInfo; + + g_main_loop_quit(btCon->__waitLoop); +} + +gboolean +BtCon::discoverTimeOutCb(gpointer user_data) +{ + _INFO("bluetooth discoverTimeOutCb"); + + return G_SOURCE_REMOVE; +} + +void +BtCon::onBtSockDataReceived(bt_socket_received_data_s *data, void *user_data) +{ + _INFO("Arrived pack length = [%d]", data->data_size); + BtCon *btCon = (BtCon*)user_data; + if (btCon->__fullData != NULL) + _INFO("Current pack length = [%d]", btCon->__fullDataLen); + + _INFO("%s", data->data); + + if (data->data_size <= 0) { + g_main_loop_quit(btCon->__waitLoop); + return; + } + + /*Packets may arrive segmented, so use timer to get long data*/ + char *pack = NULL; + int fullPackLen = 0; + int cur_pack_len = 0; + + BtTimerInfo *timerInfo = NULL; + + if (btCon->__fullData == NULL) { + timerInfo = new BtTimerInfo(); + if (btCon->__activeTimerId > 1000) + btCon->__activeTimerId = 0; + else + btCon->__activeTimerId++; + + timerInfo->__caller = btCon; + timerInfo->__timerId = btCon->__activeTimerId; + _INFO("bluetooth [%d] sec timeout starting", 6); + g_timeout_add_seconds_full(G_PRIORITY_DEFAULT, 6, discoverTimeOutCb, timerInfo, + timerExpired); + + int i = 0; + + while (1) { + + if (data->data[i] == RA_LEN_DELIM) + break; + if ((i == data->data_size) || (data->data[i] == '\0')) { + i = 0; + break; + } + i++; + } + + if (i <= 1) { + _ERR("Missing :"); + btCon->receiveFinshed(); + return; + } + + int d_first_frame_len = data->data_size - (i + 1); + if (d_first_frame_len <= 0) { + _ERR("Empty data frame following :"); + btCon->receiveFinshed(); + return; + } + + char *d_len_str = (char*)calloc(12, sizeof(char)); + memcpy(d_len_str, data->data, i); + /*snprintf(d_len_str, i, "%s", data->data);*/ + + int d_len = 0; + sscanf(d_len_str, "%d", &d_len); + d_len_str[i] = '\0'; + _INFO("[%s]", d_len_str); + + _INFO("Data Len frame=[%d]", d_len); + + btCon->__expDLen = d_len; + + pack = (char*)calloc(d_first_frame_len + 1, sizeof(char)); + char *data_pack = data->data; + data_pack += i + 1; + memcpy(pack, data_pack, d_first_frame_len); + + btCon->__remDLen = btCon->__expDLen - d_first_frame_len; + cur_pack_len = d_first_frame_len; + } else { + + pack = (char*)calloc(data->data_size, sizeof(char)); + memcpy(pack, data->data, data->data_size); + + btCon->__remDLen = btCon->__remDLen - data->data_size; + cur_pack_len = data->data_size; + } + + + if (btCon->__fullData != NULL) + fullPackLen = cur_pack_len + btCon->__fullDataLen; + else + fullPackLen = cur_pack_len; + + char *fullPackNew = (char*)calloc(fullPackLen, sizeof(char)); + + if (btCon->__fullData != NULL) + memcpy(fullPackNew, btCon->__fullData, btCon->__fullDataLen); + + memcpy(fullPackNew + btCon->__fullDataLen, pack, cur_pack_len); + + btCon->__fullDataLen = fullPackLen; + if (btCon->__fullData != NULL) + free(btCon->__fullData); + btCon->__fullData = fullPackNew; + + free(pack); + + if (btCon->__remDLen <= 0) { + _INFO("Received all"); + btCon->receiveFinshed(); + } +} + +StringMap* +BtCon::sendReqSync(StringMap *reqData) +{ + _INFO("sendReqSync start"); + __fullData = NULL; + __fullDataLen = 0; + + RET_IF_FAIL(reqData != NULL, NULL); + RET_IF_FAIL(__sock != NULL, NULL); + RET_IF_FAIL(__sock->socket_fd != -1, NULL); + + __resp = NULL; + std::string reqTlvB64 = (reqData->find(RA_QUERY_KEY_REQUEST)->second); + char *reqTlvB64Copy = strdup(reqTlvB64.c_str()); + + __waitLoop = g_main_loop_new(NULL, FALSE); + + bt_socket_set_data_received_cb(onBtSockDataReceived, this); + + int dLen = strlen(reqTlvB64Copy); + _INFO("Sock fd=%d", __sock->socket_fd); + _INFO("Data=%s", reqTlvB64Copy); + _INFO("Data len=%d", dLen); + /*TODO: Data format=> :*/ + int ret = sendDataInternal(__sock->socket_fd, reqTlvB64Copy); + //int ret = bt_socket_send_data(__sock->socket_fd, reqTlvB64Copy, dLen); + _INFO("bt_socket_send_data=[%d]", ret); + if (ret != 0) { + _INFO("incomplete transfer=[%d]", ret); + bt_socket_unset_data_received_cb(); + _INFO(""); + g_main_loop_unref(__waitLoop); + _INFO(""); + return NULL; + } + + g_main_loop_run(__waitLoop); + + bt_socket_unset_data_received_cb(); + + g_main_loop_unref(__waitLoop); + + if (__fullData != NULL) { + free(__fullData); + __fullData = NULL; + } + __fullDataLen = 0; + + return __resp; +} + +int +BtCon::shutdown(void) +{ + _BEGIN; + RET_IF_FAIL(__sock != NULL, 0); + int ret = bt_socket_disconnect_rfcomm(__sock->socket_fd); + _INFO("bt_socket_disconnect_rfcomm=[%d]", ret); + _END; + return 0; +} + +char* +BtCon::getInfo(void) +{ + RET_IF_FAIL(__sock != NULL, NULL); + + return __sock->remote_address; +} + diff --git a/server/auth_discovery/src/IoTCon.cpp b/server/auth_discovery/src/IoTCon.cpp new file mode 100644 index 0000000..b0c6c63 --- /dev/null +++ b/server/auth_discovery/src/IoTCon.cpp @@ -0,0 +1,113 @@ + +#include "IoTCon.h" +#include "AuthnrTypes.h" +#include "AsmHelper.h" +#include "RoamingKeys.h" + +IoTCon::IoTCon(void) +{ + +} + +IoTCon::~IoTCon(void) +{ + +} + +int +IoTCon::init(void *handle) +{ + __iotClient = (iotcon_remote_resource_h)handle; + + return 0; +} + +void +IoTCon::onResponsePut(iotcon_remote_resource_h resource, iotcon_error_e err, + iotcon_request_type_e request_type, iotcon_response_h response, void *user_data) +{ + _INFO(""); + + IoTCon *conn = (IoTCon*)user_data; + _INFO("onResponsePut [%p]", conn); + + iotcon_representation_h repr = NULL; + iotcon_attributes_h state = NULL; + + iotcon_response_get_representation(response, &repr); + + iotcon_representation_get_attributes(repr, &state); + + char *asm_resp = NULL; + iotcon_attributes_get_str(state, RA_QUERY_KEY_RESPONSE, &asm_resp); + if (asm_resp != NULL) { + _INFO("%s=%s", RA_QUERY_KEY_RESPONSE, asm_resp); + + conn->__resp = new StringMap(); + std::string k(RA_QUERY_KEY_RESPONSE); + std::string v(strdup(asm_resp)); + conn->__resp->insert(std::make_pair(k, v)); + } else { + _ERR("Failed to get %s", RA_QUERY_KEY_RESPONSE); + conn->__resp = NULL; + } + + _INFO("Before g_main_loop_quit"); + g_main_loop_quit(conn->__waitLoop); +} + +StringMap * +IoTCon::sendReqSync(StringMap *reqData) +{ + RET_IF_FAIL(reqData != NULL, NULL); + + std::string reqTlvB64 = (reqData->find(RA_QUERY_KEY_REQUEST)->second); + std::string svrId = (reqData->find(RA_QUERY_KEY_SERVER_ID)->second); + + iotcon_attributes_h attr = NULL; + iotcon_attributes_create(&attr); + + char *reqTlvB64Copy = strdup(reqTlvB64.c_str()); + + iotcon_attributes_add_str(attr, RA_QUERY_KEY_REQUEST, reqTlvB64Copy); + iotcon_attributes_add_str(attr, RA_QUERY_KEY_SERVER_ID, _SAFE_DUP(svrId.c_str())); + + iotcon_representation_h repr = NULL; + iotcon_representation_create(&repr); + + iotcon_representation_set_attributes(repr, attr); + + + __waitLoop = g_main_loop_new(NULL, FALSE); + int ret = iotcon_remote_resource_put(__iotClient, repr, NULL, onResponsePut, this); + if (ret != IOTCON_ERROR_NONE) { + _ERR("iotcon_remote_resource_get failed"); + return NULL; + } + + _INFO("iotcon_remote_resource_get=[%d]", ret); + g_main_loop_run(__waitLoop); + + _INFO("sendReqSync end"); + + return __resp; +} + +char* +IoTCon::getInfo(void) +{ + char *devId = NULL; + int ret = iotcon_remote_resource_get_device_id(__iotClient, &devId); + if (ret == IOTCON_ERROR_NONE && devId != NULL) { + _INFO("Device Id = [%s]", devId); + return devId; + } + + return NULL; +} + +int +IoTCon::shutdown(void) +{ + return 0; +} diff --git a/server/auth_discovery/src/IotADProvider.cpp b/server/auth_discovery/src/IotADProvider.cpp new file mode 100644 index 0000000..b23466a --- /dev/null +++ b/server/auth_discovery/src/IotADProvider.cpp @@ -0,0 +1,214 @@ + +#include "IotADProvider.h" + +#include +#include "IoTCon.h" +#include "AsmHelper.h" +#include "RAuthStub.h" +#include "RoamingKeys.h" +#include "AuthIndexHanlder.h" +#include "RoamingUtil.h" + +#define EMPTY_STUB_LIST std::vector() + +#define AUTH_INDEX_START 5 + +void +IotADProvider::finishDiscovery(gpointer data) +{ + _INFO(""); + IotADProvider *rAuthManager = (IotADProvider*)(data); + g_main_loop_quit(rAuthManager->__waitLoop); +} + +gboolean +IotADProvider::discoverTimeOutCb(gpointer user_data) +{ + _INFO("discoverTimeOutCb"); + + return G_SOURCE_REMOVE; +} + +bool +IotADProvider::resourceFoundCb(iotcon_remote_resource_h resource, iotcon_error_e result, + void *user_data) +{ + _INFO(""); + + if (result != IOTCON_ERROR_NONE) { + _ERR("No remote resource found"); + return false; + //return; + } + + char *rDevId = NULL; + iotcon_remote_resource_get_device_id(resource, &rDevId); + if (rDevId == NULL) { + _ERR("iotcon_remote_resource_get_device_id failed"); + return false; + //return; + } + + char *rHostAddr = NULL; + iotcon_remote_resource_get_host_address(resource, &rHostAddr); + if (rHostAddr == NULL) { + _ERR("iotcon_remote_resource_get_host_address failed"); + return false; + //return; + } + + std::string p2pMacAddr = RoamingUtil::getP2PMACAddr(); + std::string btMacAddr = RoamingUtil::getBTMACAddr(); + + _INFO("[%s][%s]", p2pMacAddr.c_str(), btMacAddr.c_str()); + _INFO("[%s]", rDevId); + _INFO("[%s]", rHostAddr); + + if (p2pMacAddr.empty() == false) { + + if (strcmp(rDevId, p2pMacAddr.c_str()) == 0) { + _INFO("Ignoring request from same device"); + return false; + //return; + } + + } else if (btMacAddr.empty() == false) { + if (strcmp(rDevId, btMacAddr.c_str()) == 0) { + _INFO("Ignoring request from same device"); + return false; + //return; + } + } + + IotADProvider *radPro = (IotADProvider*)user_data; + _INFO("this=[%p]", radPro); + + iotcon_remote_resource_h resourceClone = NULL; + + _INFO("Before iotcon_remote_resource_clone"); + int ret = iotcon_remote_resource_clone(resource, &resourceClone); + _INFO("After iotcon_remote_resource_clone"); + if (ret != IOTCON_ERROR_NONE) { + _ERR("Failed to clone remote resource"); + return false; + //return; + } + + IAuthStub *stub = new RAuthStub(); + IAuthConnection *conH = new IoTCon(); + conH->init(resourceClone); + stub->initRemote(conH); + + if (radPro->__stubCache == NULL) { + radPro->__stubCache = new std::map(); + } + + /*Index auto incremented, set properly during setCache*/ + radPro->__stubCache->insert(std::make_pair(radPro->__stubCache->size(), stub)); + + return true; +} + +std::vector* +IotADProvider::getAuthStubList(void) +{ + delete __stubCache; + __stubCache = NULL; + + __waitLoop = g_main_loop_new(NULL, FALSE); + + g_timeout_add_seconds_full(G_PRIORITY_DEFAULT, 1, discoverTimeOutCb, this, + finishDiscovery); + + + iotcon_query_h iotQ = NULL; + iotcon_query_create(&iotQ); + + int ret = iotcon_query_set_resource_type(iotQ, RA_RESOURCE_TYPE); + + ret = iotcon_find_resource(IOTCON_MULTICAST_ADDRESS, IOTCON_CONNECTIVITY_ALL, + iotQ, resourceFoundCb, this); + if (IOTCON_ERROR_NONE != ret) { + _ERR("iotcon_find_resource failed"); + + return NULL; + } + + g_main_loop_run(__waitLoop); + + _INFO("After g_main_loop_run"); + + g_main_loop_unref(__waitLoop); + __waitLoop = NULL; + + if (__stubCache != NULL) { + _INFO("Roaming Auth Count=[%d]", __stubCache->size()); + } else { + _ERR("Roaming Auth List is NULL"); + return NULL; + } + + std::vector *stubList = NULL; + + std::map::iterator it = __stubCache->begin(); + for (; it != __stubCache->end(); ++it) { + if (stubList == NULL) + stubList = new std::vector(); + + stubList->push_back(it->second); + } + _INFO(""); + return stubList; +} + +void +IotADProvider::setCache(std::map *stubCache) +{ + _INFO("IotADProvider::setCache"); + if (stubCache != NULL) + _INFO("New cache set size =[%d]", stubCache->size()); + + __stubCache = stubCache; +} + +IAuthStub* +IotADProvider::getStubFromCache(int mappedIdx) +{ + if (__stubCache == NULL) { + _ERR("Stub cache NULL"); + return NULL; + } + + return __stubCache->find(mappedIdx)->second; +} + +IotADProvider::~IotADProvider(void) +{ + if (__isValidInst == true) + iotcon_deinitialize(); +} + +int +IotADProvider::init(void) +{ + int ret = iotcon_initialize(RA_ACL_CLIENT); + if (IOTCON_ERROR_NONE != ret) { + __isValidInst = false; + return -1; + } + + __isValidInst = true; + return 0; +} + +auth_type_e +IotADProvider::getType(void) +{ + return AUTH_TYPE_ROAMING; +} + +IotADProvider::IotADProvider(void) + : __isValidInst(false) +{ + __stubCache = NULL; +} diff --git a/server/auth_discovery/src/RAuthStub.cpp b/server/auth_discovery/src/RAuthStub.cpp new file mode 100644 index 0000000..c3bd402 --- /dev/null +++ b/server/auth_discovery/src/RAuthStub.cpp @@ -0,0 +1,306 @@ + +#include "RAuthStub.h" +#include "AsmHelper.h" +#include "RoamingKeys.h" +#include "RoamingUtil.h" +#include "TlvData.h" +#include "AuthIndexHanlder.h" +#include "AsmHelper.h" +#include "asmcrypto.h" + +#include +#include +#include + +#define GET_INFO_TLV_B64 "ATQAAA==" +#define BIG_SIZE 5000 + +#define RA_RESOURCE_URI "/fido/auth/roaming/pin" +#define RA_RESOURCE_TYPE "org.tizen.fidoauthroamingpin" + +#define RA_QUERY_KEY_REQUEST "ra_query_prcoess_tlv" +#define RA_QUERY_KEY_SERVER_ID "ra_query_server_id" +#define RA_QUERY_KEY_RESPONSE "ra_response" + +RAuthStub::RAuthStub(void) + : __cachedData(NULL) +{ + _INFO("RAuthStub creation"); + __conH = NULL; +} + +RAuthStub::~RAuthStub(void) +{ + _INFO("RAuthStub creation"); + __cachedData = NULL; +} + +int +RAuthStub::initLocal(auth_plugin_handle_s *pluginH) +{ + return -1; +} + +int +RAuthStub::initRemote(IAuthConnection *conH) +{ + __conH = conH; + return 0; +} + +auth_type_e +RAuthStub::getType(void) +{ + return AUTH_TYPE_ROAMING; +} + +GetAuthInfoResp* +RAuthStub::getInfo(void) +{ + if (__cachedData != NULL) + return __cachedData; + + /*TODO*/ + char *getInfoB64Resp = NULL; + int ret = processTlv(GET_INFO_TLV_B64, &getInfoB64Resp); + + if (ret != 0) + return NULL; + + /*Base 64 Decode getInfoB64Resp*/ + unsigned char *getInfoRaw = NULL; + int getInfoRawLen = 0; + ret = RoamingUtil::b64Decode(getInfoB64Resp, strlen(getInfoB64Resp), &getInfoRaw, &getInfoRawLen); + if (ret != 0 || getInfoRaw == NULL) { + _ERR("B64 decode failed"); + + SAFE_DELETE(getInfoB64Resp); + + return NULL; + } + + /*TLV decode*/ + TlvEncodable encodable; + encodable.setEncoder(EID_UAFV1_GETINFO_RESP); + GetAuthInfoResp *getInfoResp = encodable.decode(getInfoRaw); + if (getInfoResp == NULL) { + _ERR("TLV decode failed"); + + free(getInfoB64Resp); + free(getInfoRaw); + + return NULL; + } + + /*Map AuthIndex to MappedIndex*/ + if (getInfoResp->authList != NULL) { + + GList *authListIter = g_list_first(getInfoResp->authList); + while (authListIter != NULL) { + AuthenticatorInfo *authInfo = (AuthenticatorInfo*)(authListIter->data); + + char *devId = __conH->getInfo(); + + std::string devIdStr(devId); + std::string aaidStr(authInfo->__aaid); + _INFO("To AuthIndexHandler"); + _INFO("[%s][%s][%d]", devIdStr.c_str(), aaidStr.c_str(), + authInfo->__authenticatorIndex); + + authInfo->__authenticatorIndex = AuthIndexHandler::getInstance()->getMappedIndex( + devIdStr, aaidStr, + authInfo->__authenticatorIndex); + + authInfo->__devId = devId; + authInfo->__isUserEnrolled = FALSE;/*TODO*/ + authInfo->__isRoamingAuthenticator = TRUE; + authListIter = authListIter->next; + } + + } + + getInfoResp->attach_hint = ATTACHMENT_HINT_EXTERNAL; + + __cachedData = getInfoResp; + + return __cachedData; +} + +int +RAuthStub::processTlv(const char *reqTlvB64, char **respTlvB64) +{ + RET_IF_FAIL(__conH != NULL, -1); + + RET_IF_FAIL(reqTlvB64 != NULL, -1); + + _INFO(""); + + StringMap *reqData = new StringMap(); + + std::string kR(RA_QUERY_KEY_REQUEST); + std::string vR(reqTlvB64); + reqData->insert(std::make_pair(kR, vR)); + + _INFO(""); + std::string kS(RA_QUERY_KEY_SERVER_ID); + std::string vS(AsmCrypto::getAsmToken()); + reqData->insert(std::make_pair(kS, vS)); + + _INFO(""); + StringMap *respData = __conH->sendReqSync(reqData); + + if (respData == NULL) + return -1; + + _INFO(""); + if (respData->find(RA_QUERY_KEY_RESPONSE) == respData->end()) + return -1; + + _INFO("processTlv end"); + + std::string respTlvStr = (respData->find(RA_QUERY_KEY_RESPONSE)->second); + *respTlvB64 = strdup(respTlvStr.c_str()); + + _INFO(""); + return 0; +} + +RegisterResp* +RAuthStub::processRegister(const RegisterReq *regReq) +{ + RET_IF_FAIL(regReq != NULL, NULL); + + _INFO(""); + char *tlvReqB64 = RoamingUtil::composeAuthRegisterReq(regReq); + RET_IF_FAIL(tlvReqB64 != NULL, NULL); + + _INFO(""); + char *tlvRespB64 = NULL; + processTlv(tlvReqB64, &tlvRespB64); + RET_IF_FAIL(tlvRespB64 != NULL, NULL); + + _INFO(""); + unsigned char *tlvResp = NULL; + int tlvRespLen = 0; + _INFO(""); + RoamingUtil::b64Decode(tlvRespB64, strlen(tlvRespB64), &tlvResp, &tlvRespLen); + RET_IF_FAIL(tlvResp != NULL, NULL); + + _INFO(""); + TlvEncodable encodable; + encodable.setEncoder(EID_UAFV1_REGISTER_RESP); + return (RegisterResp*)(encodable.decode(tlvResp)); +} + +AuthenticateResp* +RAuthStub::processAuthenticate(const AuthenticateReq *authnReq) +{ + RET_IF_FAIL(authnReq != NULL, NULL); + + char *tlvReqB64 = RoamingUtil::composeAuthSignReq(authnReq); + RET_IF_FAIL(tlvReqB64 != NULL, NULL); + + char *tlvRespB64 = NULL; + processTlv(tlvReqB64, &tlvRespB64); + RET_IF_FAIL(tlvRespB64 != NULL, NULL); + + unsigned char *tlvResp = NULL; + int tlvRespLen = 0; + RoamingUtil::b64Decode(tlvRespB64, strlen(tlvRespB64), &tlvResp, &tlvRespLen); + RET_IF_FAIL(tlvResp != NULL, NULL); + + TlvEncodable encodable; + encodable.setEncoder(EID_UAFV1_SIGN_RESP); + return (AuthenticateResp*)(encodable.decode(tlvResp)); +} + +DeregResp* +RAuthStub::processDeregister(const DeregReq *deregReq) +{ + _INFO(""); + + RET_IF_FAIL(deregReq != NULL, NULL); + + char *tlvReqB64 = RoamingUtil::composeAuthDeregReq(deregReq); + _INFO(""); + RET_IF_FAIL(tlvReqB64 != NULL, NULL); + + _INFO(""); + char *tlvRespB64 = NULL; + processTlv(tlvReqB64, &tlvRespB64); + RET_IF_FAIL(tlvRespB64 != NULL, NULL); + + _INFO(""); + unsigned char *tlvResp = NULL; + int tlvRespLen = 0; + RoamingUtil::b64Decode(tlvRespB64, strlen(tlvRespB64), &tlvResp, &tlvRespLen); + RET_IF_FAIL(tlvResp != NULL, NULL); + + _INFO(""); + TlvEncodable encodable; + encodable.setEncoder(EID_UAFV1_DEREG_RESP); + + _INFO(""); + return (DeregResp*)(encodable.decode(tlvResp)); +} + +Buffer * +RAuthStub::hash(const std::string& message) +{ + _BEGIN; + + /*TODO: Default Hash, ignoring Roaming*/ + unsigned char digest[5000]; + AsmCrypto::genHash256(message.c_str(), strlen(message.c_str()), digest); + _INFO("AuthenrStub::hash::digest generated is [%s]", digest); + + Buffer *hashInfo = ALLOC(Buffer); + hashInfo->len = SHA256_DIGEST_LENGTH; + hashInfo->data = NALLOC(BIG_SIZE, uint8_t); + memcpy(hashInfo->data, digest, SHA256_DIGEST_LENGTH); + //std::string digestStr((char*)digest, 5000); + _END; + + return hashInfo; + +} + +Buffer* +RAuthStub::encodeRegisterRespone(RegAssertion *regAssrt, char **assrt_scheme) +{ + RET_IF_FAIL(regAssrt != NULL, NULL); + + TlvEncodable encodableRegAssrtn(regAssrt); + encodableRegAssrtn.setEncoder(EID_UAFV1_REG_ASSERTION_RESP); + + *assrt_scheme = (char *)(calloc(1, 128)); + snprintf(*assrt_scheme, 128 - 1, "%s", "UAFV1TLV"); + + return encodableRegAssrtn.encode(); +} + +Buffer* +RAuthStub::encodeSignRespone(AuthAssertion *authAssertion, char **assrt_scheme) +{ + _BEGIN; + RET_IF_FAIL(authAssertion != NULL, NULL); + + TlvEncodable encodableSignAssrtn(authAssertion); + encodableSignAssrtn.setEncoder(EID_UAFV1_SIGN_ASSERTION_RESP); + + *assrt_scheme = (char *)(calloc(1, 128)); + snprintf(*assrt_scheme, 128 - 1, "%s", "UAFV1TLV"); + + _END; + return encodableSignAssrtn.encode(); +} + +void +RAuthStub::shutDown(void) +{ + _BEGIN; + RET_IF_FAIL_VOID(__conH != NULL); + + __conH->shutdown(); + _END; +} diff --git a/server/auth_discovery/src/RoamingUtil.cpp b/server/auth_discovery/src/RoamingUtil.cpp new file mode 100644 index 0000000..94e0227 --- /dev/null +++ b/server/auth_discovery/src/RoamingUtil.cpp @@ -0,0 +1,443 @@ + +#include "RoamingUtil.h" +#include "AsmHelper.h" +#include "Tlv.h" +#include "TlvData.h" +#include "AsmRequest.h" +#include "AsmResponse.h" +#include "AuthnrTypes.h" + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#define STRING_OP_TYPE_GET_INFO "GetInfo" +#define STRING_OP_TYPE_REG "Register" +#define STRING_OP_TYPE_AUTH "Authenticate" +#define STRING_OP_TYPE_DEREG "Deregister" +#define STRING_OP_TYPE_OPEN_SETTINGS "OpenSettings" +#define STRING_OP_TYPE_GET_REGS "GetRegistrations" + +const std::string GET_INFO_TLV_B64 = "ATQAAA=="; + +#define IC_FEATURE_OIC "http://tizen.org/feature/iot.oic" +#define IC_FEATURE_OCF "http://tizen.org/feature/iot.ocf" + +#define MAC_ADDR_STR_LEN 18 + +int +RoamingUtil::b64Decode(const char *encoded_data, int encoded_size, unsigned char **decoded_data, + int *decoded_size) +{ + RET_IF_FAIL(encoded_data != NULL, -1); + + int len = 0; + *decoded_size = encoded_size; + + (*decoded_data) = (unsigned char *) calloc((*decoded_size) * 1.5, sizeof(char)); + + BIO *bmem = BIO_new_mem_buf((void *) encoded_data, (*decoded_size)); + + BIO *bioCmd = BIO_new(BIO_f_base64()); + + BIO_set_flags(bioCmd, BIO_FLAGS_BASE64_NO_NL); + + bmem = BIO_push(bioCmd, bmem); + + len = BIO_read(bmem, (void *) (*decoded_data), (*decoded_size)); + _INFO("%d", len); + + *decoded_size = len; + + BIO_free_all(bmem); + + _INFO(""); + + return 0; +} + +char* +RoamingUtil::b64Encode(unsigned char *input, int ip_len) +{ + RET_IF_FAIL(input != NULL, NULL); + RET_IF_FAIL(ip_len > 0, NULL); + + unsigned char *output = (unsigned char*)calloc(ip_len * 1.5, sizeof(char)); + + BIO *bmem = NULL; + BIO *b64 = NULL; + BUF_MEM *bptr = NULL; + b64 = BIO_new(BIO_f_base64()); + if (b64 == NULL) { + _ERR("BIO_new failed \n"); + free(output); + return NULL; + } + + BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL); + + bmem = BIO_new(BIO_s_mem()); + b64 = BIO_push(b64, bmem); + BIO_write(b64, input, ip_len); + BIO_flush(b64); + BIO_get_mem_ptr(b64, &bptr); + + memcpy(output, bptr->data, bptr->length); + output[bptr->length] = 0; + + if(b64) + BIO_free_all(b64); + + return (char*)output; +} + +AsmRequest* +RoamingUtil::createAuthReq(const char *tlvB64) +{ + + RET_IF_FAIL(tlvB64 != NULL, NULL); + + unsigned char *tlvRaw = NULL; + int tlvRawLen = 0; + b64Decode(tlvB64, strlen(tlvB64), &tlvRaw, &tlvRawLen); + + RET_IF_FAIL(tlvRaw != NULL, NULL); + + tlv_s *tlv = tlv_decode(tlvRaw); + if (tlv == NULL) { + _ERR(""); + free(tlvRaw); + return NULL; + } + + AsmRequest *asmReq = new AsmRequest(); + + switch (tlv->tag) { + + case TAG_UAFV1_GETINFO_CMD: { + _INFO(""); + TlvEncodable encodableReq; + encodableReq.setEncoder(EID_UAFV1_GETINFO_REQ); + + asmReq->__customRequest = encodableReq.decode(tlvRaw); + asmReq->__requestType = STRING_OP_TYPE_GET_INFO; + } + break; + + case TAG_UAFV1_REGISTER_CMD: { + _INFO(""); + TlvEncodable encodableReq; + encodableReq.setEncoder(EID_UAFV1_REGISTER_REQ); + + asmReq->__customRequest = encodableReq.decode(tlvRaw); + asmReq->__requestType = STRING_OP_TYPE_REG; + } + break; + + case TAG_UAFV1_SIGN_CMD: { + _INFO(""); + TlvEncodable encodableReq; + encodableReq.setEncoder(EID_UAFV1_SIGN_REQ); + + asmReq->__customRequest = encodableReq.decode(tlvRaw); + asmReq->__requestType = STRING_OP_TYPE_AUTH; + } + break; + + case TAG_UAFV1_DEREGISTER_CMD: { + _INFO(""); + TlvEncodable encodableReq; + encodableReq.setEncoder(EID_UAFV1_DEREG_REQ); + + asmReq->__customRequest = encodableReq.decode(tlvRaw); + asmReq->__requestType = STRING_OP_TYPE_DEREG; + } + break; + + default: + /*Rest are not supported for Roaming operations*/ + _ERR(""); + delete asmReq; + return NULL; + + } + + _INFO(""); + return asmReq; +} + +char * +RoamingUtil::composeAuthGetInfoReq(void) +{ + return strdup(GET_INFO_TLV_B64.c_str()); +} + +char * +RoamingUtil::composeAuthRegisterReq(const RegisterReq *req) +{ + _INFO(""); + TlvEncodable encodable(req); + encodable.setEncoder(EID_UAFV1_REGISTER_REQ); + + _INFO(""); + Buffer *tlvBuff = encodable.encode(); + RET_IF_FAIL(tlvBuff != NULL, NULL); + + _INFO(""); + return b64Encode(tlvBuff->data, tlvBuff->len); +} + +char * +RoamingUtil::composeAuthSignReq(const AuthenticateReq *req) +{ + TlvEncodable encodable(req); + encodable.setEncoder(EID_UAFV1_SIGN_REQ); + + Buffer *tlvBuff = encodable.encode(); + RET_IF_FAIL(tlvBuff != NULL, NULL); + + return b64Encode(tlvBuff->data, tlvBuff->len); +} + +char * +RoamingUtil::composeAuthDeregReq(const DeregReq *req) +{ + TlvEncodable encodable(req); + encodable.setEncoder(EID_UAFV1_DEREG_REQ); + + Buffer *tlvBuff = encodable.encode(); + RET_IF_FAIL(tlvBuff != NULL, NULL); + + return b64Encode(tlvBuff->data, tlvBuff->len); +} + +char* +RoamingUtil::composeAuthGetInfoResponce(std::vector *infoList) +{ + RET_IF_FAIL(infoList != NULL, NULL); + + GetAuthInfoResp *respFull = (GetAuthInfoResp*)calloc(1, sizeof(GetAuthInfoResp)); + + _INFO("RoamingUtil compose 1"); + + /*GetInfo TLV resp from each stub*/ + std::vector::iterator infoListIter = infoList->begin(); + for (; infoListIter != infoList->end(); ++infoListIter) { + GetAuthInfoResp *resp = (GetAuthInfoResp*)(*infoListIter); + /*Accumulates all authList from GetInfoResp list*/ + + _INFO("RoamingUtil compose 2"); + if (resp->authList != NULL) { + + _INFO("RoamingUtil compose 3"); + GList *respAuthListIter = g_list_first(resp->authList); + + while (respAuthListIter != NULL) { + + _INFO("RoamingUtil compose 4"); + AuthenticatorInfo *authInfo = (AuthenticatorInfo*)(respAuthListIter->data); + if (authInfo != NULL) { + authInfo->__isRoamingAuthenticator = TRUE; + respFull->authList = g_list_append(respFull->authList, authInfo); + _INFO("RoamingUtil compose 5"); + } + + respAuthListIter = respAuthListIter->next; + } + } + } + + if (respFull->authList == NULL || g_list_length(respFull->authList) <= 0) { + _INFO("RoamingUtil authList empty error"); + respFull->statusCode = UAF_ASM_STATUS_ERROR; + } else { + respFull->statusCode = UAF_ASM_STATUS_OK; + respFull->authList = g_list_first(respFull->authList); + _INFO("RoamingUtil authList valid"); + } + + TlvEncodable encoderResp(respFull); + encoderResp.setEncoder(EID_UAFV1_GETINFO_RESP); + _INFO("RoamingUtil after TLV"); + + Buffer *getinfoRespBuff = encoderResp.encode(); + _INFO("RoamingUtil after TLV encode"); + + /*B64 encode*/ + return b64Encode(getinfoRespBuff->data, getinfoRespBuff->len); + +} + +char * +RoamingUtil::composeAuthRegisterResponse(RegisterResp *regResp) +{ + RET_IF_FAIL(regResp != NULL, NULL); + + TlvEncodable encoderResp(regResp); + encoderResp.setEncoder(EID_UAFV1_REGISTER_RESP); + + Buffer *respBuff = encoderResp.encode(); + + /*B64 encode*/ + return b64Encode(respBuff->data, respBuff->len); +} + +char * +RoamingUtil::composeAuthSignResponse(AuthenticateResp *authResp) +{ + RET_IF_FAIL(authResp != NULL, NULL); + + TlvEncodable encoderResp(authResp); + encoderResp.setEncoder(EID_UAFV1_SIGN_RESP); + + Buffer *respBuff = encoderResp.encode(); + + /*B64 encode*/ + return b64Encode(respBuff->data, respBuff->len); +} + +char * +RoamingUtil::composeAuthDeregResponse(DeregResp *dResp) +{ + RET_IF_FAIL(dResp != NULL, NULL); + + TlvEncodable encoderResp(dResp); + encoderResp.setEncoder(EID_UAFV1_DEREG_RESP); + + Buffer *respBuff = encoderResp.encode(); + + /*B64 encode*/ + return b64Encode(respBuff->data, respBuff->len); +} + +bool +RoamingUtil::isRASupported(void) +{ + /*TODO: Define a macro in spec file to let the platform/profile SCM decide*/ + return true; + + /*bool raSupported = false; + system_info_get_platform_bool(IC_FEATURE_OIC, &raSupported); + if (raSupported == false) + system_info_get_platform_bool(IC_FEATURE_OCF, &raSupported); + + return raSupported;*/ +} + +std::string +RoamingUtil::getBTMACAddr(void) +{ + static std::string g_mac_address; + if(g_mac_address.empty() == true) { + bt_initialize(); + char* mac_address = NULL; + bt_adapter_enable(); + int ret = bt_adapter_get_address(&mac_address); + if (ret != 0) { + _ERR("bt_adapter_get_address failed"); + return g_mac_address; + } + + _INFO("bluetooth get mac address : %s", mac_address); + g_mac_address = mac_address; + free(mac_address); + bt_deinitialize(); + } + _INFO("mac address:%s", g_mac_address.c_str()); + + return g_mac_address; +} + + +std::string +RoamingUtil::getDevName(void) +{ + static std::string g_device_name; + if(g_device_name.empty()) { + char* device_name = vconf_get_str(VCONFKEY_SETAPPL_DEVICE_NAME_STR); + if (device_name == NULL) { + g_device_name = "Tizen"; + } else { + g_device_name = device_name; + } + _INFO("device_name: %s", g_device_name.c_str()); + } + + return g_device_name; +} + +char +RoamingUtil::makeP2PMAC(char c) +{ + char convert_c = c; + if ((convert_c >= 'A') && (convert_c <= 'F')) { + convert_c = ((((convert_c - 'A') + 10) | 0x02) - 10) + 'A'; + } else if ((convert_c >= '0') && (convert_c <= '9')) { + convert_c = ((convert_c - '0') | 0x02); + if (convert_c < 10) + convert_c = convert_c + '0'; + else + convert_c = 'A' + (convert_c - 10); + } else { + _ERR("wrong byte for mac!"); + } + return convert_c; +} + +std::string +RoamingUtil::getP2PMACAddr(void) +{ + static std::string g_p2p_mac_address; + if(g_p2p_mac_address.empty()) { + char p2p_mac[MAC_ADDR_STR_LEN]; + memset(p2p_mac, 0x0, MAC_ADDR_STR_LEN); + + char* temp_addr = vconf_get_str(VCONFKEY_WIFI_BSSID_ADDRESS); + if (temp_addr == NULL) { + _ERR("vconf_get_str Failed for %s", VCONFKEY_WIFI_BSSID_ADDRESS); + } else { + memcpy(p2p_mac, temp_addr, MAC_ADDR_STR_LEN-1); + p2p_mac[1] = makeP2PMAC(p2p_mac[1]); + _INFO("P2P mac is %s", p2p_mac); + free(temp_addr); + + g_p2p_mac_address = p2p_mac; + } + } + _INFO("p2p mac address:%s", g_p2p_mac_address.c_str()); + return g_p2p_mac_address; +} + +char* +RoamingUtil::getServerId(void) +{ + connection_h conn = NULL; + connection_create(&conn); + + static char *mac = NULL; + if (mac != NULL) + return mac; + + /*Try: Ethernet*/ + int ret = connection_get_mac_address(conn, CONNECTION_TYPE_ETHERNET, &mac); + + /*Try: Wifi*/ + if (ret != CONNECTION_ERROR_NONE) + ret = connection_get_mac_address(conn, CONNECTION_TYPE_WIFI, &mac); + + /*Try: BT*/ + if (ret != CONNECTION_ERROR_NONE) + ret = connection_get_mac_address(conn, CONNECTION_TYPE_BT, &mac); + + return mac; +} diff --git a/server/fido_asm.json b/server/fido_asm.json new file mode 100644 index 0000000..57e9a11 --- /dev/null +++ b/server/fido_asm.json @@ -0,0 +1,8 @@ +{ + "vendor" : "FIDO Reference ASM", + "bin_path" : "/usr/bin/fido-asm", + "dbus_info" : "org.tizen.fidoasm", + "dbus_obj_path" : "/org/tizen/fidoasm", + "dbus_interface_name" : "org.tizen.fidoasm", + "dbus_method_name" : "asm_request" +} diff --git a/server/inc/AsmStorage.h b/server/inc/AsmStorage.h new file mode 100644 index 0000000..2eeefb9 --- /dev/null +++ b/server/inc/AsmStorage.h @@ -0,0 +1,176 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef ASMSTORAGE_H_ +#define ASMSTORAGE_H_ + +#include +#include +#include +#include + +typedef enum { + INT_PROP_ID = 0, + INT_PROP_AUTH_IDX, + INT_PROP_AUTH_ID, + INT_PROP_UID, + INT_PROP_MAPPED_AUTH_ID +} IntProperty; + +typedef enum { + STR_PROP_CALLER_ID = INT_PROP_MAPPED_AUTH_ID + 1, + STR_PROP_APP_ID, + STR_PROP_KEY_HANDLE, + STR_PROP_KEY_ID, + STR_PROP_TIME, + STR_PROP_DEV_ID, + STR_PROP_AAID, + STR_PROP_SECRET1, + STR_PROP_SECRET2 +} StringProperty; + +class IStorageParcel { + +public: + + IStorageParcel(void){} + virtual ~IStorageParcel(void){} + + virtual int setInt(IntProperty prop, int val) = 0; + virtual int setString(StringProperty prop, const std::string& val) = 0; + + virtual int getInt(IntProperty prop, int *val) = 0; + virtual int getString(StringProperty prop, char **val) = 0; + + virtual std::string getDBName(void) = 0; +}; + +class AsmStorageParcel : public IStorageParcel { + +public: + + AsmStorageParcel(void); + virtual ~AsmStorageParcel(void){} + + int setInt(IntProperty prop, int val); + int setString(StringProperty prop, const std::string& val); + + int getInt(IntProperty prop, int *val); + int getString(StringProperty prop, char **val); + + std::string getDBName(void); + +private: + + int __id; + int __authIdx; + std::string __callerId; + std::string __appId; + std::string __keyHandle; + std::string __keyId; + std::string __ts; + std::string __dbName; +}; + +class AuthStorageParcel : public IStorageParcel { + +public: + + AuthStorageParcel(void); + virtual ~AuthStorageParcel(void){} + + int setInt(IntProperty prop, int val); + int setString(StringProperty prop, const std::string& val); + + int getInt(IntProperty prop, int *val); + int getString(StringProperty prop, char **val); + + std::string getDBName(void); + +private: + + int __id; + std::string __devId; + std::string __aaid; + int __authIndex; + int __mappedIndex; + std::string __dbName; +}; + +class SecretStorageParcel : public IStorageParcel { + +public : + + SecretStorageParcel(void); + virtual ~SecretStorageParcel(void){} + + int setInt(IntProperty prop, int val); + int setString(StringProperty prop, const std::string& val); + + int getInt(IntProperty prop, int *val); + int getString(StringProperty prop, char **val); + + std::string getDBName(void); + +private : + + int __id; + std::string __aaid; + std::string __devId; + int __uid; + std::string __secret1; /*pin*/ + std::string __secret2; /*For future use*/ + std::string __dbName; +}; + +typedef struct _SearchCbData { + char *dbName; + std::vector *resList; +} SearchCbData; + +class AsmStorage { +public: + + static AsmStorage* getInstance(void); + + int insertData(IStorageParcel *parcel); + int insertBulkData(std::vector *parcel); + + std::vector *searchData(IStorageParcel *searchParcel); + + int deleteData(IStorageParcel *parcel); + int deleteAllData(const std::string& dbName); + +private: + AsmStorage(void); + + sqlite3* createIfNotExists(const std::string& dbName); + + static int searchItemCb(void *data, int argc, char **argv, char **azCollName); + static int maxMappedIndexCb(void *data, int argc, char **argv, char **azCollName); + sqlite3* openDBHandle(const std::string &dbNameBase); + void closeDBHandle(sqlite3 *dbH); + +private: + + /*sqlite3* __asmDb; + sqlite3* __authDb; + sqlite3* __secretDb;*/ + static AsmStorage* __this; +}; + +#endif /* ASMSTORAGE_H_ */ diff --git a/server/inc/ClientListener.h b/server/inc/ClientListener.h new file mode 100644 index 0000000..64fd052 --- /dev/null +++ b/server/inc/ClientListener.h @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef CLIENTLISTENER_H_ +#define CLIENTLISTENER_H_ + +#include +#include +#include +#include +#include "fido-client-ipc-stub.h" + +class ClientListner { + +public: + static ClientListner* getInstance(void); + int start(void); + +private: + ClientListner(void); + ~ClientListner(void); + + void initialize(void); + bool initDbus(void); + + static int readProc(const char *path, char *buf, int size); + static std::string getCallerId(GDBusMethodInvocation *invocation); + + static void onBusAcquired(GDBusConnection *connection, const gchar *name, + gpointer user_data); + + static void onNameAcquired(GDBusConnection *connection, const gchar *name, + gpointer user_data); + + static void onNameLost(GDBusConnection *connection, const gchar *name, + gpointer user_data); + + static gboolean onClientRequest(Fidoasm *object, GDBusMethodInvocation *invocation, + const gchar *asmReqJson); + + static gboolean onAgentRequest(Fidoasm *object, GDBusMethodInvocation *invocation, + const gchar *tlvReqB64); + + static gboolean onTCUiResponse(Fidoasm *object, GDBusMethodInvocation *invocation, + const gchar *nonce, int result); + + static gboolean onAccountUiResponse(Fidoasm *object, GDBusMethodInvocation *invocation, + const gchar *nonce, int result, const gchar *account); + + static gboolean onAuthUiResponse(Fidoasm *object, GDBusMethodInvocation *invocation, + int uiType, const gchar *nonce, int error, + const gchar *token); + +private: + static ClientListner *__this; + static guint __ownerId; + static Fidoasm* __dbusObj; +}; + + + +#endif /* CLIENTLISTENER_H_ */ diff --git a/server/ops/inc/AsmOp.h b/server/ops/inc/AsmOp.h new file mode 100644 index 0000000..83f9bc2 --- /dev/null +++ b/server/ops/inc/AsmOp.h @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef ASMOP_H_ +#define ASMOP_H_ + +#include +#include +#include +#include "AsmOpFactory.h" +#include "IAuthStub.h" + +class AsmRequest; +class AsmResponse; + +class AsmOp { + +public: + virtual ~AsmOp(void); + virtual char* execute(void); + +protected: + AsmOp(void); + +protected: + AsmRequest *__req; + AsmResponse *__resp; + IAuthStub *__authStub; + //std::queue *__states; + + friend class AsmOpFactory; + +private: + std::string getAsmToken(void); +}; + + +#endif /* ASMOP_H_ */ diff --git a/server/ops/inc/AsmOpFactory.h b/server/ops/inc/AsmOpFactory.h new file mode 100644 index 0000000..951cc6f --- /dev/null +++ b/server/ops/inc/AsmOpFactory.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef ASMOPFACTORY_H_ +#define ASMOPFACTORY_H_ + +#include "AsmRequest.h" + +class AsmOp; + +class AsmOpFactory { +public: + static AsmOp* createOperation(AsmRequest *asmReq); + +private: + AsmOpFactory(void); + ~AsmOpFactory(void); +}; + + + +#endif /* ASMOPFACTORY_H_ */ diff --git a/server/ops/inc/AuthenticateOp.h b/server/ops/inc/AuthenticateOp.h new file mode 100644 index 0000000..5528b87 --- /dev/null +++ b/server/ops/inc/AuthenticateOp.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef AUTHENTICATEOP_H_ +#define AUTHENTICATEOP_H_ + +#include "AsmOp.h" +#include "AsmOpFactory.h" + +class AuthenticateOp : public AsmOp { +public: + virtual char* execute(void); + ~AuthenticateOp(void); + +private: + AuthenticateOp(void){} + friend class AsmOpFactory; +}; + +#endif /* AUTHENTICATEOP_H_ */ diff --git a/server/ops/inc/DeregOp.h b/server/ops/inc/DeregOp.h new file mode 100644 index 0000000..ef97567 --- /dev/null +++ b/server/ops/inc/DeregOp.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef DEREGOP_H_ +#define DEREGOP_H_ + +#include "AsmOp.h" +#include "AsmOpFactory.h" + +class DeregOp : public AsmOp { + +public: + ~DeregOp(void); + virtual char* execute(void); + +private: + DeregOp(void){} + friend class AsmOpFactory; +}; + + + + +#endif /* DEREGOP_H_ */ diff --git a/server/ops/inc/GetInfoOp.h b/server/ops/inc/GetInfoOp.h new file mode 100644 index 0000000..60eaef9 --- /dev/null +++ b/server/ops/inc/GetInfoOp.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef GETINFOOP_H_ +#define GETINFOOP_H_ + +#include "AsmOp.h" +#include "AsmOpFactory.h" + +class GetInfoOp : public AsmOp { + +public: + ~GetInfoOp(void); + + virtual char* execute(void); + +private: + GetInfoOp(void); + friend class AsmOpFactory; +}; + + + +#endif /* GETINFOOP_H_ */ diff --git a/server/ops/inc/GetRegsOp.h b/server/ops/inc/GetRegsOp.h new file mode 100644 index 0000000..fb48bdc --- /dev/null +++ b/server/ops/inc/GetRegsOp.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef GETREGSOP_H_ +#define GETREGSOP_H_ + + +#include "AsmOp.h" +#include "AsmOpFactory.h" + +class GetRegsOp : public AsmOp { + +public: + ~GetRegsOp(void); + virtual char* execute(void); + +private: + GetRegsOp(void){} + friend class AsmOpFactory; +}; + + +#endif /* GETREGSOP_H_ */ diff --git a/server/ops/inc/OpenSettingOp.h b/server/ops/inc/OpenSettingOp.h new file mode 100644 index 0000000..73029df --- /dev/null +++ b/server/ops/inc/OpenSettingOp.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef OPENSETTINGOP_H_ +#define OPENSETTINGOP_H_ + +#include "AsmOp.h" +#include "AsmOpFactory.h" + +class OpenSettingOp : public AsmOp { + +public: + ~OpenSettingOp(void); + virtual char* execute(void); + +private: + OpenSettingOp(void){} + friend class AsmOpFactory; +}; + +#endif /* OPENSETTINGOP_H_ */ diff --git a/server/ops/inc/RegisterOp.h b/server/ops/inc/RegisterOp.h new file mode 100644 index 0000000..1028c59 --- /dev/null +++ b/server/ops/inc/RegisterOp.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef REGISTEROP_H_ +#define REGISTEROP_H_ + +#include "AsmOp.h" +#include "AsmOpFactory.h" +#include + +class RegisterOp : public AsmOp { + +public: + ~RegisterOp(void); + virtual char* execute(void); + +private: + RegisterOp(void){} + + int initStates(void); + friend class AsmOpFactory; + + +}; + + +#endif /* REGISTEROP_H_ */ diff --git a/server/ops/src/AsmOp.cpp b/server/ops/src/AsmOp.cpp new file mode 100644 index 0000000..2c9ed8f --- /dev/null +++ b/server/ops/src/AsmOp.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "AsmOp.h" + +char* +AsmOp::execute(void) +{ + return NULL; +} + +AsmOp::AsmOp(void) +{ + +} + +AsmOp::~AsmOp(void) +{ + +} + + + diff --git a/server/ops/src/AsmOpFactory.cpp b/server/ops/src/AsmOpFactory.cpp new file mode 100644 index 0000000..ac2a13f --- /dev/null +++ b/server/ops/src/AsmOpFactory.cpp @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +#include + +#include "AsmOpFactory.h" +#include "AuthManager.h" +#include "AsmOp.h" +#include "AsmHelper.h" +#include "GetInfoOp.h" +#include "RegisterOp.h" +#include "AuthenticateOp.h" +#include "GetRegsOp.h" +#include "OpenSettingOp.h" +#include "DeregOp.h" +#include "AsmHelper.h" + +#define STRING_OP_TYPE_GET_INFO "GetInfo" +#define STRING_OP_TYPE_REG "Register" +#define STRING_OP_TYPE_AUTH "Authenticate" +#define STRING_OP_TYPE_DEREG "Deregister" +#define STRING_OP_TYPE_OPEN_SETTINGS "OpenSettings" +#define STRING_OP_TYPE_GET_REGS "GetRegistrations" + +AsmOp* +AsmOpFactory::createOperation(AsmRequest *req) +{ + _BEGIN; + + RET_IF_FAIL(req != NULL, NULL); + _INFO("request is no NULL"); + RET_IF_FAIL(req->getRequesttype().empty() == false, NULL); + std::string reqType = req->getRequesttype(); + _INFO("requestType is [%s]", reqType.c_str()); + + AsmOp *op = NULL; + + if (strcmp(req->getRequesttype().c_str(), STRING_OP_TYPE_GET_INFO) == 0) + op = new GetInfoOp(); + else if (strcmp(req->getRequesttype().c_str(), STRING_OP_TYPE_REG) == 0) + op = new RegisterOp(); + else if (strcmp(req->getRequesttype().c_str(), STRING_OP_TYPE_AUTH) == 0) + op = new AuthenticateOp(); + else if (strcmp(req->getRequesttype().c_str(), STRING_OP_TYPE_DEREG) == 0) + op = new DeregOp(); + else if (strcmp(req->getRequesttype().c_str(), STRING_OP_TYPE_OPEN_SETTINGS) == 0) + op = new OpenSettingOp(); + else if (strcmp(req->getRequesttype().c_str(), STRING_OP_TYPE_GET_REGS) == 0) + op = new GetRegsOp(); + + else + return NULL; + + if(op != NULL) + _INFO("op successfully created"); + + /*GetInfo does not need stub, because it needs to communicate with all*/ + if (strcmp(req->getRequesttype().c_str(), STRING_OP_TYPE_GET_INFO) != 0) { + + op->__authStub = NULL; + int mappedIndex = -1; + if (req->getCustomRequest() == NULL) { + mappedIndex = req->getAuthIndex(); + } else { + if (strcmp(req->getRequesttype().c_str(), STRING_OP_TYPE_REG) == 0) { + RegisterReq *regAuthReq = (RegisterReq*)req->getCustomRequest(); + mappedIndex = regAuthReq->authIdx; + } + if (strcmp(req->getRequesttype().c_str(), STRING_OP_TYPE_AUTH) == 0) { + AuthenticateReq *authAuthReq = (AuthenticateReq*)req->getCustomRequest(); + mappedIndex = authAuthReq->authIdx; + } + if (strcmp(req->getRequesttype().c_str(), STRING_OP_TYPE_DEREG) == 0) { + DeregReq *dAuthReq = (DeregReq*)req->getCustomRequest(); + mappedIndex = dAuthReq->authIdx; + } + } + + _INFO("Input mapped index = [%d]", mappedIndex); + + + IAuthStub *stub = AuthManager::getInstance()->getAuthStub(mappedIndex); + if (stub == NULL) { + _ERR("Could not find stub for [%d]", mappedIndex); + delete op; + return NULL; + } + _INFO("Stub = [%p]", stub); + op->__authStub = stub; + } + + op->__req = req; + + _END; + + return op; +} diff --git a/server/ops/src/AuthenticateOp.cpp b/server/ops/src/AuthenticateOp.cpp new file mode 100644 index 0000000..a4528be --- /dev/null +++ b/server/ops/src/AuthenticateOp.cpp @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "AuthenticateOp.h" +#include "AsmHelper.h" +#include "InitState.h" +#include "EnrollState.h" +#include "VerifyState.h" +#include "TCState.h" +#include "AuthenticateState.h" +#include +#include +#include "IAuthStub.h" +#include + +AuthenticateOp::~AuthenticateOp(void) +{ + /*TODO*/ +} + +char * +AuthenticateOp::execute(void) +{ + _BEGIN; + RET_IF_FAIL(__authStub != NULL, NULL); + + InitState *inState = new InitState(); + VerifyState *vState = new VerifyState(); + TCState *tcState = new TCState(); + AuthenticateState *authState = new AuthenticateState(); + + char *authReqStr = (char *)calloc(1, 128); + snprintf(authReqStr, 128 - 1, "%s", "authentication"); + + char *resJson = NULL; + char *vToken = NULL; + + int err = inState->handle(__authStub, NULL, NULL, NULL); + _INFO("[%d]", err); + CATCH_IF_FAIL(err == 0); + + err = vState->handle(__authStub, __req, authReqStr, &vToken); + _INFO("[%d]", err); + CATCH_IF_FAIL(err == 0); + + err = tcState->handle(__authStub, __req, NULL, NULL); + _INFO("[%d]", err); + CATCH_IF_FAIL(err == 0); + + err = authState->handle(__authStub, __req, vToken, &resJson); + _INFO("[%d]", err); + CATCH_IF_FAIL(err == 0); + + + delete inState; + delete vState; + delete tcState; + delete authState; + SAFE_DELETE(authReqStr); + + + _END; + return resJson; + +CATCH: + SAFE_DELETE(authReqStr); + delete inState; + delete vState; + delete tcState; + delete authState; + + _INFO("AuthenticateOp::execute::NULL"); + _END; + return NULL; +} diff --git a/server/ops/src/DeregOp.cpp b/server/ops/src/DeregOp.cpp new file mode 100644 index 0000000..77a7ce4 --- /dev/null +++ b/server/ops/src/DeregOp.cpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "DeregOp.h" +#include "InitState.h" +#include "DeregState.h" +#include "AsmHelper.h" + +DeregOp::~DeregOp(void) +{ + /*TODO*/ +} + +char * +DeregOp::execute(void) +{ + _INFO(""); + RET_IF_FAIL(__authStub != NULL, NULL); + + InitState *inState = new InitState(); + DeregState *deRegState = new DeregState(); + + char *resJson = NULL; + + int err = inState->handle(__authStub, NULL, NULL, NULL); + CATCH_IF_FAIL(err == 0); + + _INFO(""); + err = deRegState->handle(__authStub, __req, NULL, &resJson); + CATCH_IF_FAIL(err == 0); + + _INFO(""); + delete inState; + delete deRegState; + + return resJson; + +CATCH: + delete inState; + delete deRegState; + + return NULL; +} diff --git a/server/ops/src/GetInfoOp.cpp b/server/ops/src/GetInfoOp.cpp new file mode 100644 index 0000000..0125a00 --- /dev/null +++ b/server/ops/src/GetInfoOp.cpp @@ -0,0 +1,167 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "GetInfoOp.h" +#include "AsmHelper.h" +#include "AuthManager.h" +#include "JsonUtil.h" +#include "RoamingUtil.h" +#include "GetInfoResponse.h" +#include "AuthIndexHanlder.h" +#include "AuthnrTypes.h" + +#include + +GetInfoOp::GetInfoOp(void) +{ + _INFO(""); +} + +GetInfoOp::~GetInfoOp(void) +{ + /*TODO*/ + _INFO(""); +} + +char* +GetInfoOp::execute(void) +{ + _INFO(""); + RET_IF_FAIL(AuthManager::getInstance() != NULL, NULL); + + /*Request is From FIDO Client: Return Roaming + Bound Info, as JSON*/ + if (__req->getCustomRequest() == NULL) { + std::vector *authList = AuthManager::getInstance()-> + getAuthStubList(AUTH_TYPE_ALL); + + _INFO(""); + + /*MappedIndex - AuthStub(with cached getinfo response)*/ + std::map *stubMapB = NULL; + std::map *stubMapR = NULL; + std::vector *getInfoList = NULL; + + uaf_asm_status_e status = UAF_ASM_STATUS_OK; + if (authList == NULL) { + status = UAF_ASM_STATUS_ERROR; + } else { + stubMapB = new std::map(); + stubMapR = new std::map(); + + getInfoList = new std::vector(); + + _INFO("Setting up cache in Client"); + std::vector::iterator authStubIter = authList->begin(); + for (; authStubIter != authList->end(); ++authStubIter) { + IAuthStub *stub = *authStubIter; + /*This call caches the response inside stub*/ + GetAuthInfoResp *getInfo = stub->getInfo(); + GList *aListOfStub = getInfo->authList; + if ((getInfo != NULL) && (aListOfStub != NULL)) { + + while (aListOfStub != NULL) { + + AuthenticatorInfo *authInfo = (AuthenticatorInfo*)(aListOfStub->data); + + //std::string devIdStr(authInfo->__devId); + //std::string aaidStr(authInfo->__aaid); + + int realIndex = authInfo->__authenticatorIndex; + + int mappedIndex = realIndex;/*AuthIndexHandler::getInstance()-> + getMappedIndex(devIdStr, aaidStr, realIndex);*/ + + if (stub->getType() == AUTH_TYPE_BOUND) { + stubMapB->insert(std::make_pair(mappedIndex, stub)); + _INFO("[%d][%p] Added to Bound cache", mappedIndex, stub); + } else { + stubMapR->insert(std::make_pair(mappedIndex, stub)); + _INFO("[%d][%p] Added to Roaming cache", mappedIndex, stub); + } + + aListOfStub = aListOfStub->next; + } + getInfoList->push_back(getInfo); + } + } + + if ((stubMapB != NULL) && (stubMapB->size() > 0)) { + AuthManager::getInstance()->setAuthStubCache(AUTH_TYPE_BOUND, stubMapB); + } + if ((stubMapR != NULL) && (stubMapR->size() > 0)) { + AuthManager::getInstance()->setAuthStubCache(AUTH_TYPE_ROAMING, stubMapR); + } + + } + + _INFO("Cache done"); + + /*json response*/ + return JsonUtil::composeAsmGetInfoResponse(status, getInfoList); + } else { + /*Request is From Roaming Agent: Return Bound Info, as B64Encode(TLV)*/ + std::vector *authList = AuthManager::getInstance()->getAuthStubList(AUTH_TYPE_BOUND); + + std::map *stubMapB = NULL; + std::vector *getInfoList = NULL; + + stubMapB = new std::map(); + getInfoList = new std::vector(); + + _INFO("Setting up cache in Server"); + std::vector::iterator authStubIter = authList->begin(); + for (; authStubIter != authList->end(); ++authStubIter) { + IAuthStub *stub = *authStubIter; + /*This call caches the response inside stub*/ + GetAuthInfoResp *getInfo = stub->getInfo(); + if (getInfo == NULL) { + _ERR("getInfo NULL!!"); + return NULL; + } + GList *aListOfStub = getInfo->authList; + if (aListOfStub != NULL) { + + while (aListOfStub != NULL) { + + AuthenticatorInfo *authInfo = (AuthenticatorInfo*)(aListOfStub->data); + +// std::string devIdStr(authInfo->__devId); +// std::string aaidStr(authInfo->__aaid); + +// int realIndex = authInfo->__authenticatorIndex; + +// int mappedIndex = AuthIndexHandler::getInstance()-> +// getMappedIndex(devIdStr, aaidStr, realIndex); + + /*In getinfo authInfo->__authenticatorIndex is set as mappedIndex*/ + stubMapB->insert(std::make_pair(authInfo->__authenticatorIndex, stub)); + _INFO("[%d][%p] Stub Added to Bound cache", authInfo->__authenticatorIndex, stub); + + aListOfStub = aListOfStub->next; + } + getInfoList->push_back(getInfo); + } + } + if ((stubMapB != NULL) && (stubMapB->size() > 0)) { + AuthManager::getInstance()->setAuthStubCache(AUTH_TYPE_BOUND, stubMapB); + } + _INFO("Cache done in server"); + + /*b64 encoded tlv response*/ + return RoamingUtil::composeAuthGetInfoResponce(getInfoList); + } +} diff --git a/server/ops/src/GetRegsOp.cpp b/server/ops/src/GetRegsOp.cpp new file mode 100644 index 0000000..9abce82 --- /dev/null +++ b/server/ops/src/GetRegsOp.cpp @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "GetRegsOp.h" +#include "InitState.h" +#include "GetRegsState.h" +#include "AsmHelper.h" +#include + +GetRegsOp::~GetRegsOp(void) +{ + /*TODO*/ +} + +char * +GetRegsOp::execute(void) +{ + RET_IF_FAIL(__authStub != NULL, NULL); + + InitState *inState = new InitState(); + GetRegsState *getRegsState = new GetRegsState(); + + char *resJson = NULL; + + int err = inState->handle(__authStub, NULL, NULL, NULL); + CATCH_IF_FAIL(err == 0); + + err = getRegsState->handle(__authStub, __req, NULL, &resJson); + CATCH_IF_FAIL(err == 0); + + delete inState; + delete getRegsState; + + return resJson; + +CATCH: + delete inState; + delete getRegsState; + + return NULL; +} diff --git a/server/ops/src/OpenSettingOp.cpp b/server/ops/src/OpenSettingOp.cpp new file mode 100644 index 0000000..754bfa3 --- /dev/null +++ b/server/ops/src/OpenSettingOp.cpp @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "OpenSettingOp.h" + + +OpenSettingOp::~OpenSettingOp(void) +{ + /*TODO*/ +} + +char * +OpenSettingOp::execute(void) +{ + /*TODO*/ + return NULL; +} diff --git a/server/ops/src/RegisterOp.cpp b/server/ops/src/RegisterOp.cpp new file mode 100644 index 0000000..28c6cfa --- /dev/null +++ b/server/ops/src/RegisterOp.cpp @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "RegisterOp.h" +#include "AsmHelper.h" +#include "InitState.h" +#include "EnrollState.h" +#include "VerifyState.h" +#include "RegisterState.h" +#include +#include + +#include "IAuthStub.h" +#include + +RegisterOp::~RegisterOp(void) +{ + /*TODO*/ +} + +int +RegisterOp::initStates(void) +{ + //RET_IF_FAIL(__states == NULL, -1); + +// __states = new std::queue(); + +// InitState *inState = new InitState(); +// EnrollState *enState = new EnrollState(); +// VerifyState *vState = new VerifyState(); +// RegisterState *regState = new RegisterState(); + +// __states->push(inState); +// __states->push(enState); +// __states->push(vState); +// __states->push(regState); + + return 0; +} + +char * +RegisterOp::execute(void) +{ + _BEGIN; + RET_IF_FAIL(__authStub != NULL, NULL); + _INFO("Stub [%p]", __authStub); + + InitState *inState = new InitState(); + EnrollState *enState = new EnrollState(); + VerifyState *vState = new VerifyState(); + RegisterState *regState = new RegisterState(); + + char *regReqStr = (char *)calloc(1, 128); + snprintf(regReqStr, 128 - 1, "%s", "registration"); + + char *resJson = NULL; + char *vToken = NULL; + + int err = inState->handle(__authStub, NULL, NULL, NULL); + _INFO("Init State =[%d]", err); + CATCH_IF_FAIL(err == 0); + + err = enState->handle(__authStub, __req, regReqStr, &vToken); + _INFO("Enroll State =[%d]", err); + CATCH_IF_FAIL(err == 0); + + err = vState->handle(__authStub, __req, regReqStr, &vToken); + CATCH_IF_FAIL(err == 0); + + err = regState->handle(__authStub, __req, vToken, &resJson); + _INFO("Register State =[%d]", err); + CATCH_IF_FAIL(err == 0); + + delete inState; + delete enState; + delete vState; + delete regState; + SAFE_DELETE(regReqStr); + + _END; + return resJson; + +CATCH: + SAFE_DELETE(regReqStr); + delete inState; + delete enState; + delete vState; + delete regState; + + return NULL; +} + diff --git a/server/src/AsmStorage.cpp b/server/src/AsmStorage.cpp new file mode 100644 index 0000000..6887fdd --- /dev/null +++ b/server/src/AsmStorage.cpp @@ -0,0 +1,1234 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "AsmStorage.h" +#include "AsmHelper.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define BUFFLEN 65535 + +AsmStorage* AsmStorage::__this = NULL; + +//#define ASM_DB_PATH tzplatform_mkpath(TZ_SYS_DB, "/.fido_asm.db") +#define ASM_DB_PATH "/opt/dbspace/.fido_asm.db" +//#define AUTH_DB_PATH tzplatform_mkpath(TZ_SYS_DB, "/.fido_auth.db") +#define AUTH_DB_PATH "/opt/dbspace/.fido_auth.db" + +//#define SECRET_DB_PATH tzplatform_mkpath(TZ_SYS_DB, "/.fido_secret.db") +#define SECRET_DB_PATH "/opt/dbspace/.fido_secret.db" + +#define FIDO_ASM "fido_asm" +#define FIDO_AUTH "fido_auth" +#define FIDO_SECRET "fido_secret" + +#define DB_QUERY_CREATE_TABLE_ASM "CREATE TABLE IF NOT EXISTS ASMKEYS (" \ + "id INTEGER PRIMARY KEY AUTOINCREMENT, "\ + "auth_idx INTEGER NOT NULL, "\ + "caller_id TEXT NOT NULL, "\ + "app_id TEXT NOT NULL, "\ + "key_handle TEXT UNIQUE, "\ + "key_id TEXT NOT NULL UNIQUE, "\ + "time_stamp TEXT NOT NULL UNIQUE);" + +#define DB_QUERY_CREATE_TABLE_AUTH "CREATE TABLE if not exists AUTHLIST (" \ + "id INTEGER PRIMARY KEY AUTOINCREMENT, "\ + "auth_index INTEGER NOT NULL, "\ + "device_id TEXT NOT NULL, "\ + "aaid TEXT NOT NULL, "\ + "mapped_index INTEGER UNIQUE);" + +#define DB_QUERY_CREATE_TABLE_SECRET "CREATE TABLE IF NOT EXISTS SECRET (" \ + "id INTEGER PRIMARY KEY AUTOINCREMENT, "\ + "aaid TEXT NOT NULL, "\ + "device_id TEXT NOT NULL, "\ + "uid INTEGER NOT NULL, "\ + "secret_1 TEXT NOT NULL, "\ + "secret_2 TEXT);" + +AsmStorageParcel::AsmStorageParcel(void) +{ + __id = -1; + __authIdx = -1; + __dbName = FIDO_ASM; +} + +AuthStorageParcel::AuthStorageParcel(void) +{ + __id = -1; + __authIndex = -1; + __mappedIndex = -1; + __dbName = FIDO_AUTH; +} + +SecretStorageParcel::SecretStorageParcel(void) +{ + __id = -1; + __uid = -1; + __dbName = FIDO_SECRET; +} + +int +AsmStorageParcel::getInt(IntProperty prop, int *val) +{ + if(prop == INT_PROP_ID) { + *val = __id; + return SQLITE_OK; + } + if(prop == INT_PROP_AUTH_IDX) { + *val = __authIdx; + return SQLITE_OK; + } + + return SQLITE_ERROR; +} + +int +AsmStorageParcel::setInt(IntProperty prop, int val) +{ + if(prop == INT_PROP_ID) { + __id = val; + return SQLITE_OK; + } + if(prop == INT_PROP_AUTH_IDX) { + __authIdx = val; + return SQLITE_OK; + } + + return SQLITE_ERROR; +} + +int +AsmStorageParcel::getString(StringProperty prop, char **val) +{ + if(prop == STR_PROP_CALLER_ID) { + *val = strdup(__callerId.c_str()); + return SQLITE_OK; + } + if(prop == STR_PROP_APP_ID) { + *val = strdup(__appId.c_str()); + return SQLITE_OK; + } + if(prop == STR_PROP_KEY_HANDLE) { + *val = strdup(__keyHandle.c_str()); + return SQLITE_OK; + } + if(prop == STR_PROP_KEY_ID) { + *val = strdup(__keyId.c_str()); + return SQLITE_OK; + } + if(prop == STR_PROP_TIME) { + *val = strdup(__ts.c_str()); + return SQLITE_OK; + } + + return SQLITE_ERROR; +} + +int +AsmStorageParcel::setString(StringProperty prop, const std::string& val) +{ + if(prop == STR_PROP_CALLER_ID) { + __callerId = val; + return SQLITE_OK; + } + if(prop == STR_PROP_APP_ID) { + __appId = val; + return SQLITE_OK; + } + if(prop == STR_PROP_KEY_HANDLE) { + __keyHandle = val; + return SQLITE_OK; + } + if(prop == STR_PROP_KEY_ID) { + __keyId = val; + return SQLITE_OK; + } + if(prop == STR_PROP_TIME) { + __ts = val; + return SQLITE_OK; + } + + return SQLITE_ERROR; +} + +std::string +AsmStorageParcel::getDBName(void) +{ + return __dbName; +} + +int +AuthStorageParcel::getInt(IntProperty prop, int *val) +{ + if(prop == INT_PROP_AUTH_ID) { + *val = __authIndex; + return SQLITE_OK; + } + + if(prop == INT_PROP_MAPPED_AUTH_ID) { + *val = __mappedIndex; + return SQLITE_OK; + } + + return SQLITE_ERROR; +} + +int +AuthStorageParcel::setInt(IntProperty prop, int val) +{ + if(prop == INT_PROP_AUTH_ID) { + __authIndex = val; + return SQLITE_OK; + } + + if(prop == INT_PROP_MAPPED_AUTH_ID) { + __mappedIndex = val; + return SQLITE_OK; + } + + return SQLITE_ERROR; +} + +int +AuthStorageParcel::getString(StringProperty prop, char **val) +{ + if(prop == STR_PROP_DEV_ID) { + if (__devId == "" || __devId.empty() == true) + return SQLITE_ERROR; + + *val = strdup(__devId.c_str()); + return SQLITE_OK; + } + + if(prop == STR_PROP_AAID) { + if (__aaid == "" || __aaid.empty() == true) + return SQLITE_ERROR; + + *val = strdup(__aaid.c_str()); + return SQLITE_OK; + } + + return SQLITE_ERROR; +} + +int +AuthStorageParcel::setString(StringProperty prop, const std::string& val) +{ + if(prop == STR_PROP_DEV_ID) { + __devId = val; + return SQLITE_OK; + } + + if(prop == STR_PROP_AAID) { + __aaid = val; + return SQLITE_OK; + } + + return SQLITE_ERROR; +} + +std::string +AuthStorageParcel::getDBName(void) +{ + return __dbName; +} + +int +SecretStorageParcel::setInt(IntProperty prop, int val) +{ + if(prop == INT_PROP_UID) { + __uid = val; + return SQLITE_OK; + } + + return SQLITE_ERROR; +} + +int +SecretStorageParcel::getInt(IntProperty prop, int *val) +{ + if(prop == INT_PROP_UID) { + *val = __uid; + return SQLITE_OK; + } + + return SQLITE_ERROR; +} + +int +SecretStorageParcel::setString(StringProperty prop, const std::string &val) +{ + if(prop == STR_PROP_AAID) { + __aaid = val; + return SQLITE_OK; + } + + if(prop == STR_PROP_DEV_ID) { + __devId = val; + return SQLITE_OK; + } + + if(prop == STR_PROP_SECRET1) { + __secret1 = val; + return SQLITE_OK; + } + + if(prop == STR_PROP_SECRET2) { + __secret2 = val; + return SQLITE_OK; + } + + return SQLITE_ERROR; +} + +int +SecretStorageParcel::getString(StringProperty prop, char **val) +{ + if(prop == STR_PROP_AAID) { + if(__aaid == "" || __aaid.empty() == true) + return SQLITE_ERROR; + + *val = strdup(__aaid.c_str()); + return SQLITE_OK; + } + + if(prop == STR_PROP_DEV_ID) { + if(__devId == "" || __devId.empty() == true) + return SQLITE_ERROR; + + *val = strdup(__devId.c_str()); + return SQLITE_OK; + } + + if(prop == STR_PROP_SECRET1) { + if(__secret1 == "" || __secret1.empty() == true) + return SQLITE_ERROR; + + *val = strdup(__secret1.c_str()); + return SQLITE_OK; + } + + if(prop == STR_PROP_SECRET2) { + if(__secret2 == "" || __secret2.empty() == true) + return SQLITE_ERROR; + + *val = strdup(__secret2.c_str()); + return SQLITE_OK; + } + + return SQLITE_ERROR; +} + +std::string +SecretStorageParcel::getDBName(void) +{ + return __dbName; +} + +sqlite3* +AsmStorage::createIfNotExists(const std::string& dbName) +{ + _INFO("%s", dbName.c_str()); + + const char *query = NULL; + char *dbPath = NALLOC(512, char); + + if(dbName == FIDO_ASM) { + query = DB_QUERY_CREATE_TABLE_ASM; + snprintf(dbPath, 512 - 1, "%s", ASM_DB_PATH); + } + else if(dbName == FIDO_AUTH) { + query = DB_QUERY_CREATE_TABLE_AUTH; + snprintf(dbPath, 512 - 1, "%s", AUTH_DB_PATH); + } + else if(dbName == FIDO_SECRET) { + query = DB_QUERY_CREATE_TABLE_SECRET; + snprintf(dbPath, 512 - 1, "%s", SECRET_DB_PATH); + } + else { + return NULL; + } + + _INFO("%s", dbPath); + _INFO("%s", query); + + sqlite3 *dbH = NULL; + int ret = sqlite3_open_v2(dbPath , &dbH, + SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE, NULL); + + if (dbH == NULL) { + _ERR("Failed to create/open [%s]=[%d]", dbPath, ret); + return NULL; + } + + char *errMsg = NULL; + ret = sqlite3_exec(dbH, query, NULL, 0, &errMsg); + if (errMsg != NULL) { + _INFO("createtable error = [%s]", errMsg); + sqlite3_close(dbH); + + return NULL; + } + + sqlite3_close(dbH); + + sqlite3 *dbNew = NULL; + ret = sqlite3_open_v2(dbPath , &dbNew, SQLITE_OPEN_READWRITE, NULL); + if (dbNew == NULL) { + _ERR("sqlite3_open_v2 error = [%d]", ret); + return NULL; + } + + _INFO("DB open successful"); + return dbNew; +} + +sqlite3* +AsmStorage::openDBHandle(const std::string& dbName) +{ + _INFO("%s", dbName.c_str()); + char *dbPath = NALLOC(512, char); + if(dbName == FIDO_ASM) { + snprintf(dbPath, 512 - 1, "%s", ASM_DB_PATH); + } + else if(dbName == FIDO_AUTH) { + snprintf(dbPath, 512 - 1, "%s", AUTH_DB_PATH); + } + else if(dbName == FIDO_SECRET) { + snprintf(dbPath, 512 - 1, "%s", SECRET_DB_PATH); + } + else { + return NULL; + } + + sqlite3 *dbH = NULL; + int ret = db_util_open(dbPath, &dbH, DB_UTIL_REGISTER_HOOK_METHOD); + if (SQLITE_OK != ret) { + _ERR("db_util_open failed [%s]=[%d]", dbPath, ret); + return NULL; + } + + _INFO("db_util_open done [%s]=[%d]", dbPath, ret); + + return dbH; + /*return createIfNotExists(dbName);;*/ +} + +void +AsmStorage::closeDBHandle(sqlite3 *dbH) +{ + if (dbH == NULL) + return; + db_util_close(dbH); +} + +int +AsmStorage::insertData(IStorageParcel *parcel) +{ + _INFO("insertData begin"); + RET_IF_FAIL(parcel != NULL, SQLITE_ERROR); + + int ret = 0; + char *errMsg = NULL; + char query[BUFFLEN] = {0}; + const std::string& dbName = parcel->getDBName(); + _INFO("dbName=[%s]", dbName.c_str()); + + sqlite3* dbHandle = openDBHandle(dbName); + _INFO("openDBHandle=[%p]", dbHandle); + RET_IF_FAIL(dbHandle != NULL, SQLITE_ERROR); + + if (dbName == FIDO_ASM) { + int val = -1; + char *value = NULL; + + parcel->getInt(INT_PROP_AUTH_IDX, &val); + int authIdx = val; + + parcel->getString(STR_PROP_CALLER_ID, &value); + const std::string& callerId = value; + + parcel->getString(STR_PROP_APP_ID, &value); + const std::string& appId = value; + + parcel->getString(STR_PROP_KEY_HANDLE, &value); + const std::string& keyHandle = value; + + parcel->getString(STR_PROP_KEY_ID, &value); + const std::string& keyId = value; + + time_t now = time(0); + struct tm tstruct; + char buf[BUFFLEN] = {0}; + tstruct = *gmtime(&now); // UTC datetime + strftime(buf, sizeof(buf), "%Y-%m-%d.%H:%M:%S", &tstruct); + + timeval curTime; + gettimeofday(&curTime, NULL); + int milli = curTime.tv_usec/1000; + + char currentTime[BUFFLEN] = ""; + snprintf(currentTime, BUFFLEN, "%s:%d", buf, milli); + + const std::string& ts = currentTime; + + if(authIdx == -1 || callerId == "" || appId == "" ||keyId == "" ||ts == "") { + _ERR("One or more fields of the Asm parcel are not set properly"); + closeDBHandle(dbHandle); + return SQLITE_ERROR; + } + + if(keyHandle.empty() == true) { + snprintf(query, BUFFLEN, "INSERT INTO ASMKEYS(auth_idx, caller_id, app_id, key_id, time_stamp) " + "VALUES (%d, \'%s\', \'%s\', \'%s\', \'%s\');", + authIdx, callerId.c_str(), appId.c_str(), keyId.c_str(), ts.c_str()); + } + else { + snprintf(query, BUFFLEN, "INSERT INTO ASMKEYS(auth_idx, caller_id, app_id, key_handle, key_id, time_stamp) " + "VALUES (%d, \'%s\', \'%s\', \'%s\', \'%s\', \'%s\');", + authIdx, callerId.c_str(), appId.c_str(), keyHandle.c_str(), keyId.c_str(), ts.c_str()); + } + } + + else if(dbName == FIDO_AUTH) { + /*Device Id, AAID, AuthIndex taken from input*/ + /*MappedIndex is auto-incremented*/ + + char *devId = NULL; + char *aaid = NULL; + int authIndex = 0; + int mappedIndex = -1; + + /*select max(mapped_index) from AUTHLIST;*/ + /*store into mappedIndex*/ + /*insert into AUTHLIST(auth_index, device_id, aaid, mapped_index) + values(authIndex, devId, aaid, mappedIndex);*/ + + char *qrySelect = NALLOC(BUFFLEN, char); + snprintf(qrySelect, BUFFLEN - 1, "%s", + "SELECT IFNULL(MAX(mapped_index), -1) FROM AUTHLIST;"); + _INFO("%s", qrySelect); + ret = sqlite3_exec(dbHandle, qrySelect, maxMappedIndexCb, &mappedIndex, &errMsg); + _INFO("%d", ret); + CATCH_IF_FAIL(ret == SQLITE_OK); + + parcel->getInt(INT_PROP_AUTH_ID, &authIndex); + parcel->getString(STR_PROP_DEV_ID, &devId); + parcel->getString(STR_PROP_AAID, &aaid); + + if((devId == NULL) || (aaid == NULL) || (authIndex < 0)) { + _ERR("One or more fields of the Auth parcel are not set properly"); + _INFO("[%s][%s][%d]", devId, aaid, authIndex); + closeDBHandle(dbHandle); + return SQLITE_ERROR; + } + + _INFO("Current mappedIndex=[%d]", mappedIndex); + mappedIndex++; + + snprintf(query, BUFFLEN, + "INSERT INTO AUTHLIST(auth_index, device_id, aaid, mapped_index) VALUES (%d, \'%s\', \'%s\', %d);", + authIndex, devId, aaid, mappedIndex); + _INFO("%s", query); + } + + else if(dbName == FIDO_SECRET) { + int uid = -1; + char *aaid = NULL; + char *devId = NULL; + char *secret1 = NULL; + char *secret2 = NULL; + + parcel->getInt(INT_PROP_UID, &uid); + parcel->getString(STR_PROP_AAID, &aaid); + parcel->getString(STR_PROP_DEV_ID, &devId); + parcel->getString(STR_PROP_SECRET1, &secret1); + parcel->getString(STR_PROP_SECRET2, &secret2); + + if(uid == -1 || aaid == NULL || devId == NULL || secret1 == NULL) { + _ERR("One or more fields of the Secret parcel are not set properly"); + closeDBHandle(dbHandle); + return SQLITE_ERROR; + } + + if(secret2 == NULL) { + snprintf(query, BUFFLEN, + "INSERT INTO SECRET(aaid, device_id, uid, secret_1) VALUES (\'%s\', \'%s\', %d, \'%s\');", + aaid, devId, uid, secret1); + } + else { + snprintf(query, BUFFLEN, + "INSERT INTO SECRET(aaid, device_id, uid, secret_1, secret_2) VALUES (\'%s\', \'%s\', %d, \'%s\', \'%s\');", + aaid, devId, uid, secret1, secret2); + } + } + + _INFO("AsmStorage::insertData:: query = [%s]", query); + ret = sqlite3_exec(dbHandle, query, NULL, 0, &errMsg); + _INFO("AsmStorage::insertData:: ERROR MSG : [%s]", errMsg); + CATCH_IF_FAIL(ret == SQLITE_OK); + + _INFO("Record successfully inserted"); + closeDBHandle(dbHandle); + return SQLITE_OK; + +CATCH : + _ERR("Record not inserted/ Record already exists in Table"); + sqlite3_free(errMsg); + closeDBHandle(dbHandle); + return SQLITE_ERROR; +} + +int +AsmStorage::insertBulkData(std::vector *parcel) +{ + RET_IF_FAIL(parcel != NULL, SQLITE_ERROR); + int i = 0; + int ret = SQLITE_OK; + + for(std::vector::iterator it = parcel->begin(); it != parcel->end(); it++) { + ret = insertData(*it); + if(ret != SQLITE_OK) { + _INFO("%d th Record not inserted/already exists", i+1); + } + else { + _INFO("%d th Record inserted successfully", i+1); + } + i++; + } + return ret; +} + +int +AsmStorage::maxMappedIndexCb(void *data, int argc, char **argv, char **azCollName) +{ + _INFO(""); + int *mappedIndex = (int *)data; + + _INFO("argc=[%d]", argc); + + if ((argc > 0) && (argv[0] != NULL)) { + *mappedIndex = atoi(argv[0]); + _INFO("%d", *mappedIndex); + return SQLITE_OK; + } + + *mappedIndex = -1; + _INFO(""); + return SQLITE_OK; +} + +int +AsmStorage::searchItemCb(void *data, int argc, char **argv, char **azCollName) +{ + _BEGIN; + + SearchCbData *cbData = (SearchCbData *)data; + + std::string dbName(cbData->dbName, strlen(cbData->dbName)); + int itr = 0; + const char *empty = ""; + + if(dbName == FIDO_ASM) { + IStorageParcel *parcel = new AsmStorageParcel(); + + if(itr < argc) { + if(argv[itr] == NULL) + argv[itr] = (char*)empty; + parcel->setInt(INT_PROP_ID, atoi(argv[0])); + } + itr++; + if(itr < argc) { + if(argv[itr] == NULL) + argv[itr] = (char*)empty; + parcel->setInt(INT_PROP_AUTH_IDX, atoi(argv[1])); + } + itr++; + if(itr < argc) { + if(argv[itr] == NULL) + argv[itr] = (char*)empty; + parcel->setString(STR_PROP_CALLER_ID, argv[2]); + } + itr++; + if(itr < argc) { + if(argv[itr] == NULL) + argv[itr] = (char*)empty; + parcel->setString(STR_PROP_APP_ID, argv[3]); + } + itr++; + if(itr < argc) { + if(argv[itr] == NULL) + argv[itr] = (char*)empty; + parcel->setString(STR_PROP_KEY_HANDLE, argv[4]); + } + itr++; + if(itr < argc) { + if(argv[itr] == NULL) + argv[itr] = (char*)empty; + parcel->setString(STR_PROP_KEY_ID, argv[5]); + _INFO("AsmStorage::searchItemCb:: key_id = [%s]", argv[5]); + } + itr++; + if(itr < argc) { + if(argv[itr] == NULL) + argv[itr] = (char*)empty; + parcel->setString(STR_PROP_TIME, argv[6]); + } + + cbData->resList->push_back(parcel); + return SQLITE_OK; + + } + + else if(dbName == FIDO_AUTH) { + IStorageParcel *parcel = new AuthStorageParcel(); + + if ((argc >= 1) && (argv[1] != NULL)) + parcel->setInt(INT_PROP_AUTH_ID, atoi(argv[1])); + + if ((argc >= 2) && (argv[2] != NULL)) + parcel->setString(STR_PROP_DEV_ID, argv[2]); + + if ((argc >= 3) && (argv[3] != NULL)) + parcel->setString(STR_PROP_AAID, argv[3]); + + if ((argc >= 4) && (argv[4] != NULL)) + parcel->setInt(INT_PROP_MAPPED_AUTH_ID, atoi(argv[4])); + + cbData->resList->push_back(parcel); + return SQLITE_OK; + } + + else if(dbName == FIDO_SECRET) { + IStorageParcel *parcel = new SecretStorageParcel(); + + if(itr < argc) { + if(argv[itr] == NULL) + argv[itr] = (char*)empty; + parcel->setInt(INT_PROP_ID, atoi(argv[0])); + } + itr++; + + if(itr < argc) { + if(argv[itr] == NULL) + argv[itr] = (char*)empty; + parcel->setString(STR_PROP_AAID, argv[1]); + } + itr++; + + if(itr < argc) { + if(argv[itr] == NULL) + argv[itr] = (char*)empty; + parcel->setString(STR_PROP_DEV_ID, argv[2]); + } + itr++; + + if(itr < argc) { + if(argv[itr] == NULL) + argv[itr] = (char*)empty; + parcel->setInt(INT_PROP_UID, atoi(argv[3])); + } + itr++; + + if(itr < argc) { + if(argv[itr] == NULL) + argv[itr] = (char*)empty; + parcel->setString(STR_PROP_SECRET1, argv[4]); + } + itr++; + + if(itr < argc) { + if(argv[itr] == NULL) + argv[itr] = (char*)empty; + parcel->setString(STR_PROP_SECRET2, argv[5]); + } + + cbData->resList->push_back(parcel); + return SQLITE_OK; + } + + _END; + return SQLITE_ERROR; +} + +std::vector* +AsmStorage::searchData(IStorageParcel *parcel) +{ + RET_IF_FAIL(parcel != NULL, NULL); + const std::string& dbName = parcel->getDBName(); + sqlite3* dbHandle = openDBHandle(dbName); + RET_IF_FAIL(dbHandle != NULL, NULL); + + + std::vector *resultList = new std::vector(); + + char *errMsg = NULL; + char q[BUFFLEN] = {0}; + char *value = NULL; + char query[BUFFLEN] = {0}; + + + SearchCbData cbData; + + if(dbName == FIDO_ASM) { + int id = -1; + int authIdx = -1; + + parcel->getInt(INT_PROP_ID, &id); + parcel->getInt(INT_PROP_AUTH_IDX, &authIdx); + + parcel->getString(STR_PROP_CALLER_ID, &value); + const std::string& callerId = value; + parcel->getString(STR_PROP_APP_ID, &value); + const std::string& appId = value; + parcel->getString(STR_PROP_KEY_HANDLE, &value); + const std::string& keyHandle = value; + parcel->getString(STR_PROP_KEY_ID, &value); + const std::string& keyId = value; + parcel->getString(STR_PROP_TIME, &value); + + snprintf(query, BUFFLEN, "SELECT * FROM ASMKEYS WHERE "); + bool isAnd = false; + + if(id != -1) { + snprintf(q, BUFFLEN, "id=%d", id); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + if(authIdx != -1) { + if(isAnd == true) { + snprintf(q, BUFFLEN, " AND auth_idx=%d", authIdx); + strncat(query, q, sizeof(query)-strlen(query)-1); + } + else { + snprintf(q, BUFFLEN, "auth_idx=%d", authIdx); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + } + if(callerId != "") { + if(isAnd == true) { + snprintf(q, BUFFLEN, " AND caller_id=\'%s\'", callerId.c_str()); + strncat(query, q, sizeof(query)-strlen(query)-1); + } + else { + snprintf(q, BUFFLEN, "caller_id=\'%s\'", callerId.c_str()); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + } + if(appId != "") { + if(isAnd == true) { + snprintf(q, BUFFLEN, " AND app_id=\'%s\'", appId.c_str()); + strncat(query, q, sizeof(query)-strlen(query)-1); + } + else { + snprintf(q, BUFFLEN, "app_id=\'%s\'", appId.c_str()); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + } + if(keyHandle != "") { + if(isAnd == true) { + snprintf(q, BUFFLEN, " AND key_handle=\'%s\'", keyHandle.c_str()); + strncat(query, q, sizeof(query)-strlen(query)-1); + } + else { + snprintf(q, BUFFLEN, "key_handle=\'%s\'", keyHandle.c_str()); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + } + if(keyId != "") { + if(isAnd == true) { + snprintf(q, BUFFLEN, " AND key_id=\'%s\'", keyId.c_str()); + strncat(query, q, sizeof(query)-strlen(query)-1); + } + else { + snprintf(q, BUFFLEN, "key_id=\'%s\'", keyId.c_str()); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + } + + snprintf(q, BUFFLEN, ";"); + strncat(query, q, sizeof(query)-strlen(query)-1); + } + + else if(dbName == FIDO_AUTH) { + int authIndex = -1; + int mappedIndex = -1; + char *devId = NULL; + char *aaid = NULL; + + + parcel->getInt(INT_PROP_AUTH_ID, &authIndex); + parcel->getInt(INT_PROP_MAPPED_AUTH_ID, &mappedIndex); + parcel->getString(STR_PROP_DEV_ID, &devId); + parcel->getString(STR_PROP_AAID, &aaid); + _INFO("[%d][%d][%s][%s]", authIndex, mappedIndex, devId, aaid); + + snprintf(query, BUFFLEN, "SELECT * FROM AUTHLIST WHERE "); + bool isAnd = false; + + if(authIndex != -1) { + snprintf(q, BUFFLEN, "auth_index=%d", authIndex); + strncat(query, q, sizeof(query) - strlen(query)-1); + isAnd = true; + } + if(mappedIndex != -1) { + if(isAnd == true) { + snprintf(q, BUFFLEN, " AND mapped_index=%d", mappedIndex); + strncat(query, q, sizeof(query) - strlen(query)-1); + } + else { + snprintf(q, BUFFLEN, "mapped_index=%d", mappedIndex); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + } + + if(devId != NULL) { + if(isAnd == true) { + snprintf(q, BUFFLEN, " AND device_id=\'%s\'", devId); + strncat(query, q, sizeof(query) - strlen(query)-1); + } + else { + snprintf(q, BUFFLEN, "device_id=\'%s\'", devId); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + } + + if(aaid != NULL) { + if(isAnd == true) { + snprintf(q, BUFFLEN, " AND aaid=\'%s\'", aaid); + strncat(query, q, sizeof(query) - strlen(query)-1); + } + else { + snprintf(q, BUFFLEN, "aaid=\'%s\'", aaid); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + } + + snprintf(q, BUFFLEN, ";"); + strncat(query, q, sizeof(query) - strlen(query) - 1); + } + + else if(dbName == FIDO_SECRET) { + int uid = -1; + char *aaid = NULL; + char *devId = NULL; + char *secret1 = NULL; + char *secret2 = NULL; + + parcel->getInt(INT_PROP_UID, &uid); + parcel->getString(STR_PROP_AAID, &aaid); + parcel->getString(STR_PROP_DEV_ID, &devId); + parcel->getString(STR_PROP_SECRET1, &secret1); + parcel->getString(STR_PROP_SECRET2, &secret2); + + _INFO("[%d][%s][%s][%s][%s]", uid, aaid, devId, secret1,secret2); + + snprintf(query, BUFFLEN, "SELECT * FROM SECRET WHERE "); + bool isAnd = false; + + if(uid != -1) { + snprintf(q, BUFFLEN, "uid=%d", uid); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + + if(aaid != NULL) { + if(isAnd == true) { + snprintf(q, BUFFLEN, " AND aaid=\'%s\'", aaid); + strncat(query, q, sizeof(query)-strlen(query)-1); + } + else { + snprintf(q, BUFFLEN, "aaid=\'%s\'", aaid); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + } + + if(devId != NULL) { + if(isAnd == true) { + snprintf(q, BUFFLEN, " AND device_id=\'%s\'", devId); + strncat(query, q, sizeof(query)-strlen(query)-1); + } + else { + snprintf(q, BUFFLEN, "device_id=\'%s\'", devId); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + } + + if(secret1 != NULL) { + if(isAnd == true) { + snprintf(q, BUFFLEN, " AND secret_1=\'%s\'", secret1); + strncat(query, q, sizeof(query)-strlen(query)-1); + } + else { + snprintf(q, BUFFLEN, "secret_1=\'%s\'", secret1); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + } + + if(secret2 != NULL) { + if(isAnd == true) { + snprintf(q, BUFFLEN, " AND secret_2=\'%s\'", secret2); + strncat(query, q, sizeof(query)-strlen(query)-1); + } + else { + snprintf(q, BUFFLEN, "secret_2=\'%s\'", secret2); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + } + + snprintf(q, BUFFLEN, ";"); + strncat(query, q, sizeof(query) - strlen(query) - 1); + } + + cbData.dbName = strdup(dbName.c_str()); + cbData.resList = resultList; + + _INFO("AsmStorage::searchData:: query = [%s]", query); + int ret = sqlite3_exec(dbHandle, query, searchItemCb, &cbData, &errMsg); + _INFO("AsmStorage::searchData:: ERROR MSG : [%s]", errMsg); + CATCH_IF_FAIL(ret == SQLITE_OK); + + _INFO("Records found = [%d]", resultList->size()); + closeDBHandle(dbHandle); + + SAFE_DELETE(cbData.dbName); + + return resultList; + +CATCH : + _ERR("No Records found"); + sqlite3_free(errMsg); + closeDBHandle(dbHandle); + + SAFE_DELETE(cbData.dbName); + + return NULL; +} + +int +AsmStorage::deleteData(IStorageParcel *parcel) +{ + int numRecChanged = 0; + char *errMsg = NULL; + char q[BUFFLEN] = {0}; + char *value = NULL; + char query[BUFFLEN] = {0}; + RET_IF_FAIL(parcel != NULL, SQLITE_ERROR); + int ret = 0; + + const std::string& dbName = parcel->getDBName(); + sqlite3* dbHandle = openDBHandle(dbName); + RET_IF_FAIL(dbHandle != NULL, SQLITE_ERROR); + + if(dbName == FIDO_ASM) { + int id = -1; + int authIdx = -1; + + parcel->getInt(INT_PROP_ID, &id); + parcel->getInt(INT_PROP_AUTH_IDX, &authIdx); + + parcel->getString(STR_PROP_CALLER_ID, &value); + const std::string& callerId = value; + parcel->getString(STR_PROP_APP_ID, &value); + const std::string& appId = value; + parcel->getString(STR_PROP_KEY_HANDLE, &value); + const std::string& keyHandle = value; + parcel->getString(STR_PROP_KEY_ID, &value); + const std::string& keyId = value; + parcel->getString(STR_PROP_TIME, &value); + + snprintf(query, BUFFLEN, "DELETE FROM ASMKEYS WHERE "); + bool isAnd = false; + + if(id != -1) { + snprintf(q, BUFFLEN, "id=%d", id); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + if(authIdx != -1) { + if(isAnd == true) { + snprintf(q, BUFFLEN, " AND auth_idx=%d", authIdx); + strncat(query, q, sizeof(query)-strlen(query)-1); + } + else { + snprintf(q, BUFFLEN, "auth_idx=%d", authIdx); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + } + if(callerId != "") { + if(isAnd == true) { + snprintf(q, BUFFLEN, " AND caller_id=\'%s\'", callerId.c_str()); + strncat(query, q, sizeof(query)-strlen(query)-1); + } + else { + snprintf(q, BUFFLEN, "caller_id=\'%s\'", callerId.c_str()); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + } + if(appId != "") { + if(isAnd == true) { + snprintf(q, BUFFLEN, " AND app_id=\'%s\'", appId.c_str()); + strncat(query, q, sizeof(query)-strlen(query)-1); + } + else { + snprintf(q, BUFFLEN, "app_id=\'%s\'", appId.c_str()); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + } + if(keyHandle != "") { + if(isAnd == true) { + snprintf(q, BUFFLEN, " AND key_handle=\'%s\'", keyHandle.c_str()); + strncat(query, q, sizeof(query)-strlen(query)-1); + } + else { + snprintf(q, BUFFLEN, "key_handle=\'%s\'", keyHandle.c_str()); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + } + if(keyId != "") { + if(isAnd == true) { + snprintf(q, BUFFLEN, " AND key_id=\'%s\'", keyId.c_str()); + strncat(query, q, sizeof(query)-strlen(query)-1); + } + else { + snprintf(q, BUFFLEN, "key_id=\'%s\'", keyId.c_str()); + strncat(query, q, sizeof(query)-strlen(query)-1); + isAnd = true; + } + } + + snprintf(q, BUFFLEN, ";"); + strncat(query, q, sizeof(query)-strlen(query)-1); + } + + else if(dbName == FIDO_AUTH) { + _ERR("AUTHLIST does not allow deletion of entries"); + goto CATCH; + } + + ret = sqlite3_exec(dbHandle, query, NULL, 0, &errMsg); + _INFO("AsmStorage::deleteData:: ERROR MSG : [%s]", errMsg); + CATCH_IF_FAIL(ret == SQLITE_OK); + + _INFO("Record(s) successfully deleted"); + numRecChanged = sqlite3_changes(dbHandle); + _INFO("Number of rows deleted=[%d]", numRecChanged); + closeDBHandle(dbHandle); + return SQLITE_OK; + +CATCH: + _ERR("Record not deleted/ Record does not exists"); + sqlite3_free(errMsg); + closeDBHandle(dbHandle); + return SQLITE_ERROR; +} + +int +AsmStorage::deleteAllData(const std::string& dbName) +{ + char *errMsg = NULL; + char query[BUFFLEN] = {0}; + + sqlite3* dbHandle = openDBHandle(dbName); + RET_IF_FAIL(dbHandle != NULL, SQLITE_ERROR); + + if(dbName == FIDO_ASM) { + snprintf(query, BUFFLEN, "DELETE FROM ASMKEYS;"); + } + + else if(dbName == FIDO_AUTH) { + snprintf(query, BUFFLEN, "DELETE FROM AUTHLIST;"); + } + + int ret = sqlite3_exec(dbHandle, query, NULL, 0, &errMsg); + _INFO("AsmStorage::deleteAllData:: ERROR MSG : [%s]", errMsg); + CATCH_IF_FAIL(ret == SQLITE_OK); + + _INFO("All Records successfully deleted from database"); + closeDBHandle(dbHandle); + return SQLITE_OK; + +CATCH : + _ERR("All Records not deleted from database"); + sqlite3_free(errMsg); + closeDBHandle(dbHandle); + return SQLITE_ERROR; +} + +AsmStorage::AsmStorage(void) +{ + /*__asmDb = NULL; + __authDb = NULL; + __secretDb = NULL;*/ +} + +AsmStorage* +AsmStorage::getInstance(void) +{ + if(__this != NULL) { + return __this; + } + + AsmStorage* thisInstance = new AsmStorage(); + if(thisInstance == NULL) { + return NULL; + } + + __this = thisInstance; + + /*int ret = __this->initDb(FIDO_ASM); + if(ret == SQLITE_OK) { + _INFO("Asm database created Successfully / already exists"); + } + + ret = __this->initDb(FIDO_AUTH); + if(ret == SQLITE_OK) { + _INFO("Auth database created Successfully / already exists"); + } + + ret = __this->initDb(FIDO_SECRET); + if(ret == SQLITE_OK) { + _INFO("Pin enroll database created Successfully / already exists"); + }*/ + return __this; +} diff --git a/server/src/ClientListener.cpp b/server/src/ClientListener.cpp new file mode 100644 index 0000000..157907e --- /dev/null +++ b/server/src/ClientListener.cpp @@ -0,0 +1,446 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "ClientListener.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "JsonUtil.h" +#include "AsmOp.h" +#include "AsmOpFactory.h" +#include "AsmHelper.h" +#include "TCUiAdaptor.h" +#include "AcUiAdaptor.h" +#include "AuthUiFactory.h" +#include "RoamingUtil.h" + +//#define ASM_UI_TEST + +#define ASM_DBUS_PATH "/org/tizen/fidoasm" +#define ASM_DBUS_NAME "org.tizen.fidoasm" + +#define _FREEDESKTOP_SERVICE "org.freedesktop.DBus" +#define _FREEDESKTOP_PATH "/org/freedesktop/DBus" +#define _FREEDESKTOP_INTERFACE "org.freedesktop.DBus" + +#define FIDO_CLIENT_SVC_PATH "/usr/bin/fido-service" +#define FIDO_RAGENT_SVC_PATH "/usr/bin/fido-roaming-agent-service" +#define FIDO_BLE_RAGENT_SVC_PATH "/usr/bin/fido-ble-ragent-service" +#define FIDO_BT_RAGENT_SVC_PATH "/usr/bin/fido-bt-ragent-service" + +guint ClientListner::__ownerId = 0; +Fidoasm* ClientListner::__dbusObj = NULL; + +ClientListner* ClientListner::__this = NULL; + +#define RESP_NEG "{\"statusCode\":1}" + +ClientListner::ClientListner(void) +{ +} + +ClientListner::~ClientListner(void) +{ + +} + +ClientListner* +ClientListner::getInstance(void) +{ + if (__this != NULL) + return __this; + + /*TODO: thread-safe singleton*/ + ClientListner *thisTemp = new ClientListner(); + if (thisTemp == NULL) + return NULL; + + __this = thisTemp; + + return __this; +} + +int +ClientListner::readProc(const char *path, char *buf, int size) +{ + int fd = 0; + int ret = 0; + + if (buf == NULL || path == NULL) { + _ERR("path and buffer is mandatory\n"); + return -1; + } + + fd = open(path, O_RDONLY); + if (fd < 0) { + _ERR("fd open error(%d)\n", fd); + return -1; + } + + ret = read(fd, buf, size - 1); + if (ret <= 0) { + _ERR("fd read error(%d)\n", fd); + close(fd); + return -1; + } else + buf[ret] = 0; + + close(fd); + + return ret; +} + +std::string +ClientListner::getCallerId(GDBusMethodInvocation *invocation) +{ + pid_t remote_pid = 0; + GError *error = NULL; + GDBusConnection *connection = NULL; + GVariant *response = NULL; + guint32 upid; + const gchar *sender = NULL; + + sender = g_dbus_method_invocation_get_sender (invocation); + if (!sender) { + _ERR("Failed to get sender"); + return ""; + } + + connection = g_dbus_method_invocation_get_connection(invocation); + if (connection == NULL) { + _ERR("Failed to open connection for the invocation"); + return ""; + } + + error = NULL; + response = g_dbus_connection_call_sync (connection, + _FREEDESKTOP_SERVICE, _FREEDESKTOP_PATH, + _FREEDESKTOP_INTERFACE, "GetConnectionUnixProcessID", + g_variant_new ("(s)", sender), ((const GVariantType *) "(u)"), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); + + + if (response == NULL) { + _ERR("Failed to get caller id [%s]", error->message); + g_error_free (error); + return ""; + } + + g_variant_get (response, "(u)", &upid); + _INFO("Remote msg-bus peer service=%s pid=%u", sender, upid); + remote_pid = (pid_t) upid; + + g_variant_unref (response); + + char *app_id = NULL; + int ret = app_manager_get_app_id(remote_pid, &app_id); + + if (app_id == NULL) { + _ERR("app_manager_get_app_id for %d failed = %d", remote_pid, ret); + + /* Exception case : Daemons will not have app-ids, for them path will be set : /usr/bin/sample-service */ + char buf[128]; + int ret = 0; + + snprintf(buf, sizeof(buf), "/proc/%d/cmdline", upid); + ret = readProc(buf, buf, sizeof(buf)); + if (ret <= 0) { + _ERR("No proc directory (%d)\n", upid); + return ""; + } + + _INFO("Caller=[%s]", buf); + + app_id = strdup(buf); + } + + + std::string appIdStr(app_id, strlen(app_id)); + return appIdStr; +} + +#define ASM_RESP_ACCESS_DENIED "{\"statusCode\":2}" +#define ASM_RESP_DEREG "{\"statusCode\":0}" + +gboolean +ClientListner::onClientRequest(Fidoasm *object, GDBusMethodInvocation *invocation, + const gchar *asmReqJson) +{ + _BEGIN; + + /*TODO: Caller Id check*/ + + AsmRequest *req = NULL; + + std::string callerId = FIDO_CLIENT_SVC_PATH; + + _INFO("FIDO client request"); + req = JsonUtil::parseAsmRequestJson(asmReqJson); + _INFO(""); + if (req == NULL) { + fidoasm_complete_asm_request(__dbusObj, invocation, -1, ASM_RESP_ACCESS_DENIED); + return true; + } + req->setCallerId(callerId); + + AsmOp *operation = AsmOpFactory::createOperation(req); + if (operation == NULL) { + _ERR("AsmOp creation failed"); + fidoasm_complete_asm_request(__dbusObj, invocation, -1, ASM_RESP_ACCESS_DENIED); + return true; + } + + _INFO("Before operation exec "); + char *asmResp = operation->execute(); + /*For Dereg request coming from Client, there should not be any indication about success/failure*/ + if ((req->getRequesttype() == "Deregister")) { + _INFO(""); + fidoasm_complete_asm_request(__dbusObj, invocation, -1, ASM_RESP_DEREG); + return true; + } + if (asmResp == NULL) { + _ERR(""); + fidoasm_complete_asm_request(__dbusObj, invocation, -1, ASM_RESP_ACCESS_DENIED); + return true; + } + + _INFO("After operation exec "); + if (asmResp != NULL) { + _INFO("%s", asmResp); + fidoasm_complete_asm_request(__dbusObj, invocation, 0, asmResp); + } else { + _INFO(""); + fidoasm_complete_asm_request(__dbusObj, invocation, -1, RESP_NEG); + } + _END; + + return true; +} + +gboolean +ClientListner::onAgentRequest(Fidoasm *object, GDBusMethodInvocation *invocation, + const gchar *tlvReqB64) +{ + _BEGIN; + + /*TODO: Caller Id check*/ + + AsmRequest *req = NULL; + + std::string callerId = FIDO_BT_RAGENT_SVC_PATH; + + _INFO("Roaming Agent request"); + if (RoamingUtil::isRASupported() == false) { + _ERR("RA feature not supported"); + + fidoasm_complete_ra_request(__dbusObj, invocation, -1, ASM_RESP_ACCESS_DENIED); + return true; + } + + req = RoamingUtil::createAuthReq(tlvReqB64); + if (req == NULL) { + _ERR(""); + fidoasm_complete_ra_request(__dbusObj, invocation, -1, ASM_RESP_ACCESS_DENIED); + return true; + } + req->setCallerId(callerId); + + + AsmOp *operation = AsmOpFactory::createOperation(req); + if (operation == NULL) { + _ERR("AsmOp creation failed"); + fidoasm_complete_ra_request(__dbusObj, invocation, -1, ASM_RESP_ACCESS_DENIED); + return true; + } + + _INFO("Before operation exec "); + char *asmResp = operation->execute(); + if (asmResp == NULL) { + _ERR(""); + fidoasm_complete_ra_request(__dbusObj, invocation, -1, ASM_RESP_ACCESS_DENIED); + return true; + } + + _INFO("After operation exec "); + if (asmResp != NULL) { + _INFO("%s", asmResp); + fidoasm_complete_ra_request(__dbusObj, invocation, 0, asmResp); + } else { + _INFO(""); + fidoasm_complete_ra_request(__dbusObj, invocation, -1, RESP_NEG); + } + _END; + + return true; +} + +gboolean +ClientListner::onTCUiResponse(Fidoasm *object, GDBusMethodInvocation *invocation, + const gchar *nonce, int result) +{ + /*TODO: Allow only from org.tizen.asmui*/ + TcUiAdaptor::OnTcResponseFromUi(nonce, result); + + return true; +} + +gboolean +ClientListner::onAccountUiResponse(Fidoasm *object, GDBusMethodInvocation *invocation, + const gchar *nonce, int result, const gchar *account) +{ + /*TODO: Allow only from org.tizen.asmui*/ + AcUiAdaptor::OnAccountResponseFromUi(nonce, result, account); + + return true; +} + +gboolean +ClientListner::onAuthUiResponse(Fidoasm *object, GDBusMethodInvocation *invocation, + int uiType, const gchar *nonce, int error, + const gchar *token) +{ + /*TODO: Allow only from org.tizen.asmui*/ + IAuthUiAdaptor *uiAd = AuthUiFactory::getAuthUiAdaptor((auth_ui_type_e)uiType); + RET_IF_FAIL(uiAd != NULL, false); + + if (nonce == NULL) + _INFO("Nonce received from to UI=[NULL]"); + else + _INFO("Nonce received from to UI=[%s]", nonce); + + uiAd->OnAuthResponseFromUi(nonce, token, error); + + return true; +} + +void +ClientListner::onBusAcquired(GDBusConnection *connection, const gchar *name, gpointer user_data) +{ + + _BEGIN; + + GDBusInterfaceSkeleton* interface = NULL; + __dbusObj = fidoasm_skeleton_new(); + if (__dbusObj == NULL) { + return; + } + + interface = G_DBUS_INTERFACE_SKELETON(__dbusObj); + if (!g_dbus_interface_skeleton_export(interface, connection, ASM_DBUS_PATH, NULL)) { + return; + } + + g_signal_connect(__dbusObj, "handle_asm_request", + G_CALLBACK(ClientListner::onClientRequest), NULL); + + g_signal_connect(__dbusObj, "handle_ra_request", + G_CALLBACK(ClientListner::onAgentRequest), NULL); + + g_signal_connect(__dbusObj, "handle_asm_ui_confirm_tc", + G_CALLBACK(ClientListner::onTCUiResponse), NULL); + + g_signal_connect(__dbusObj, "handle_asm_ui_confirm_acc", + G_CALLBACK(ClientListner::onAccountUiResponse), NULL); + + g_signal_connect(__dbusObj, "handle_auth_ui_result", + G_CALLBACK(ClientListner::onAuthUiResponse), NULL); + + _END; + +} + +void +ClientListner::onNameAcquired(GDBusConnection *connection, + const gchar *name, + gpointer user_data) +{ + + +} + +void +ClientListner::onNameLost(GDBusConnection *connection, + const gchar *name, + gpointer user_data) +{ + exit (1); +} + +bool +ClientListner::initDbus(void) +{ + + _BEGIN; + + __ownerId = g_bus_own_name (G_BUS_TYPE_SYSTEM, + ASM_DBUS_NAME, + G_BUS_NAME_OWNER_FLAGS_NONE, + ClientListner::onBusAcquired, + ClientListner::onNameAcquired, + ClientListner::onNameAcquired, + NULL, + NULL); + + + if(__ownerId == 0) { + return false; + } + + _END; + + return true; +} + +void +ClientListner::initialize(void) +{ +#if !GLIB_CHECK_VERSION(2,35,0) + g_type_init(); +#endif + + if (initDbus() == false) { + exit(1); + } +} + +int +ClientListner::start(void) +{ + if (__this == NULL) + return -1; + + _BEGIN; + + GMainLoop *mainloop = NULL; + + mainloop = g_main_loop_new(NULL, FALSE); + + initialize(); + + g_main_loop_run(mainloop); + + _END; + + return 0; +} diff --git a/server/src/asm_main.cpp b/server/src/asm_main.cpp new file mode 100644 index 0000000..72e2481 --- /dev/null +++ b/server/src/asm_main.cpp @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include "ClientListener.h" + +int +main(int argc, char *argv[]) +{ + ClientListner::getInstance()->start(); + return 0; +} diff --git a/server/states/inc/AuthenticateState.h b/server/states/inc/AuthenticateState.h new file mode 100644 index 0000000..f896856 --- /dev/null +++ b/server/states/inc/AuthenticateState.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef AUTHENTICATESTATE_H_ +#define AUTHENTICATESTATE_H_ + +#include "IAsmOpState.h" +#include "AsmRegRequest.h" +#include "AsmAuthRequest.h" +#include "AuthnrTypes.h" + +class AuthenticateState : public IAsmOpState { +public: + AuthenticateState(void); + virtual ~AuthenticateState(void); + + virtual int handle(IAuthStub *stub, AsmRequest *asmReq, const char *str, char **out); +private: + int selectUsernameKeyHandle(AuthenticateReq *signAuthReq, AuthenticateResp *stubResp); + AuthenticateReq* createStubRequestSign(AsmRequest *asmReq, const char *vTok); +}; + + + +#endif /* AUTHENTICATESTATE_H_ */ diff --git a/server/states/inc/DeregState.h b/server/states/inc/DeregState.h new file mode 100644 index 0000000..0d63527 --- /dev/null +++ b/server/states/inc/DeregState.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef DEREGSTATE_H_ +#define DEREGSTATE_H_ + +#include "IAsmOpState.h" +#include "AsmRegRequest.h" +#include "AuthnrTypes.h" + +class DeregState : public IAsmOpState { +public: + DeregState(void); + virtual ~DeregState(void); + + virtual int handle(IAuthStub *authStub, AsmRequest *asmReq, const char *str, char **out); + +private: + int deleteAsmRecord(char *appId, char *keyId); + DeregReq* createStubRequestDereg(AsmRequest *asmReq, bool isBound); +}; + + + +#endif /* DEREGSTATE_H_ */ diff --git a/server/states/inc/EnrollState.h b/server/states/inc/EnrollState.h new file mode 100644 index 0000000..25d5a9e --- /dev/null +++ b/server/states/inc/EnrollState.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef ENROLLSTATE_H_ +#define ENROLLSTATE_H_ + +#include "IAsmOpState.h" +#include "AsmRegRequest.h" + +class EnrollState : public IAsmOpState { +public: + EnrollState(void); + virtual ~EnrollState(void); + + virtual int handle(IAuthStub *stub, AsmRequest *asmReq, const char *str, char **out); + +private: + char *composeEnrollRequest(const char *appId, const char *aaid); +}; + + + +#endif /* ENROLLSTATE_H_ */ diff --git a/server/states/inc/GetRegsState.h b/server/states/inc/GetRegsState.h new file mode 100644 index 0000000..f6747f1 --- /dev/null +++ b/server/states/inc/GetRegsState.h @@ -0,0 +1,16 @@ +#ifndef GETREGSSTATE_H +#define GETREGSSTATE_H + +#include "IAsmOpState.h" +#include "AsmDeregRequest.h" +#include "AuthnrTypes.h" + +class GetRegsState : public IAsmOpState { +public: + GetRegsState(void); + virtual ~GetRegsState(void); + + virtual int handle(IAuthStub *authStub, AsmRequest *asmReq, const char *str, char **out); +}; + +#endif // GETREGSSTATE_H diff --git a/server/states/inc/IAsmOpState.h b/server/states/inc/IAsmOpState.h new file mode 100644 index 0000000..ee47833 --- /dev/null +++ b/server/states/inc/IAsmOpState.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef IASMOPSTATE_H_ +#define IASMOPSTATE_H_ + +#include +#include +#include "AsmRequest.h" + +class IAuthStub; + +class IAsmOpState { +public: + virtual ~IAsmOpState(void){} + + virtual int handle(IAuthStub *stub, AsmRequest *asmReq, const char *str, char **out) = 0; +}; + + + +#endif /* IASMOPSTATE_H_ */ diff --git a/server/states/inc/InitState.h b/server/states/inc/InitState.h new file mode 100644 index 0000000..7c9c5c2 --- /dev/null +++ b/server/states/inc/InitState.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef INITSTATE_H_ +#define INITSTATE_H_ + +#include "IAsmOpState.h" +#include "AsmRegRequest.h" + +class InitState : public IAsmOpState { +public: + InitState(void); + virtual ~InitState(void); + + virtual int handle(IAuthStub *stub, AsmRequest *asmReq, const char *str, char **out); +}; + + +#endif /* INITSTATE_H_ */ diff --git a/server/states/inc/RegisterState.h b/server/states/inc/RegisterState.h new file mode 100644 index 0000000..1d57533 --- /dev/null +++ b/server/states/inc/RegisterState.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef REGISTERSTATE_H_ +#define REGISTERSTATE_H_ + +#include "IAsmOpState.h" +#include "AuthnrTypes.h" + +class AsmRequest; + +class RegisterState : public IAsmOpState { +public: + RegisterState(void); + virtual ~RegisterState(); + + virtual int handle(IAuthStub *stub, AsmRequest *asmReq, const char *str, char **out); + +private: + RegisterReq* createStubRequestRegister(AsmRequest *asmReq, const char *vTok); +}; + + + +#endif /* REGISTERSTATE_H_ */ diff --git a/server/states/inc/TCState.h b/server/states/inc/TCState.h new file mode 100644 index 0000000..1b3b003 --- /dev/null +++ b/server/states/inc/TCState.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef TCSTATE_H +#define TCSTATE_H + +#include "IAsmOpState.h" +#include "AuthnrTypes.h" + +class AsmRequest; + +class TCState : public IAsmOpState { +public: + TCState(void); + virtual ~TCState(); + + virtual int handle(IAuthStub *stub, AsmRequest *asmReq, const char *str, char **out); + +private: + int getInfoForUi(AsmRequest *asmReq, + std::vector **tcList, char **appId); +}; + +#endif // TCSTATE_H diff --git a/server/states/inc/VerifyState.h b/server/states/inc/VerifyState.h new file mode 100644 index 0000000..1f167e9 --- /dev/null +++ b/server/states/inc/VerifyState.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef VERIFYSTATE_H_ +#define VERIFYSTATE_H_ + +#include "IAsmOpState.h" +#include "AsmRegRequest.h" + +class VerifyState : public IAsmOpState { +public: + VerifyState(void); + virtual ~VerifyState(void); + + virtual int handle(IAuthStub *stub, AsmRequest *asmReq, const char *str, char **out); +}; + + + +#endif /* VERIFYSTATE_H_ */ diff --git a/server/states/src/AuthenticateState.cpp b/server/states/src/AuthenticateState.cpp new file mode 100644 index 0000000..1170927 --- /dev/null +++ b/server/states/src/AuthenticateState.cpp @@ -0,0 +1,456 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "AuthenticateState.h" +#include "AsmAuthRequest.h" +#include "AsmAuthResponse.h" +#include "AsmHelper.h" +#include "IAuthStub.h" +#include "JsonUtil.h" +#include "asmcrypto.h" +#include "AsmStorage.h" +#include "AuthManager.h" +#include "AsmResponse.h" +#include "AuthManager.h" +#include +#include +#include "RoamingUtil.h" +#include "TCUiAdaptor.h" +#include "AcUiAdaptor.h" + +AuthenticateState::AuthenticateState(void) +{ + +} + +AuthenticateState::~AuthenticateState() +{ + +} + +int +AuthenticateState::selectUsernameKeyHandle(AuthenticateReq *signAuthReq, AuthenticateResp *stubResp) +{ + AcUiAdaptor *uiAd = AcUiAdaptor::getInstance(); + if (uiAd == NULL) { + _INFO("AcUiAdaptor FAILED"); + return -1; + } + + _INFO("Waiting User Input..."); + + std::vector accList; + std::map ukHmap; + Buffer *keyHandle = NULL; + + GList *uKhListIter = NULL; + uKhListIter = g_list_first(stubResp->uKhList); + + while(uKhListIter != NULL) { + UserNameKeyHandle *uKh = (UserNameKeyHandle*)uKhListIter->data; + //Case:: Two same usernames in the list + bool isFound = false; + std::vector::iterator it = accList.begin(); + + for(; it != accList.end(); it++) { + if(strcmp(uKh->userName, (*it).c_str()) == 0) { + isFound = true; + break; + } + } + + if(isFound == true) { + ukHmap[uKh->userName] = uKh->kh; + } + else { + std::string usrStr(uKh->userName); + accList.push_back(usrStr); + char *userName = uKh->userName; + keyHandle = uKh->kh; + ukHmap.insert(std::pair(userName, keyHandle)); + } + uKhListIter = uKhListIter->next; + } + + /* + * TODO: AsmCrypto::getAppId is crashing inside pkgmgrinfo_pkginfo_get_list + * after callback processing is done, temp blocking + * + std::string appIdPubKey = signAuthReq->appId; + char *appId = AsmCrypto::getAppId(strdup(appIdPubKey.c_str())); + RET_IF_FAIL(appId != NULL, -1); + + _INFO(""); + char *savePtr; + strtok_r(appId, ".", &savePtr); + strtok_r(NULL, ".", &savePtr); + char *appName = savePtr; + RET_IF_FAIL(appName != NULL, -1); + std::string appNameStr(appName); + + int uiErr = -1; + //TODO If accList length is 1, then no need of UI, just select the one based on timestamp. + std::string acc = uiAd->confirmAccount(appNameStr, accList, &uiErr); + if(acc.empty() == true) + return -1; + */ + + std::string acc = accList.at(0); + _INFO("AuthenticateState::handle:: confirmAccount = [%s]", acc.c_str()); + + std::map::iterator it = ukHmap.begin(); + keyHandle = NULL; + for(; it != ukHmap.end(); it++) { + if(strcmp(it->first, acc.c_str()) == 0) + keyHandle = it->second; + } + signAuthReq->khHList = NULL; + signAuthReq->khHList = g_list_append(signAuthReq->khHList, keyHandle->data); + + return 0; +} + +AuthenticateReq* +AuthenticateState::createStubRequestSign(AsmRequest *asmReq, const char *vTok) +{ + _BEGIN; + + RET_IF_FAIL(asmReq != NULL, NULL); + + int authId = asmReq->getAuthIndex(); + + IAuthStub *authStub = AuthManager::getInstance()->getAuthStub(authId); + if (authStub == NULL) { + _ERR("Stub not found for [%d]", authId); + return NULL; + } + + AuthenticateReq *signAuthReq = (AuthenticateReq*)calloc(1, sizeof(AuthenticateReq)); + + AsmAuthRequest *asmSignReq = (AsmAuthRequest*)(asmReq->getArgs()); + + signAuthReq->authIdx = authId; + signAuthReq->appId = _SAFE_DUP(asmSignReq->getAppId().c_str()); + signAuthReq->fch = authStub->hash(asmSignReq->getFCH().c_str()); + signAuthReq->userVToken = _SAFE_DUP(vTok); + + std::vector trList = asmSignReq->getTCs(); + _INFO("TC list size = [%d]", trList.size()); + if (trList.size() > 0) { + std::vector::iterator it = trList.begin(); + Transaction *trans = *it; + signAuthReq->tc = (char*)trans->__content.c_str(); + _INFO("AuthenticateState::createStubRequestSign:: Transaction Content = [%s]", signAuthReq->tc); + } + + bool isBound = false; + + _INFO(""); + GList *authList = authStub->getInfo()->authList; + GList *authListIter = g_list_first(authList); + if (authListIter != NULL) { + AuthenticatorInfo *authInfo = (AuthenticatorInfo*)(authListIter->data); + if (authInfo->__isRoamingAuthenticator == false) { + isBound = true; + } + } + + if (isBound == false) { + + _INFO("To Roaming Authenticator"); + if (asmSignReq->getKeyIds().size() > 0) { + std::vector kIdList = asmSignReq->getKeyIds(); + std::vector::iterator kIdIter = kIdList.begin(); + for (; kIdIter != kIdList.end(); ++kIdIter) { + std::string kIdStr = *kIdIter; + signAuthReq->khHList = g_list_append(signAuthReq->khHList, strdup(kIdStr.c_str())); + } + } + } + else { + + _INFO("To Bound Authenticator"); + std::vector kIdList = asmSignReq->getKeyIds(); + + if(!kIdList.empty()) { + + std::vector::iterator kIdIter = kIdList.begin(); + + for (; kIdIter != kIdList.end(); ++kIdIter) { + + std::string kIdStr = *kIdIter; + _INFO("AuthenticateState::createStubRequestSign:: key id = [%s]", kIdStr.c_str()); + + IStorageParcel *searchParcel = new AsmStorageParcel(); + + searchParcel->setString(STR_PROP_APP_ID, asmSignReq->getAppId()); + searchParcel->setString(STR_PROP_KEY_ID, kIdStr); + std::vector *searchRes = AsmStorage::getInstance()->searchData(searchParcel); + + if (searchRes != NULL) { + + _INFO("AuthenticateState::createStubRequestSign:: Records found in database corresponding to keyId = [%d]", searchRes->size()); + std::vector::iterator searchResIter = searchRes->begin(); + + for (; searchResIter != searchRes->end(); ++searchResIter) { + + _INFO("AuthenticateState::createStubRequestSign:: inside searchRes loop"); + IStorageParcel *parcel = *searchResIter; + char *kh = NULL; + int res = parcel->getString(STR_PROP_KEY_HANDLE, &kh); + + if (res == 0) + { + _INFO("AuthenticateState::createStubRequestSign:: Length of b64 encoded keyHandle : [%d]", strlen(kh)); + signAuthReq->khHList = g_list_append(signAuthReq->khHList, kh); + } + else + _INFO("AuthenticateState::createStubRequestSign:: AsmStorageParcel::getString FAIL"); + } + signAuthReq->khHList = g_list_first(signAuthReq->khHList); + } + } + } + else { + _INFO("AuthenticateState::createStubRequestSign:: KeyId empty"); + IStorageParcel *searchParcel = new AsmStorageParcel(); + + searchParcel->setString(STR_PROP_APP_ID, asmSignReq->getAppId()); + std::vector *searchRes = AsmStorage::getInstance()->searchData(searchParcel); + + if (searchRes != NULL) { + + _INFO("AuthenticateState::createStubRequestSign::Records found in database corresponding to appId = [%d]", searchRes->size()); + std::vector::iterator searchResIter = searchRes->begin(); + + for (; searchResIter != searchRes->end(); ++searchResIter) { + + IStorageParcel *parcel = *searchResIter; + char *kh = NULL; + int res = parcel->getString(STR_PROP_KEY_HANDLE, &kh); + + if (res == 0) + { + _INFO("AuthenticateState::createStubRequestSign:: Length of b64 encoded keyHandle : [%d]", strlen(kh)); + signAuthReq->khHList = g_list_append(signAuthReq->khHList, kh); + } + } + signAuthReq->khHList = g_list_first(signAuthReq->khHList); + } + } + } + + _INFO(""); + /*KHAccessToken = Hash(AppId, FIDO Client ID, PersonaId, AsmToken)*/ + signAuthReq->khATok = authStub->hash(AsmCrypto::getKHAccessToken(asmSignReq->getAppId(), isBound)); + + _END; + return signAuthReq; +} + +int +AuthenticateState::handle(IAuthStub *stub, AsmRequest *asmReq, const char *str, char **out) +{ + _BEGIN; + + RET_IF_FAIL(stub != NULL, -1); + + /*Coming from Roaming Agent Service*/ + /*Only Bound Auth allowed*/ + if(asmReq->getCustomRequest() != NULL) { + AuthenticateReq *signAuthReq = (AuthenticateReq*)asmReq->getCustomRequest(); + RET_IF_FAIL(signAuthReq != NULL, -1); + + if ((signAuthReq->khHList == NULL) || + (g_list_length(signAuthReq->khHList) <= 0)) { + _INFO("No keys specified, selecting all"); + + IStorageParcel *searchParcel = new AsmStorageParcel(); + + std::string appIdStr(signAuthReq->appId); + searchParcel->setString(STR_PROP_APP_ID, appIdStr); + std::vector *searchRes = AsmStorage::getInstance()->searchData(searchParcel); + + if (searchRes != NULL) { + + int recFound = searchRes->size(); + _INFO("Records found in database corresponding to appId = [%d]", recFound); + if (recFound <= 0) { + _ERR("No key registered for this app"); + return -1; + } + + std::vector::iterator searchResIter = searchRes->begin(); + + for (; searchResIter != searchRes->end(); ++searchResIter) { + + IStorageParcel *parcel = *searchResIter; + char *kh = NULL; + int res = parcel->getString(STR_PROP_KEY_HANDLE, &kh); + + if (res == 0) { + _INFO("Length of b64 encoded keyHandle : [%d]", strlen(kh)); + signAuthReq->khHList = g_list_append(signAuthReq->khHList, kh); + } + } + signAuthReq->khHList = g_list_first(signAuthReq->khHList); + } + + } else { + /* RA mode, Client dev ASM sends keyID as keyHandle, so we need to get the + * actual keyHandle from storage (search key = keyID) + */ + + IStorageParcel *searchParcel = new AsmStorageParcel(); + std::string appIdStr(signAuthReq->appId); + searchParcel->setString(STR_PROP_APP_ID, appIdStr); + + GList *storedKhList = NULL; + GList *recvdKhListIter = g_list_first(signAuthReq->khHList); + + while (recvdKhListIter != NULL) { + + char *recvKh = (char*)(recvdKhListIter->data); + unsigned char *recvKhDec = AsmCrypto::ToBase64Url((unsigned char*)recvKh, strlen(recvKh)); + if (recvKhDec != NULL) { + + std::string kIdStr((char*)recvKhDec); + searchParcel->setString(STR_PROP_KEY_ID, kIdStr); + _INFO("search=[%s][%s]", appIdStr.c_str(), kIdStr.c_str()); + + std::vector *searchRes = AsmStorage::getInstance()->searchData(searchParcel); + if (searchRes != NULL) { + + int recFound = searchRes->size(); + _INFO("Records found in database corresponding to appId = [%d]", recFound); + if (recFound <= 0) { + _INFO("No key registered for this app"); + } + + std::vector::iterator searchResIter = searchRes->begin(); + + for (; searchResIter != searchRes->end(); ++searchResIter) { + + IStorageParcel *parcel = *searchResIter; + char *kh = NULL; + int res = parcel->getString(STR_PROP_KEY_HANDLE, &kh); + + if (res == 0) { + _INFO("Length of b64 encoded keyHandle : [%d]", strlen(kh)); + storedKhList = g_list_append(storedKhList, kh); + } + } + } + } + + recvdKhListIter = recvdKhListIter->next; + } + if (storedKhList != NULL) { + storedKhList = g_list_first(storedKhList); + signAuthReq->khHList = storedKhList; + _INFO("Matched khlist count =[%d]", g_list_length(signAuthReq->khHList)); + } else { + signAuthReq->khHList = NULL; + _ERR("NO Matched khlist"); + } + } + + AuthenticateResp *stubResp = stub->processAuthenticate(signAuthReq); + RET_IF_FAIL(stubResp != NULL, -1); + + if(stubResp->uKhList != NULL) { + int ret = selectUsernameKeyHandle(signAuthReq, stubResp); + RET_IF_FAIL(ret == 0, -1); + + stubResp = NULL; + stubResp = stub->processAuthenticate(signAuthReq); + RET_IF_FAIL(stubResp != NULL, -1); + } + + char *tlvRespB64 = RoamingUtil::composeAuthSignResponse(stubResp); + if (tlvRespB64 != NULL) { + *out = tlvRespB64; + } + } + else + { + /*Coming from FIDO Client Service*/ + + AuthenticateReq *signAuthReq = createStubRequestSign(asmReq, str); + RET_IF_FAIL(signAuthReq != NULL, -1); + + if ((signAuthReq->khHList == NULL) || + (g_list_length(signAuthReq->khHList) <= 0)) { + + if (stub->getType() != AUTH_TYPE_ROAMING) { + _ERR("No keys registered"); + + return UAF_CMD_STATUS_ACCESS_DENIED; + } else { + _INFO("For roaming there will not be any previous stored keyids"); + } + } + + AuthenticateResp *stubResp = stub->processAuthenticate(signAuthReq); + RET_IF_FAIL(stubResp != NULL, -1); + + /* ASM UI call when username-keyHandle list is not NULL*/ + if(stub->getType() == AUTH_TYPE_BOUND) { + if(stubResp->uKhList != NULL) { + int ret = selectUsernameKeyHandle(signAuthReq, stubResp); + RET_IF_FAIL(ret == 0, -1); + } + + stubResp = NULL; + stubResp = stub->processAuthenticate(signAuthReq); + RET_IF_FAIL(stubResp != NULL, -1); + } + + AsmResponse *asmSignResp = new AsmResponse(); + AsmAuthResponse *respData = new AsmAuthResponse(); + + asmSignResp->__statusCode = 0; + + + char *assrtScheme = NULL; + Buffer *assrtInfo = stub->encodeSignRespone(stubResp->authAssertion, &assrtScheme); + if (assrtInfo == NULL || assrtInfo->data == NULL) { + _ERR("encodeSignRespone failed"); + return -1; + } + + _INFO("Authenticate Assertion length = [%d]", assrtInfo->len); + _INFO("Authenticate Assertion : [%s]", assrtInfo->data); + + unsigned char *assrtStrData = AsmCrypto::ToBase64Url(assrtInfo->data, assrtInfo->len); + + std::string assrtStr((const char *)assrtStrData, strlen((char*)assrtStrData)); + std::string assrtSchemeStr((const char *)(assrtScheme), strlen(assrtScheme)); + + respData->__assertion = assrtStr; + respData->__assertionScheme = assrtSchemeStr; + asmSignResp->__respData = respData; + + char *signRespJson = JsonUtil::composeAsmAuthenticateResponse(asmSignResp); + RET_IF_FAIL(signRespJson != NULL, -1); + + *out = signRespJson; + } + + _END; + return 0; +} diff --git a/server/states/src/DeregState.cpp b/server/states/src/DeregState.cpp new file mode 100644 index 0000000..fcf5b48 --- /dev/null +++ b/server/states/src/DeregState.cpp @@ -0,0 +1,176 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "DeregState.h" + +#include "AuthManager.h" +#include "AsmHelper.h" +#include "JsonUtil.h" +#include "AsmRegRequest.h" +#include "asmcrypto.h" +#include "AsmStorage.h" +#include "AsmDeregRequest.h" +#include "AsmDeregResponse.h" +#include "AsmResponse.h" +#include "RoamingUtil.h" +#include + +#include + +DeregState::DeregState(void) +{ + +} + +DeregState::~DeregState(void) +{ + +} + +int +DeregState::deleteAsmRecord(char *appId, char *keyId) +{ + IStorageParcel *parcel = new AsmStorageParcel(); + + int setAppId = parcel->setString(STR_PROP_APP_ID, appId); + int setKeyId = parcel->setString(STR_PROP_KEY_ID, keyId); + + if(setAppId == 0 && setKeyId == 0) { + int ret = AsmStorage::getInstance()->deleteData(parcel); + + if(ret == SQLITE_ERROR) { + _INFO("Record Deleted :: FAIL"); + return -1; + } + _INFO("Record Deleted :: SUCCESS"); + } + + return 0; +} + +DeregReq* +DeregState::createStubRequestDereg(AsmRequest *asmReq, bool isBound) +{ + RET_IF_FAIL(asmReq != NULL, NULL); + + int authId = asmReq->getAuthIndex(); + + IAuthStub *authStub = AuthManager::getInstance()->getAuthStub(authId); + if (authStub == NULL) { + _ERR("Stub not found for [%d]", authId); + return NULL; + } + + DeregReq *deRegAuthReq = (DeregReq*)calloc(1, sizeof(DeregReq)); + + AsmDeregRequest *asmDeRegReq = (AsmDeregRequest*)(asmReq->getArgs()); + + deRegAuthReq->authIdx = authId; + deRegAuthReq->appId = _SAFE_DUP(asmDeRegReq->getAppId().c_str()); + deRegAuthReq->keyId = _SAFE_DUP(asmDeRegReq->getKeyId().c_str()); + + /*KHAccessToken = Hash(AppId, FIDO Client ID, PersonaId, AsmToken)*/ + deRegAuthReq->khATok = authStub->hash(AsmCrypto::getKHAccessToken(asmDeRegReq->getAppId(),isBound)); + + return deRegAuthReq; +} + +int +DeregState::handle(IAuthStub *authStub, AsmRequest *asmReq, const char *str, char **out) +{ + _INFO(""); + RET_IF_FAIL(authStub != NULL, -1); + + /*Coming from Roaming Agent Service*/ + /*Only Bound Auth allowed*/ + if(asmReq->getCustomRequest() != NULL) { + + _INFO(""); + DeregReq *deRegAuthReq = (DeregReq*)asmReq->getCustomRequest(); + if (deRegAuthReq->keyId == NULL) { + _ERR("KeyID to deregister can not be NULL"); + return -1; + } + + unsigned char *keyIdEnc = AsmCrypto::ToBase64Url((unsigned char*)deRegAuthReq->keyId, + strlen(deRegAuthReq->keyId)); + if (keyIdEnc == NULL) { + _ERR("KeyID ToBase64Url failed"); + return -1; + } + + _INFO("About to delete=[%s][%s]", deRegAuthReq->appId, (char*)keyIdEnc); + int deleteRecord = deleteAsmRecord(deRegAuthReq->appId, (char*)keyIdEnc); + if(deleteRecord == -1) + return -1; + + DeregResp *stubResp = authStub->processDeregister(deRegAuthReq); + RET_IF_FAIL(stubResp != NULL, -1); + + char *tlvRespB64 = RoamingUtil::composeAuthDeregResponse(stubResp); + if (tlvRespB64 != NULL) { + *out = tlvRespB64; + } + } + else { + + _INFO(""); + /*Coming from FIDO Client Service*/ + + AsmDeregRequest *asmDeRegReq = (AsmDeregRequest*)(asmReq->getArgs()); + + bool isBound = false; + + GList *authList = authStub->getInfo()->authList; + GList *authListIter = g_list_first(authList); + if (authListIter != NULL) { + AuthenticatorInfo *authInfo = (AuthenticatorInfo*)(authListIter->data); + if (authInfo->__isRoamingAuthenticator == false) { + isBound = true; + _INFO(""); + } + } + + if(authStub->getType() == AUTH_TYPE_BOUND) { + if(isBound == true) { + + _INFO(""); + std::string appIdStr = asmDeRegReq->getAppId(); + std::string keyIdStr = asmDeRegReq->getKeyId(); + + char *appId = strdup(appIdStr.c_str()); + char *keyId = strdup(keyIdStr.c_str()); + int deleteRecord = deleteAsmRecord(appId, keyId); + if(deleteRecord == -1) + return -1; + } + } + + _INFO(""); + DeregReq *deRegAuthReq = createStubRequestDereg(asmReq, isBound); + RET_IF_FAIL(deRegAuthReq != NULL, -1); + + _INFO(""); + DeregResp *stubResp = authStub->processDeregister(deRegAuthReq); + RET_IF_FAIL(stubResp != NULL, -1); + + /*ASM need not send any data for dereg response*/ + } + + _INFO(""); + return 0; +} diff --git a/server/states/src/EnrollState.cpp b/server/states/src/EnrollState.cpp new file mode 100644 index 0000000..67cad53 --- /dev/null +++ b/server/states/src/EnrollState.cpp @@ -0,0 +1,210 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "EnrollState.h" + +#include "AsmHelper.h" +#include "IAuthStub.h" +#include "AsmRequest.h" +#include "AsmRegRequest.h" +#include "AsmAuthRequest.h" +#include "AsmStorage.h" +#include "asmcrypto.h" +#include + +#define STRING_OP_TYPE_GET_INFO "GetInfo" +#define STRING_OP_TYPE_REG "Register" +#define STRING_OP_TYPE_AUTH "Authenticate" +#define STRING_OP_TYPE_DEREG "Deregister" +#define STRING_OP_TYPE_OPEN_SETTINGS "OpenSettings" +#define STRING_OP_TYPE_GET_REGS "GetRegistrations" + +#define uid 5001 + +EnrollState::EnrollState(void) +{ + +} + +EnrollState::~EnrollState() +{ + +} + +char * +EnrollState::composeEnrollRequest(const char *appId, const char *aaid) +{ + JsonBuilder *builder = json_builder_new(); + + json_builder_begin_object(builder); + + json_builder_set_member_name(builder, "appId"); + json_builder_add_string_value(builder, appId); + + json_builder_set_member_name(builder, "aaid"); + json_builder_add_string_value(builder, aaid); + + json_builder_end_object(builder); + + JsonNode *root_builder = json_builder_get_root(builder); + + JsonGenerator *gen = json_generator_new(); + json_generator_set_root(gen, root_builder); + + json_node_free(root_builder); + g_object_unref(builder); + + gsize len = 0; + char *json = json_generator_to_data(gen, &len); + if (json != NULL) { + _INFO("compose enroll request success"); + + if (gen != NULL) + g_object_unref(gen); + + _INFO("enroll request = [%s]", json); + return json; + } + + _INFO("compose enroll request failed"); + g_object_unref(gen); + + return NULL; +} + +int +EnrollState::handle(IAuthStub *stub, AsmRequest *asmReq, const char *str, char **out) +{ + _BEGIN; + _INFO("Stub [%p]", stub); + RET_IF_FAIL(stub != NULL, -1); + + if (stub->getType() == AUTH_TYPE_ROAMING) { + _INFO("Local enrollment not required for Roaming Stub"); + return 0; + } + + if (stub->hasAuthUi() == true) { + _INFO("Auth has inbuilt ui, no need of ASM UI"); + return stub->enroll(str); + } + + char *vToken = NULL; + std::string aaid; + std::string appId; + std::string reqType = asmReq->getRequesttype(); + int mappedIndex = asmReq->getAuthIndex(); + + if(strcmp(reqType.c_str(), STRING_OP_TYPE_REG) == 0) { + if (asmReq->getCustomRequest() != NULL) { + _INFO("Custom req reg"); + RegisterReq *regAuthReq = (RegisterReq*)(asmReq->getCustomRequest()); + _INFO("Custom req reg [%p]", regAuthReq); + std::string appIdStr(regAuthReq->appId); + _INFO("Custom req reg [%s]", appIdStr.c_str()); + appId = appIdStr; + mappedIndex = regAuthReq->authIdx; + _INFO("Mapped Index=[%d]", mappedIndex); + } else { + AsmRegRequest *asmRegReq = (AsmRegRequest*)asmReq->getArgs(); + appId = asmRegReq->getAppId(); + } + } else if(strcmp(reqType.c_str(), STRING_OP_TYPE_AUTH) == 0) { + if (asmReq->getCustomRequest() != NULL) { + _INFO("Custom req auth"); + AuthenticateReq *authAuthReq = (AuthenticateReq*)(asmReq->getCustomRequest()); + std::string appIdStr(authAuthReq->appId); + appId = appIdStr; + mappedIndex = authAuthReq->authIdx; + _INFO("Mapped Index=[%d]", mappedIndex); + } else { + AsmAuthRequest *asmAuthReq = (AsmAuthRequest*)asmReq->getArgs(); + appId = asmAuthReq->getAppId(); + } + } else { + return -1; + } + + _INFO("Custom req before getInfo"); + GetAuthInfoResp *getAuthInfoResp = stub->getInfo(); + if (getAuthInfoResp == NULL) { + _ERR("Stub has NULL getinfo"); + return -1; + } + + _INFO("Custom req after getInfo"); + if (getAuthInfoResp->authList != NULL) { + + _INFO("Iter authlist"); + GList *authListIter = g_list_first(getAuthInfoResp->authList); + while(authListIter != NULL) { + /*TODO __authenticatorIndex is RealIndex, asmReq->AuthIndex is MappedIndex*/ + AuthenticatorInfo *authInfo = (AuthenticatorInfo*)(authListIter->data); + _INFO("[%d] vs [%d]", authInfo->__authenticatorIndex, mappedIndex); + if(authInfo->__authenticatorIndex == mappedIndex) { + aaid = authInfo->__aaid; + break; + } + authListIter = authListIter->next; + } + } + + RET_IF_FAIL(aaid.empty() == false, -1); + _INFO("EnrollState::handle:: appId = [%s]", appId.c_str()); + _INFO("EnrollState::handle:: aaid = [%s]", aaid.c_str()); + + IStorageParcel *parcel = new SecretStorageParcel(); + int res = parcel->setString(STR_PROP_AAID, aaid); + if(res != 0) + return -1; + res = parcel->setString(STR_PROP_DEV_ID, AsmCrypto::getDeviceId()); + if(res != 0) + return -1; + res = parcel->setInt(INT_PROP_UID, uid); + if(res != 0) + return -1; + + std::vector *resultList = AsmStorage::getInstance()->searchData(parcel); + if((resultList == NULL) || resultList->size() == 0) { + _INFO("EnrollState::handle:: User not enrolled"); + _INFO("EnrollState::handle:: Enrolling User..."); + + char *enrollJson = composeEnrollRequest(appId.c_str(), aaid.c_str()); + RET_IF_FAIL(enrollJson != NULL, -1); + + _INFO("enroll json composed success"); + return stub->enroll(enrollJson); + } + else { + _INFO("EnrollState::handle:: User already enrolled"); + if(resultList->size() > 1) { + _INFO("EnrollState::handle:: More than one records obtained from Secret Database"); + return -1; + } + std::vector::iterator it = resultList->begin(); + IStorageParcel *parcel = (*it); + parcel->getString(STR_PROP_SECRET1, &vToken); + + RET_IF_FAIL(vToken != NULL, -1); + + *out = vToken; + return 0; + } + + return -1; +} + diff --git a/server/states/src/GetRegsState.cpp b/server/states/src/GetRegsState.cpp new file mode 100644 index 0000000..27027de --- /dev/null +++ b/server/states/src/GetRegsState.cpp @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "GetRegsState.h" +#include "AsmHelper.h" +#include "AsmStorage.h" +#include "AsmGetRegsRequest.h" +#include "AsmGetRegsResponse.h" +#include "JsonUtil.h" +#include "AuthManager.h" +#include "AsmResponse.h" +#include +#include + +#include + +GetRegsState::GetRegsState(void) +{ + +} + +GetRegsState::~GetRegsState(void) +{ + +} + + +int +GetRegsState::handle(IAuthStub *authStub, AsmRequest *asmReq, const char *str, char **out) +{ + _BEGIN; + RET_IF_FAIL(authStub != NULL, -1); + + bool isBound = false; + + GList *authList = authStub->getInfo()->authList; + GList *authListIter = g_list_first(authList); + if (authListIter != NULL) { + AuthenticatorInfo *authInfo = (AuthenticatorInfo*)(authListIter->data); + if (authInfo->__isRoamingAuthenticator == false) { + isBound = true; + } + } + if (isBound == false) { + /*TODO: Propietary Auth Commands to get reg data*/ + return -1; + } + + std::map > regMap; + + + AsmResponse *asmGetRegResp = new AsmResponse(); + AsmGetRegsResponse *respData = new AsmGetRegsResponse(); + + IStorageParcel *searchParcel = new AsmStorageParcel(); + + searchParcel->setInt(INT_PROP_AUTH_IDX, asmReq->getAuthIndex()); + + std::vector* searchRes = AsmStorage::getInstance()->searchData(searchParcel); + RET_IF_FAIL(searchRes != NULL, -1); + + std::vector::iterator searchResIter = searchRes->begin(); + for (; searchResIter != searchRes->end(); ++searchResIter) { + IStorageParcel *parcel = *searchResIter; + + char *appId = NULL; + char *kId = NULL; + int res = parcel->getString(STR_PROP_APP_ID, &appId); + int res1 = parcel->getString(STR_PROP_KEY_ID, &kId); + + if ((res == 0) && + (res1 == 0)) { + + std::string appIdStr((const char *)appId, strlen(appId)); + std::string kIdStr((const char *)kId, strlen(kId)); + + std::vector keyIdList; + std::map >::iterator it = regMap.find(appIdStr); + if (it != regMap.end()) { + /*append to key id list*/ + keyIdList = it->second; + keyIdList.push_back(kIdStr); + it->second = keyIdList; + } + else { + keyIdList.push_back(kIdStr); + regMap.insert(std::pair >(appIdStr, keyIdList)); + } + } + } + + + std::map >::iterator it = regMap.begin(); + for (; it != regMap.end(); ++it) { + AppRegistration appRegdata; + appRegdata.__appId = it->first; + appRegdata.__keyIdList = it->second; + + respData->__appRegList.push_back(appRegdata); + } + + asmGetRegResp->__statusCode = UAF_ASM_STATUS_OK; + asmGetRegResp->__respData = respData; + + char *asmResp = JsonUtil::composeAsmGetRegsResponse(asmGetRegResp); + RET_IF_FAIL(asmResp != NULL, -1); + + *out = asmResp; + + _END; + return 0; +} diff --git a/server/states/src/InitState.cpp b/server/states/src/InitState.cpp new file mode 100644 index 0000000..c537abb --- /dev/null +++ b/server/states/src/InitState.cpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "InitState.h" + +#include "AsmHelper.h" +#include "IAuthStub.h" +#include + +InitState::InitState(void) +{ + _INFO(""); +} + +InitState::~InitState(void) +{ + _INFO(""); +} + +int +InitState::handle(IAuthStub *stub, AsmRequest *asmReq, const char *str, char **out) +{ + RET_IF_FAIL(stub != NULL, -1); + + return 0;//stub->connect(); +} diff --git a/server/states/src/RegisterState.cpp b/server/states/src/RegisterState.cpp new file mode 100644 index 0000000..1eff7d0 --- /dev/null +++ b/server/states/src/RegisterState.cpp @@ -0,0 +1,234 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "RegisterState.h" + +#include "AsmHelper.h" +#include "IAuthStub.h" +#include "JsonUtil.h" +#include "AuthManager.h" +#include "AsmRegRequest.h" +#include "asmcrypto.h" +#include "AsmStorage.h" +#include "AsmResponse.h" +#include "AsmRegResponse.h" +#include "AsmRegResponse.h" +#include "RoamingUtil.h" +#include "AuthIndexHanlder.h" + +#include + +RegisterState::RegisterState(void) +{ + +} + +RegisterState::~RegisterState() +{ + +} + +RegisterReq* +RegisterState::createStubRequestRegister(AsmRequest *asmReq, const char *vTok) +{ + RET_IF_FAIL(asmReq != NULL, NULL); + + int mappedIndex = asmReq->getAuthIndex(); + int authIndex = mappedIndex;//AuthIndexHandler::getInstance()->getAuthIndex(mappedIndex); + + IAuthStub *authStub = AuthManager::getInstance()->getAuthStub(authIndex); + if (authStub == NULL) { + _ERR("Stub not found for [%d]", authIndex); + return NULL; + } + + RegisterReq *regAuthReq = (RegisterReq*)calloc(1, sizeof(RegisterReq)); + + AsmRegRequest *asmRegReq = static_cast(asmReq->getArgs()); + + regAuthReq->authIdx = authIndex; + regAuthReq->appId = _SAFE_DUP(asmRegReq->getAppId().c_str()); + regAuthReq->attType = asmRegReq->getAttestationType(); + regAuthReq->fch = authStub->hash(asmRegReq->getFinalChallenge().c_str()); + regAuthReq->userName = _SAFE_DUP(asmRegReq->getUserName().c_str()); + regAuthReq->userVToken = _SAFE_DUP(vTok); + + bool isBound = false; + + GList *authList = authStub->getInfo()->authList; + GList *authListIter = g_list_first(authList); + if (authListIter != NULL) { + AuthenticatorInfo *authInfo = (AuthenticatorInfo*)(authListIter->data); + if (authInfo->__isRoamingAuthenticator == false) { + isBound = true; + } + } + /*KHAccessToken = Hash(AppId, FIDO Client ID, PersonaId, AsmToken)*/ + regAuthReq->khAccessToken = authStub->hash(AsmCrypto::getKHAccessToken(asmRegReq->getAppId() + , isBound)); + + return regAuthReq; +} + +int +RegisterState::handle(IAuthStub *stub, AsmRequest *asmReq, const char *str, char **out) +{ + RET_IF_FAIL(stub != NULL, -1); + + _INFO("Stub = [%p]", stub); + + /*Coming from Roaming Agent Service*/ + /*Only Bound Auth allowed*/ + if (asmReq->getCustomRequest() != NULL) { + + /*Since this is TLV request, so this is expected to have proper AuthIndex*/ + RegisterReq *regAuthReq = (RegisterReq*)(asmReq->getCustomRequest()); + RegisterResp *stubResp = stub->processRegister(regAuthReq); + RET_IF_FAIL(stubResp != NULL, -1); + + GList *authList = stub->getInfo()->authList; + GList *authListIter = g_list_first(authList); + if (authListIter != NULL) { + AuthenticatorInfo *authInfo = (AuthenticatorInfo*)(authListIter->data); + + IStorageParcel *regParcel = new AsmStorageParcel(); + regParcel->setInt(INT_PROP_AUTH_IDX, authInfo->__authenticatorIndex); + + std::string appIdStr((const char *)(regAuthReq->appId), strlen(regAuthReq->appId)); + unsigned char *keyHandleStr = AsmCrypto::ToBase64Url((unsigned char*)(stubResp->kh->data), stubResp->kh->len); + std::string khStr((const char *)(keyHandleStr), strlen((char*)keyHandleStr)); + + regParcel->setString(STR_PROP_CALLER_ID, asmReq->getCallerId()); + regParcel->setString(STR_PROP_APP_ID, appIdStr); + regParcel->setString(STR_PROP_KEY_HANDLE, khStr); + + unsigned char *kIdEnc = AsmCrypto::ToBase64Url(stubResp->regAssertion->krd->keyId->data, + stubResp->regAssertion->krd->keyId->len); + if (kIdEnc == NULL) { + _ERR("ToBase64Url failed"); + return -1; + } + + + std::string kIdStr((const char *)(kIdEnc), + strlen((char *)kIdEnc)); + + regParcel->setString(STR_PROP_KEY_ID, kIdStr); + + + AsmStorage::getInstance()->insertData(regParcel); + + /*TODO: KeyHandle should not be returned for roaming*/ + /*stubResp->kh = NULL; + _INFO("Removing key handle intentinally for roaming response");*/ + char *tlvRespB64 = RoamingUtil::composeAuthRegisterResponse(stubResp); + if (tlvRespB64 != NULL) { + *out = tlvRespB64; + } + } + + } else { + /*Coming from FIDO Client Service*/ + + /*AuthIndex mapping is required*/ + RegisterReq *regAuthReq = createStubRequestRegister(asmReq, str); + RET_IF_FAIL(regAuthReq != NULL, -1); + _INFO("[%p]", regAuthReq); + /*_INFO("Before getAuthIndex"); + regAuthReq->authIdx = AuthIndexHandler::getInstance()->getAuthIndex(regAuthReq->authIdx); + + _INFO("After getAuthIndex");*/ + _INFO("[%p]", stub); + RegisterResp *stubResp = stub->processRegister(regAuthReq); + RET_IF_FAIL(stubResp != NULL, -1); + _INFO(""); + + if (stub->getType() == AUTH_TYPE_BOUND) { + _INFO(""); + /*Bound Authenticators / Authenticators provided as plugin / Non RA*/ + GList *authList = stub->getInfo()->authList; + GList *authListIter = g_list_first(authList); + if (authListIter != NULL) { + _INFO(""); + AuthenticatorInfo *authInfo = (AuthenticatorInfo*)(authListIter->data); + if (authInfo->__isRoamingAuthenticator == false) { + + IStorageParcel *regParcel = new AsmStorageParcel(); + regParcel->setInt(INT_PROP_AUTH_IDX, authInfo->__authenticatorIndex); + + std::string appIdStr((const char *)(regAuthReq->appId), strlen(regAuthReq->appId)); + unsigned char *keyHandleStr = AsmCrypto::ToBase64Url((unsigned char*)(stubResp->kh->data), stubResp->kh->len); + std::string khStr((const char *)(keyHandleStr), strlen((char*)keyHandleStr)); + + + regParcel->setString(STR_PROP_CALLER_ID, asmReq->getCallerId()); + regParcel->setString(STR_PROP_APP_ID, appIdStr); + regParcel->setString(STR_PROP_KEY_HANDLE, khStr); + + unsigned char *kIdEnc = AsmCrypto::ToBase64Url(stubResp->regAssertion->krd->keyId->data, + stubResp->regAssertion->krd->keyId->len); + if (kIdEnc == NULL) { + _ERR("ToBase64Url failed"); + return -1; + } + + std::string kIdStr((const char *)(kIdEnc), + strlen((char *)kIdEnc)); + + + regParcel->setString(STR_PROP_KEY_ID, kIdStr); + + AsmStorage::getInstance()->insertData(regParcel); + + + _INFO(""); + } + } + } + + _INFO(""); + AsmResponse *asmRegResp = new AsmResponse(); + AsmRegResponse *respData = new AsmRegResponse(); + + asmRegResp->__statusCode = 0; + + char *assrtScheme = NULL; + _INFO(""); + Buffer *regAssrt = stub->encodeRegisterRespone(stubResp->regAssertion, &assrtScheme); + _INFO(""); + RET_IF_FAIL(regAssrt != NULL, -1); + + unsigned char *assrtStrData = AsmCrypto::ToBase64Url(regAssrt->data, regAssrt->len); + RET_IF_FAIL(assrtStrData != NULL, -1); + + std::string assrtStr((const char *)assrtStrData, strlen((char*)assrtStrData)); + std::string assrtSchemeStr((const char *)(assrtScheme), strlen(assrtScheme)); + respData->__assertion = assrtStr; + respData->__assertionScheme = assrtSchemeStr; + asmRegResp->__respData = respData; + + _INFO(""); + char *regRespJson = JsonUtil::composeAsmRegisterResponse(asmRegResp); + RET_IF_FAIL(regRespJson != NULL, -1); + + _INFO(""); + *out = regRespJson; + } + + _INFO(""); + return 0; +} diff --git a/server/states/src/TCState.cpp b/server/states/src/TCState.cpp new file mode 100644 index 0000000..830694b --- /dev/null +++ b/server/states/src/TCState.cpp @@ -0,0 +1,171 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "TCState.h" + +#include "AsmHelper.h" +#include "IAuthStub.h" +#include "stdlib.h" +#include +#include "string.h" +#include "asmcrypto.h" +#include "TCUiAdaptor.h" +#include "AsmAuthRequest.h" +#include "AuthnrTypes.h" + +TCState::TCState(void) +{ + +} + +TCState::~TCState() +{ + +} + +#define ASM_UI_SUPPORTED_TYPE "text/plain" + +int +TCState::getInfoForUi(AsmRequest *asmReq, std::vector **tcList, + char **appId) +{ + if (asmReq == NULL) + return -1; + + if (asmReq->getCustomRequest() == NULL) { + AsmAuthRequest *asmAuthReq = (AsmAuthRequest*)(asmReq->getArgs()); + RET_IF_FAIL(asmAuthReq != NULL, -1); + + /*TC list null is not error, it means no TC is required*/ + std::vector tcFullList = asmAuthReq->getTCs(); + RET_IF_FAIL(tcFullList.size() > 0, 0); + + std::string appIdPubKey = asmAuthReq->getAppId(); + char *appIdReal = AsmCrypto::getAppId(strdup(appIdPubKey.c_str())); + RET_IF_FAIL(appIdReal != NULL, -1); + + std::vector *tcListLoc = new std::vector(); + std::vector::iterator tcIter = tcFullList.begin(); + for (; tcIter != tcFullList.end(); ++tcIter) { + Transaction *tc = *tcIter; + + if ((tc != NULL) && (tc->__content.empty() == false)) { + std::string contentStr(tc->__content); + tcListLoc->push_back(contentStr); + } + } + *tcList = tcListLoc; + + *appId = appIdReal; + return 0; + + } + + if (asmReq->getCustomRequest() != NULL) { + + AuthenticateReq *authAuthReq = (AuthenticateReq*)(asmReq->getCustomRequest()); + RET_IF_FAIL(authAuthReq != NULL, -1); + + /*TC list null is not error, it means no TC is required*/ + if (authAuthReq->tc == NULL) { + return 0; + } + + char *appIdReal = (char*)calloc(128, sizeof(char)); + snprintf(appIdReal, 127, "%s", "Remote Device"); + /*TODO For requests coming from remote device, we can not use pkgmgr to + * find out App-Id, instead Client Device's ASM must send it explicitly + */ + /*AsmCrypto::getAppId(strdup(authAuthReq->appId));*/ + /*RET_IF_FAIL(appIdReal != NULL, -1);*/ + + std::vector *tcListLoc = new std::vector(); + if (authAuthReq->tc != NULL) { + std::string contentStr(authAuthReq->tc); + tcListLoc->push_back(contentStr); + } + *tcList = tcListLoc; + + *appId = appIdReal; + return 0; + } + + return -1; +} + +int +TCState::handle(IAuthStub *stub, AsmRequest *asmReq, const char *str, char **out) +{ + _BEGIN; + RET_IF_FAIL(stub != NULL, -1); + + if (stub->getType() == AUTH_TYPE_ROAMING) { + _INFO("Local TC not required for Roaming Stub"); + return 0; + } + + /*TODO: TC UI is disabled for Solis until integrated with fido-syspopup*/ + _INFO(""); + return 0; + + + /*TODO: Add provision so that Authenticators can use their own UI if required*/ + + TcUiAdaptor *uiAd = TcUiAdaptor::getInstance(); + RET_IF_FAIL(uiAd != NULL, -1); + + std::vector *tcList = NULL; + char *appId = NULL; + + int ret = getInfoForUi(asmReq, &tcList, &appId); + _INFO("[%d]", ret); + + if ((tcList == NULL) || (appId == NULL)) { + if (ret == 0) { + _INFO("No TC UI required"); + return 0; + } + return -1; + } + + char *savePtr; + strtok_r(appId, ".", &savePtr); + strtok_r(NULL, ".", &savePtr); + char *appName = savePtr; + RET_IF_FAIL(appName != NULL, -1); + std::string appNameStr(appName); + + std::vector::iterator it = tcList->begin(); + for (; it < tcList->end(); it++) { + std::string tcStr = *it; + + /*Multiple transactions of same ASM_UI_SUPPORTED_TYPE not supported*/ + /*TODO Select tc based on the current display characterstics*/ + /*if (strcmp(tc->__contentType.c_str(), ASM_UI_SUPPORTED_TYPE) == 0) {*/ + _INFO("Found matched TC"); + /*Base64 url decode tc->__content*/ + unsigned char *trans = AsmCrypto::FromBase64Url((unsigned char*)tcStr.c_str(), + tcStr.length()); + std::string transStr((char*)trans); + _END; + return uiAd->confirmTransaction(transStr, appNameStr); +/* }*/ + } + + _ERR("No matching UI to display TC found"); + return -1; +} diff --git a/server/states/src/VerifyState.cpp b/server/states/src/VerifyState.cpp new file mode 100644 index 0000000..b69289f --- /dev/null +++ b/server/states/src/VerifyState.cpp @@ -0,0 +1,255 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "VerifyState.h" + +#include "AsmHelper.h" +#include "IAuthStub.h" +#include +#include +#include +#include "AsmRequest.h" +#include "AsmRegRequest.h" +#include "AsmAuthRequest.h" +#include "AsmStorage.h" +#include "asmcrypto.h" + +#define STRING_OP_TYPE_GET_INFO "GetInfo" +#define STRING_OP_TYPE_REG "Register" +#define STRING_OP_TYPE_AUTH "Authenticate" +#define STRING_OP_TYPE_DEREG "Deregister" +#define STRING_OP_TYPE_OPEN_SETTINGS "OpenSettings" +#define STRING_OP_TYPE_GET_REGS "GetRegistrations" + +/*TODO get Uid of owner*/ +#define uid 5001 + +VerifyState::VerifyState(void) +{ + +} + +VerifyState::~VerifyState() +{ + +} + +int +VerifyState::handle(IAuthStub *stub, AsmRequest *asmReq, const char *str, char **out) +{ + _BEGIN; + RET_IF_FAIL(stub != NULL, -1); + RET_IF_FAIL(asmReq != NULL, -1); + + if (stub->getType() == AUTH_TYPE_ROAMING) { + _INFO("Local verification not required for Roaming Stub"); + return 0; + } + + if (stub->hasAuthUi() == true) { + _INFO("Auth has inbuilt ui, no need of ASM UI"); + + std::string reqType = asmReq->getRequesttype(); + char *cmd = NULL; + char *fch = NULL; + + if (asmReq->getCustomRequest() == NULL) { + if(strcmp(reqType.c_str(), STRING_OP_TYPE_REG) == 0) { + AsmRegRequest *asmRegReq = (AsmRegRequest*)asmReq->getArgs(); + if (asmRegReq == NULL) { + _ERR(""); + return -1; + } + + if (asmRegReq->getFinalChallenge().empty() == true) { + _ERR(""); + return -1; + } + + /*TODO B64 encode?*/ + fch = _SAFE_DUP(asmRegReq->getFinalChallenge().c_str()); + cmd = (char*)calloc(128, sizeof(char)); + snprintf(cmd, 128 - 1, "%s", "registration"); + + + } else if(strcmp(reqType.c_str(), STRING_OP_TYPE_AUTH) == 0) { + + AsmAuthRequest *asmAuthReq = (AsmAuthRequest*)asmReq->getArgs(); + if (asmAuthReq == NULL) { + _ERR(""); + return -1; + } + + if (asmAuthReq->getFCH().empty() == true) { + _ERR(""); + return -1; + } + + /*TODO B64 encode?*/ + fch = _SAFE_DUP(asmAuthReq->getFCH().c_str()); + cmd = (char*)calloc(128, sizeof(char)); + snprintf(cmd, 128 - 1, "%s", "authentication"); + } + + + } else { + _INFO(""); + if(strcmp(reqType.c_str(), STRING_OP_TYPE_REG) == 0) { + RegisterReq *regAuthReq = (RegisterReq*)(asmReq->getCustomRequest()); + if (regAuthReq == NULL) { + _ERR(""); + return -1; + } + + if ((regAuthReq->fch == NULL) || (regAuthReq->fch->data == NULL)) { + _ERR(""); + return -1; + } + + unsigned char *fcE = AsmCrypto::ToBase64Url(regAuthReq->fch->data, regAuthReq->fch->len); + fch = (char*)fcE; + + cmd = (char*)calloc(128, sizeof(char)); + snprintf(cmd, 128 - 1, "%s", "registration"); + + } else if(strcmp(reqType.c_str(), STRING_OP_TYPE_AUTH) == 0) { + + AuthenticateReq *signAuthReq = (AuthenticateReq*)(asmReq->getCustomRequest()); + if (signAuthReq == NULL) { + _ERR(""); + return -1; + } + + if ((signAuthReq->fch == NULL) || (signAuthReq->fch->data == NULL)) { + _ERR(""); + return -1; + } + + unsigned char *fcE = AsmCrypto::ToBase64Url(signAuthReq->fch->data, signAuthReq->fch->len); + fch = (char*)fcE; + + cmd = (char*)calloc(128, sizeof(char)); + snprintf(cmd, 128 - 1, "%s", "authentication"); + } + + } + _INFO(""); + return stub->verify(cmd, fch, out); + } + + if (stub->isUserVerificationNeeded() == false) { + _INFO("User verification not needed"); + return 0; + } + + /*TODO: Verif token searching on DB must be done via Auth plugin*/ + + char *vToken = NULL; + std::string aaid; + std::string appId; + std::string reqType = asmReq->getRequesttype(); + + int mappedIndex = asmReq->getAuthIndex(); + + if(strcmp(reqType.c_str(), STRING_OP_TYPE_REG) == 0) { + if (asmReq->getCustomRequest() != NULL) { + _INFO("Custom req reg"); + RegisterReq *regAuthReq = (RegisterReq*)(asmReq->getCustomRequest()); + _INFO("Custom req reg [%p]", regAuthReq); + std::string appIdStr(regAuthReq->appId); + _INFO("Custom req reg [%s]", appIdStr.c_str()); + appId = appIdStr; + mappedIndex = regAuthReq->authIdx; + _INFO("Mapped Index=[%d]", mappedIndex); + } else { + AsmRegRequest *asmRegReq = (AsmRegRequest*)asmReq->getArgs(); + appId = asmRegReq->getAppId(); + } + } else if(strcmp(reqType.c_str(), STRING_OP_TYPE_AUTH) == 0) { + _INFO("Request Type is Authenticate"); + if (asmReq->getCustomRequest() != NULL) { + _INFO("Custom auth reg"); + AuthenticateReq *authAuthReq = (AuthenticateReq*)(asmReq->getCustomRequest()); + _INFO("Custom req auth [%p]", authAuthReq); + std::string appIdStr(authAuthReq->appId); + _INFO("Custom req auth [%s]", appIdStr.c_str()); + appId = appIdStr; + mappedIndex = authAuthReq->authIdx; + _INFO("Mapped Index=[%d]", mappedIndex); + } else { + AsmAuthRequest *asmAuthReq = (AsmAuthRequest*)asmReq->getArgs(); + appId = asmAuthReq->getAppId(); + } + + GetAuthInfoResp *getAuthInfoResp = stub->getInfo(); + + if (getAuthInfoResp->authList != NULL) { + + GList *authListIter = g_list_first(getAuthInfoResp->authList); + while(authListIter != NULL) { + AuthenticatorInfo *authInfo = (AuthenticatorInfo*)(authListIter->data); + if(authInfo->__authenticatorIndex == mappedIndex) { + aaid = authInfo->__aaid; + break; + } + authListIter = authListIter->next; + } + } + + RET_IF_FAIL(aaid.empty() == false, -1); + _INFO("VerifyState::handle:: appId = [%s]", appId.c_str()); + _INFO("VerifyState::handle:: aaid = [%s]", aaid.c_str()); + + /*TODO: Verif token searching on DB must be done via Auth plugin*/ + IStorageParcel *parcel = new SecretStorageParcel(); + int res = parcel->setString(STR_PROP_AAID, aaid); + if(res != 0) + return -1; + res = parcel->setString(STR_PROP_DEV_ID, AsmCrypto::getDeviceId()); + if(res != 0) + return -1; + res = parcel->setInt(INT_PROP_UID, uid); + if(res != 0) + return -1; + + std::vector *resultList = AsmStorage::getInstance()->searchData(parcel); + if(resultList->size() == 0) { + _ERR("VerifyState::handle:: User not registerd"); + return -1; + } + else { + _INFO("VerifyState::handle:: User is registerd"); + if(resultList->size() > 1) { + _INFO("VerifyState::handle:: More than one records obtained from Secret Database"); + return -1; + } + std::vector::iterator it = resultList->begin(); + IStorageParcel *parcel = (*it); + parcel->getString(STR_PROP_SECRET1, &vToken); + + RET_IF_FAIL(vToken != NULL, -1); + + *out = vToken; + } + } + else { + return -1; + } + + _END; + return stub->verify(appId.c_str(), NULL, out); +} diff --git a/silent_auth/CMakeLists.txt b/silent_auth/CMakeLists.txt new file mode 100644 index 0000000..4021531 --- /dev/null +++ b/silent_auth/CMakeLists.txt @@ -0,0 +1,56 @@ + +IF(NOT DEFINED SILENT_PACKAGE_NAME) + SET(SILENT_PACKAGE_NAME "fido_silent_auth") +ENDIF(NOT DEFINED SILENT_PACKAGE_NAME) + +FILE( GLOB SILENT_AUTH_SRCS + silent_auth_entry.cpp + ../common/uafv1tlvutil/src/*.cpp + ../common/cryptoutil/src/*.cpp + ##../common/uiutil/src/*.cpp +) + +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/cryptoutil/inc/) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/datatypes/auth/) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/uafv1tlvutil/inc/) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/uiutil/inc/) +##INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/jsonutil/inc/) + +INCLUDE(FindPkgConfig) +pkg_check_modules(SILENT_AUTH_PKGS REQUIRED + dlog + glib-2.0 + capi-base-common + pkgmgr-info + openssl + json-glib-1.0 + capi-network-connection + aul + libtzplatform-config +) + +FOREACH(flag ${SILENT_AUTH_PKGS_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -Wall -Werror -Wno-unused-result") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -Wno-unused-result") +SET(CMAKE_LDFLAGS "-Wl,-zdefs") + +ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") +ADD_DEFINITIONS("-DFACTORYFS=\"$ENV{FACTORYFS}\"") +ADD_DEFINITIONS("-DSLP_DEBUG") + +ADD_LIBRARY(${SILENT_PACKAGE_NAME} SHARED ${SILENT_AUTH_SRCS}) + +SET_TARGET_PROPERTIES(${SILENT_PACKAGE_NAME} PROPERTIES SOVERSION 0) +SET_TARGET_PROPERTIES(${SILENT_PACKAGE_NAME} PROPERTIES VERSION 1) + +TARGET_LINK_LIBRARIES(${SILENT_PACKAGE_NAME} ${SILENT_AUTH_PKGS_LDFLAGS}) + +INSTALL(FILES ${CMAKE_SOURCE_DIR}/fido_tizen_auth.der DESTINATION /opt/usr/data/silent_auth/) +INSTALL(FILES ${CMAKE_SOURCE_DIR}/fido_tizen_auth.key DESTINATION /opt/usr/data/silent_auth/) + +INSTALL(TARGETS ${SILENT_PACKAGE_NAME} DESTINATION ${LIBDIR}/fido/asm/auth) diff --git a/silent_auth/silent_auth_entry.cpp b/silent_auth/silent_auth_entry.cpp new file mode 100644 index 0000000..4235647 --- /dev/null +++ b/silent_auth/silent_auth_entry.cpp @@ -0,0 +1,1147 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include +#include +#include +#include +#include +#include "silent_auth_entry.h" + +#include "GetInfoReqTlvEncoder.h" +#include "GetInfoRespTlvEncoder.h" +#include "RegReqTlvEncoder.h" +#include "RegRespTlvEncoder.h" +#include "Tlv.h" +#include "AsmHelper.h" +#include "asmcrypto.h" +#include "AuthnrTypes.h" +#include "AuthUiFactory.h" +#include "IAuthUiAdaptor.h" +#include "PinAuthUiAdaptor.h" + +#include +#include +#include + +#define BIG_STRING_SIZE 5000 +#define DIGEST_LEN 32 + +/*#define JSON_BUILDER*/ + +/*TODO Fix*/ +#define FIDO_TIZEN_AUTH_KEY_PATH "/opt/usr/data/silent_auth/fido_tizen_auth.key" +#define FIDO_TIZEN_AUTH_DER_PATH "/opt/usr/data/silent_auth/fido_tizen_auth.der" + +/*#define FIDO_TIZEN_AUTH_KEY_PATH tzplatform_mkpath(TZ_SYS_DATA, "/gear_auth/fido_tizen_auth.key")*/ +/*#define FIDO_TIZEN_AUTH_DER_PATH tzplatform_mkpath(TZ_SYS_DATA, "/gear_auth/fido_tizen_auth.der")*/ + +const char *AAID = "TEST#1111"; +const char *tcDispConType = "text/plain"; + +//#define KH_SYMM_KEY "tizen@123"; +const int chunk_size = 200; + +/*TODO : Generate proper key-iv and store in a file*/ +/* A 256 bit key */ +const unsigned char *key = (unsigned char *)"01234567890123456789012345678901"; + +/* A 128 bit IV */ +const unsigned char *iv = (unsigned char *)"01234567890123456"; + +//static char *KH_SYMM_KEY = "tizen@123"; + +/*TODO: Create new DB Table to store counters*/ +/*Global*/ +static int __reg_counter = 1; +/*Per private key signing basis*/ +static int __sign_counter = 1; + +#define AUTH_EXTENSION_ID_INIT "init" +#define AUTH_EXTENSION_ID_DE_INIT "deinit" + +#define AUTH_EXTENSION_RESPONSE_SUCCESS "success" +#define AUTH_EXTENSION_RESPONSE_SUCCESS_LEN 128 + +#ifdef JSON_BUILDER +static void +__add_string_to_json_object(JsonBuilder *json_obj, const char *key, const char *val) +{ + if (key == NULL || val == NULL) + return; + + json_builder_set_member_name(json_obj, key); + json_builder_add_string_value(json_obj, val); +} +#else +static void +__add_string_to_json_object(JsonObject *obj, const char *key, const char *val) +{ + if ((key == NULL) || (val == NULL)) + return; + + json_object_set_string_member(obj, key, val); +} + +static gboolean +__init_json_object(JsonGenerator **generator, JsonObject **root_obj) +{ + _INFO(""); + JsonNode *root_node = NULL; + + *generator = json_generator_new(); + if(*generator == NULL) { + _INFO("json_generator_new is NULL"); + goto CATCH; + } + + root_node = json_node_new(JSON_NODE_OBJECT); + if (root_node == NULL) { + _INFO("*json_node_new is NULL"); + goto CATCH; + } + + *root_obj = json_object_new(); + if(*root_obj == NULL) { + _INFO("json_object_new is NULL"); + goto CATCH; + } + + json_node_take_object(root_node, *root_obj); + json_generator_set_root(*generator, root_node); + + return TRUE; + + +CATCH: + if (generator != NULL && *generator != NULL) { + g_object_unref(*generator); + *generator = NULL; + } + + if (root_node != NULL) { + json_node_free(root_node); + root_node = NULL; + } + + if (root_obj != NULL && *root_obj != NULL) { + g_object_unref(*root_obj); + *root_obj = NULL; + } + return FALSE; +} + +#endif + +static void +__print_big_string(const char *str) +{ + int len = strlen(str); + int i = 0; + for (; i < len; i+= chunk_size) + { + char sub_str[chunk_size + 2] = {0, }; + strncpy(sub_str, str + i, chunk_size); + _INFO("log : [%s]", sub_str); + } + +} + +static char * +__create_raw_key_handle_string(char *khAccToken, const char *pri_key, char *userName) +{ +#ifdef JSON_BUILDER + _INFO("__create_raw_key_handle_string start"); + _INFO("khAccToken : [%s]", khAccToken); + __print_big_string(pri_key); + _INFO("userName : [%s]", userName); + + char *json = NULL; + + JsonBuilder *builder = json_builder_new(); + json_builder_begin_object(builder); + + _INFO("After json_builder_begin_object"); + __add_string_to_json_object(builder, "KHAccessToken", khAccToken); + + _INFO("After __add_string_to_json_object"); + __add_string_to_json_object(builder, "priv", pri_key); + + _INFO("After __add_string_to_json_object"); + __add_string_to_json_object(builder, "userName", userName); + + _INFO("After __add_string_to_json_object"); + json_builder_end_object(builder); + + _INFO("After json_builder_end_object"); + JsonGenerator *gen = json_generator_new(); + JsonNode *root_builder = json_builder_get_root(builder); + json_generator_set_root(gen, root_builder); + + json_node_free(root_builder); + g_object_unref(builder); + + _INFO("Before json_generator_to_data"); + gsize len = 0; + json = json_generator_to_data(gen, &len); + + g_object_unref(gen); + + _INFO("%s", json); + _INFO("__create_raw_key_handle_string end"); + return json; +#else + gsize len = 0; + char *json = NULL; + JsonGenerator *generator = NULL; + JsonObject *root_obj = NULL; + bool ret = __init_json_object(&generator, &root_obj); + if (ret == FALSE) { + _ERR("initObject failed"); + goto CATCH; + } + + _INFO("After json_builder_begin_object"); + __add_string_to_json_object(root_obj, "KHAccessToken", khAccToken); + + _INFO("After __add_string_to_json_object"); + __add_string_to_json_object(root_obj, "priv", pri_key); + + _INFO("After __add_string_to_json_object"); + __add_string_to_json_object(root_obj, "userName", userName); + + + json = json_generator_to_data(generator, &len); + if (json != NULL) { + _INFO("%s", json); + + } + return json; + +CATCH: + if (generator != NULL) { + g_object_unref(generator); + generator = NULL; + } + return NULL; +#endif +} + +static int +__parse_key_handle_json(const unsigned char *kh, char **khA, char **pri_key, char **user_name) +{ + __print_big_string((char*)kh); + _INFO("Input len=[%d]", strlen((char*)kh)); + + /*TODO*/ + JsonParser *parser = json_parser_new(); + + GError *err = NULL; + json_parser_load_from_data(parser, (char*)kh, -1, &err); + if (err != NULL) + { + _ERR("Parsing failed=[%s]", err->message); + return -1; + } + + JsonNode *root = json_parser_get_root(parser); + + JsonObject *root_obj = json_node_get_object(root); + + const char *khA_temp = json_object_get_string_member(root_obj, "KHAccessToken"); + const char *pri_key_temp = json_object_get_string_member(root_obj, "priv"); + const char *user_name_temp = json_object_get_string_member(root_obj, "userName"); + + if (khA_temp != NULL) + { + *khA = strdup(khA_temp); + } + + if (pri_key_temp != NULL) + { + *pri_key = strdup(pri_key_temp); + } + + if (user_name_temp != NULL) + { + *user_name = strdup(user_name_temp); + } + + if (parser != NULL) + g_object_unref(parser); + + return 0; +} + +void * +processDeRegister(unsigned char *assert_req) +{ + _INFO("========ProcessDeRegister start========="); + + Buffer *getDeRegRespInfoBuff = NULL; + DeregResp *getDeRegRespInfo = ALLOC(DeregResp); + getDeRegRespInfo->statusCode = UAF_CMD_STATUS_OK; + + _INFO("===========================DEREGISTER RESPONSE ENCODE============================="); + + TlvEncodable encodableDeReg(getDeRegRespInfo); + int ret = encodableDeReg.setEncoder(EID_UAFV1_DEREG_RESP); + if (ret == 0) { + _INFO("setEncoder EID_UAFV1_DEREG_RESP PASS \n"); + } + else { + _INFO("setEncoder EID_UAFV1_DEREG_RESP FAIL \n"); + return NULL; + } + + getDeRegRespInfoBuff = encodableDeReg.encode(); + if (getDeRegRespInfoBuff != NULL) { + _INFO("encode EID_UAFV1_DEREG_RESP PASS \n"); + } + else { + _INFO("encode EID_UAFV1_DEREG_RESP FAIL \n"); + return NULL; + } + + _INFO("===========================DEREGISTER RESPONSE ENCODE============================="); + + _INFO("========ProcessDeRegister start========="); + return getDeRegRespInfoBuff; +} + +void * +processAuthenticate(unsigned char *assert_req) +{ + _INFO("========ProcessAuthenticate start PIN Auth========="); + OpenSSL_add_all_algorithms(); + + AuthenticateReq *getAuthReqInfo = NULL; + AuthenticateResp *getAuthRespInfo = NALLOC(1, AuthenticateResp); + getAuthRespInfo->authAssertion = NULL; + getAuthRespInfo->uKhList = NULL; + + TlvEncodable encodableAuthReq; + + _INFO("===========================AUTHENTICATE REQUEST DECODE============================="); + int ret = encodableAuthReq.setEncoder(EID_UAFV1_SIGN_REQ); + if (ret == 0) { + _INFO("setEncoder EID_UAFV1_SIGN_REQ PASS \n"); + } + else { + _INFO("setEncoder EID_UAFV1_SIGN_REQ FAIL \n"); + return NULL; + } + + getAuthReqInfo = encodableAuthReq.decode(assert_req); + if (getAuthReqInfo != NULL) { + _INFO("decode EID_UAFV1_SIGN_REQ PASS \n"); + } + else { + _INFO("decode EID_UAFV1_SIGN_REQ FAIL \n"); + return NULL; + } + _INFO("===========================AUTHENTICATE REQUEST DECODE============================="); + + _INFO("===========================AUTHENTICATE REPONSE ENCODE============================="); + + bool response_parsed = false; + + getAuthRespInfo->statusCode = UAF_CMD_STATUS_OK; + + int khHListSize = g_list_length(getAuthReqInfo->khHList); + + if(khHListSize > 1) { + + _INFO("Keyhandle size > 1 = [%d]", khHListSize); + + /*Copy {Command.KeyHandle, RawKeyHandle.username}*/ + GList *ukhIter = NULL; + ukhIter = g_list_first(getAuthReqInfo->khHList); + + while (ukhIter != NULL) + { + unsigned char *khStr = (unsigned char*)ukhIter->data; + + _INFO("processAuthenticate:: Length of b64 encoded keyHandle : [%d]", strlen((char*)khStr)); + + /*b64 decode of keyHandle*/ + int inputSz = strlen((char*)khStr); + unsigned char* output = NULL; + + output = (unsigned char*)calloc(1, inputSz*1.5); + int outputSz = 0; + + if (0 != AsmCrypto::genB64Decodes(khStr, + inputSz, + output, + &outputSz)) + { + _ERR("Failed to decode base64."); + free(output); + return NULL; + } + + unsigned char *kh_str_enc = output; + int kh_str_enc_len = outputSz; + _INFO("processAuthenticate:: Length of keyHandle from Auth Req to decrypt = [%d]", kh_str_enc_len); + + + _INFO("Before AESDecrypt"); + unsigned char kh_str_dec[BIG_STRING_SIZE] = {0, }; + int dec_len = AsmCrypto::aesDecrypt(kh_str_enc, + kh_str_enc_len, + key,//(const unsigned char*)symKey.c_str(), + iv,//(const unsigned char*)symKey.c_str(), + kh_str_dec); + if (dec_len > 0) + { + char *khA = NULL; + char *pri_key = NULL; + char *user_name = NULL; + + kh_str_dec[dec_len] = '\0'; + + _INFO("Before __parse_key_handle_json"); + __parse_key_handle_json(kh_str_dec, &khA, &pri_key, &user_name); + + if ((khA != NULL) && (pri_key != NULL) && (user_name != NULL)) + /*TODO strcmp((char*)khATkn_b64_enc, khA) == 0)*/ + { + /*pri_key and khAccessToken are b64 encoded*/ + _INFO("Key Handle Parameters : [%s][%s][%s]", user_name, pri_key, khA); + + UserNameKeyHandle *ukhInfoNew = ALLOC(UserNameKeyHandle); + ukhInfoNew->userName = user_name; + + ukhInfoNew->kh = ALLOC(Buffer); + ukhInfoNew->kh->data = NALLOC(BIG_STRING_SIZE, uint8_t); + ukhInfoNew->kh->len = strlen((char*)khStr); + memcpy(ukhInfoNew->kh->data, khStr, strlen((char*)khStr)); + + GList *ukhList = NULL; + ukhList = g_list_append(ukhList, ukhInfoNew); + getAuthRespInfo->uKhList = g_list_first(ukhList); + + response_parsed = true; + } + } + + ukhIter = ukhIter->next; + } + + } else { + + _INFO("processAuthenticate:: Keyhandle size = 1."); + /*Set Authentication Mode*/ + int authMode = 0x01; + + unsigned char nonce[128] = {0, }; + AsmCrypto::genRandom(nonce, 128); + + //string tcHash((char*)PIN_TCHASH_AUTH,32); /*TODO: Implement*/ + + _INFO(""); + + unsigned char digest[32]; + + GList *khHLIter = g_list_first(getAuthReqInfo->khHList); + unsigned char *khString = (unsigned char*)khHLIter->data; + + /*b64 decode of keyHandle*/ + int khString_len = strlen((char*)khString); + unsigned char* khString_raw = NULL; + + khString_raw = (unsigned char*)calloc(1, khString_len*1.5); + int khString_raw_len = 0; + + if (0 != AsmCrypto::genB64Decodes(khString, + khString_len, + khString_raw, + &khString_raw_len)) + { + _ERR("Failed to decode base64."); + free(khString_raw); + return NULL; + } + /*b64 decode of keyHandle*/ + + _INFO("Before genHash256"); + AsmCrypto::genHash256(khString_raw, khString_raw_len, digest); + _INFO("genHash256 Length = %d", strlen((char*)digest)); + _INFO("After genHash256 = %s", digest); + + //std::string keyID(digest, strlen(digest)); + unsigned char *keyId_b64_enc = AsmCrypto::ToBase64Url(digest, DIGEST_LEN); + + + getAuthRespInfo->authAssertion = ALLOC(AuthAssertion); + getAuthRespInfo->authAssertion->sigData = ALLOC(SigData); + + getAuthRespInfo->authAssertion->sigData->aaid = (char*)AAID; + + getAuthRespInfo->authAssertion->sigData->assrtInfo = ALLOC(AssertionInfo); + getAuthRespInfo->authAssertion->sigData->assrtInfo->authMode = authMode; + getAuthRespInfo->authAssertion->sigData->assrtInfo->authVersion = 1; + getAuthRespInfo->authAssertion->sigData->assrtInfo->signatureAlgAndEncoding = UAF_ALG_SIGN_RSASSA_PSS_SHA256_RAW; + getAuthRespInfo->authAssertion->sigData->assrtInfo->publicKeyAlgAndEncoding = UAF_ALG_KEY_RSA_2048_PSS_RAW; + + getAuthRespInfo->authAssertion->sigData->authNonce = ALLOC(Buffer); + getAuthRespInfo->authAssertion->sigData->authNonce->data = NALLOC(strlen((char*)nonce), uint8_t); + getAuthRespInfo->authAssertion->sigData->authNonce->len = strlen((char*)nonce); + memcpy(getAuthRespInfo->authAssertion->sigData->authNonce->data, nonce, strlen((char*)nonce)); + + getAuthRespInfo->authAssertion->sigData->fch = getAuthReqInfo->fch; + + /*Transaction Content Hash*/ + getAuthRespInfo->authAssertion->sigData->tcHash = ALLOC(Buffer); + + /*tcHash when authMode = 0x02 i.e transaction content is not empty*/ + if(getAuthReqInfo->tc != NULL) { + + unsigned char tcHash[32]; + getAuthRespInfo->authAssertion->sigData->assrtInfo->authMode = 0x02; + int ret = AsmCrypto::genHash256(getAuthReqInfo->tc, strlen(getAuthReqInfo->tc), tcHash); + if(ret == false) { + _ERR("processAuthenticate:: Failed to create Transaction content hash."); + return NULL; + } + + getAuthRespInfo->authAssertion->sigData->tcHash->len = DIGEST_LEN; + getAuthRespInfo->authAssertion->sigData->tcHash->data = NALLOC(DIGEST_LEN, uint8_t); + memcpy(getAuthRespInfo->authAssertion->sigData->tcHash->data, tcHash, DIGEST_LEN); + } + /*authMode = 0x01*/ + else { + getAuthRespInfo->authAssertion->sigData->tcHash->len = 0; + } + + getAuthRespInfo->authAssertion->sigData->keyId = ALLOC(Buffer); + getAuthRespInfo->authAssertion->sigData->keyId->data = NALLOC(strlen((char*)keyId_b64_enc), uint8_t); + getAuthRespInfo->authAssertion->sigData->keyId->len = strlen((char*)keyId_b64_enc); + memcpy(getAuthRespInfo->authAssertion->sigData->keyId->data, keyId_b64_enc, strlen((char*)keyId_b64_enc)); + _INFO("gear_auth_keyid AUTH = [%s]", keyId_b64_enc); + _INFO("gear_auth_keyid AUTH len = [%d]", getAuthRespInfo->authAssertion->sigData->keyId->len); + + getAuthRespInfo->authAssertion->sigData->counter = ALLOC(Counters); + getAuthRespInfo->authAssertion->sigData->counter->signCounter = __sign_counter; + /*TODO store _sign_counter in Auth DB*/ + + /*Get UAuth.priv from keyhandle*/ + _INFO("processAuthenticate:: Length of b64 encoded keyHandle : [%d]", strlen((char*)khHLIter->data)); + + int inputSz = strlen((char*)khHLIter->data); + unsigned char* output = NULL; + + output = (unsigned char*)calloc(1, inputSz*1.5); + int outputSz = 0; + + if (0 != AsmCrypto::genB64Decodes((unsigned char*)khHLIter->data, + inputSz, + output, + &outputSz)) + { + _ERR("Failed to decode base64."); + free(output); + return NULL; + } + + unsigned char *kh_str_enc = output; + int kh_str_enc_len = outputSz; + _INFO("processAuthenticate:: Length of keyHandle from Auth Req to decrypt = [%d]", kh_str_enc_len); + + _INFO("Before AESDecrypt"); + unsigned char kh_str_dec[BIG_STRING_SIZE] = {0, }; + int dec_len = AsmCrypto::aesDecrypt(kh_str_enc, + kh_str_enc_len, + key,//(const unsigned char*)symKey.c_str(), + iv,//(const unsigned char*)symKey.c_str(), + kh_str_dec); + + if (dec_len <= 0) + { + _ERR("AESDecryptof keyhandle failed"); + return NULL; + } + + _INFO("After AESDecrypt, len=[%d]", dec_len); + + kh_str_dec[dec_len] = '\0'; + + char *khA = NULL; + char *pri_key = NULL; + char *user_name = NULL; + __parse_key_handle_json(kh_str_dec, &khA, &pri_key, &user_name); + /* pri_key and khA are b64 encoded */ + _INFO("Key Handle Parameters : [%s][%s][%s]", user_name, pri_key, khA); + + unsigned char *khATkn_b64_dec = AsmCrypto::FromBase64Url((unsigned char*)khA, strlen(khA)); + if (memcmp(getAuthReqInfo->khATok->data, khATkn_b64_dec, DIGEST_LEN) != 0) { + _INFO("ERR::processAuthenticate:: khAcessToken not matching"); + return NULL; + } + _INFO("processAuthenticate:: khAcessToken matchining"); + + /*Signature = Sign TAG_UAFV1_SIGNED_DATA with UAuth.priv*/ + + Buffer *getSigDataInfoBuff = NULL; + TlvEncodable encodableSigData(getAuthRespInfo->authAssertion->sigData); + int ret = encodableSigData.setEncoder(EID_UAFV1_SIGN_DATA_RESP); + if (ret == 0) { + _INFO("setEncoder EID_UAFV1_SIGN_DATA_RESP PASS"); + } + else { + _INFO("setEncoder EID_UAFV1_SIGN_DATA_RESP FAIL"); + return NULL; + } + + getSigDataInfoBuff = encodableSigData.encode(); + if (getSigDataInfoBuff != NULL) { + _INFO("encode EID_UAFV1_SIGN_DATA_RESP PASS"); + } + else { + _INFO("encode EID_UAFV1_SIGN_DATA_RESP FAIL"); + return NULL; + } + + unsigned char * pri_key_b64_dec = AsmCrypto::FromBase64Url((unsigned char*)pri_key, strlen(pri_key)); + /*TODO*/ + int priv_key_len = strlen((char*)pri_key_b64_dec); + int sig_len = 0; + unsigned char *sig_str = AsmCrypto::fidoSignWithKey((const unsigned char *)getSigDataInfoBuff->data, + getSigDataInfoBuff->len, + pri_key_b64_dec, priv_key_len, + &sig_len); + + if (sig_str == NULL) { + _ERR("SignRSA failed for signature"); + return NULL; + } + + getAuthRespInfo->authAssertion->sig = ALLOC(Buffer); + getAuthRespInfo->authAssertion->sig->data = NALLOC(strlen((char*)sig_str), uint8_t); + getAuthRespInfo->authAssertion->sig->len = sig_len;/*strlen((char*)sig_str);*/ + memcpy(getAuthRespInfo->authAssertion->sig->data, sig_str, strlen((char*)sig_str)); + + response_parsed = true; + + _INFO("SignRSA success for signature"); + } + + if (response_parsed == false) + { + _ERR("processAuthenticate:: Failed to Get Sign Response"); + return NULL; + + } + + if (getAuthReqInfo->khHList != NULL) + _INFO("getAuthRespInfo khHList=[%p]", getAuthReqInfo->khHList); + else + _INFO("getAuthRespInfo khHList=[NULL]"); + + if (getAuthRespInfo->uKhList!= NULL) + _INFO("getAuthRespInfo uKhList=[%p]", getAuthRespInfo->uKhList); + else + _INFO("getAuthRespInfo uKhList=[NULL], normal"); + + + Buffer *getAuthRespInfoBuff = ALLOC(Buffer); + TlvEncodable encodableAuthResp(getAuthRespInfo); + + ret = encodableAuthResp.setEncoder(EID_UAFV1_SIGN_RESP); + if (ret == 0) { + _INFO("setEncoder EID_UAFV1_SIGN_RESP PASS \n"); + } + else { + _INFO("setEncoder EID_UAFV1_SIGN_RESP FAIL \n"); + return NULL; + } + + getAuthRespInfoBuff = encodableAuthResp.encode(); + if (getAuthRespInfoBuff != NULL) { + _INFO("encode EID_UAFV1_SIGN_RESP PASS \n"); + } + else { + _INFO("encode EID_UAFV1_SIGN_RESP FAIL \n"); + return NULL; + } + + _INFO("===========================AUTHENTICATE REPONSE ENCODE============================="); + + _INFO("========ProcessAuthenticate end PIN Auth========="); + return getAuthRespInfoBuff; +} + +void * +processRegister(unsigned char *assert_req) +{ + + _INFO("========ProcessRegister start========="); + OpenSSL_add_all_algorithms(); + + RegisterReq *getRegReqInfo = NULL; + RegisterResp *getRegRespInfo = NULL; + getRegRespInfo = ALLOC(RegisterResp); + TlvEncodable encodableRegReq; + + _INFO("===========================REGISTER REQUEST DECODE============================="); + int ret = encodableRegReq.setEncoder(EID_UAFV1_REGISTER_REQ); + if (ret == 0) { + _INFO("setEncoder EID_UAFV1_REGISTER_REQ PASS \n"); + } + else { + _INFO("setEncoder EID_UAFV1_REGISTER_REQ FAIL \n"); + return NULL; + } + + getRegReqInfo = encodableRegReq.decode(assert_req); + if (getRegReqInfo != NULL) { + _INFO("decode EID_UAFV1_REGISTER_REQ PASS \n"); + } + else { + _INFO("decode EID_UAFV1_REGISTER_REQ FAIL \n"); + return NULL; + } + _INFO("===========================REGISTER REQUEST DECODE============================="); + + _INFO("===========================REGISTER REPONSE ENCODE============================="); + getRegRespInfo->statusCode = UAF_CMD_STATUS_OK; + + /*Generate a new UAuth.Pub UAuth.Priv key pair*/ + char *priv_key_raw = NULL; + char *pub_key_raw = NULL; + int pri_len = 0; + int pub_len = 0; + int ret_c = AsmCrypto::createRSAKeyPair(2048, &pub_key_raw, &pub_len, &priv_key_raw, &pri_len); + if (ret_c != 0) + { + return NULL; + } + + _INFO("After CreateRSAKeyPair"); + + _INFO("Before __create_raw_key_handle_string"); + unsigned char *priv_key_b64_enc = NULL; + priv_key_b64_enc = AsmCrypto::ToBase64Url((unsigned char*)priv_key_raw, pri_len); + unsigned char *khATkn_b64_enc = NULL; + khATkn_b64_enc = AsmCrypto::ToBase64Url((unsigned char*)getRegReqInfo->khAccessToken->data, DIGEST_LEN); + char *kh_str = NULL; + kh_str = __create_raw_key_handle_string((char*)khATkn_b64_enc, (char*)priv_key_b64_enc, getRegReqInfo->userName); + + __print_big_string(kh_str); + + if (kh_str == NULL) { + return NULL; + } + + _INFO("After __create_raw_key_handle_string"); + + int kh_str_enc_len = 0; + unsigned char kh_str_enc[BIG_STRING_SIZE] = {0, }; + kh_str_enc_len = AsmCrypto::aesEncrypt((const unsigned char*)kh_str, + strlen(kh_str), + key,//(const unsigned char*)symKey.c_str(), + iv,//(const unsigned char*)symKey.c_str(), + kh_str_enc); + + _INFO("After AESEncrypt, length = [%d]", kh_str_enc_len); + kh_str_enc[kh_str_enc_len] = '\0'; + + unsigned char digest[32]; + + AsmCrypto::genHash256(kh_str_enc, kh_str_enc_len, digest); + _INFO("genHash256 Length = %d", strlen((char*)digest)); + _INFO("After genHash256 = %s", digest); + + /*b64 encode of keyId*/ + unsigned char *keyId_b64_enc = NULL; + keyId_b64_enc = AsmCrypto::ToBase64Url(digest, DIGEST_LEN); + /*b64 encode of keyId*/ + + getRegRespInfo->kh = ALLOC(Buffer); + getRegRespInfo->kh->data = NALLOC(kh_str_enc_len, uint8_t);; + memcpy(getRegRespInfo->kh->data, kh_str_enc, kh_str_enc_len); + getRegRespInfo->kh->len = kh_str_enc_len; + + + getRegRespInfo->regAssertion = ALLOC(RegAssertion); + getRegRespInfo->regAssertion->krd = ALLOC(Krd); + + getRegRespInfo->regAssertion->krd->aaid = (char*)calloc(1, 128); + snprintf(getRegRespInfo->regAssertion->krd->aaid, 127, "%s", "TEST#1111"); + + + getRegRespInfo->regAssertion->krd->assrtInfo = ALLOC(AssertionInfo); + getRegRespInfo->regAssertion->krd->assrtInfo->authVersion = 1; + getRegRespInfo->regAssertion->krd->assrtInfo->authMode = 1; + getRegRespInfo->regAssertion->krd->assrtInfo->signatureAlgAndEncoding = UAF_ALG_SIGN_RSASSA_PSS_SHA256_RAW; + getRegRespInfo->regAssertion->krd->assrtInfo->publicKeyAlgAndEncoding = UAF_ALG_KEY_RSA_2048_PSS_RAW; + + getRegRespInfo->regAssertion->krd->fch = ALLOC(Buffer); + getRegRespInfo->regAssertion->krd->fch->len = getRegReqInfo->fch->len; + getRegRespInfo->regAssertion->krd->fch->data = NALLOC(getRegReqInfo->fch->len, uint8_t); + memcpy(getRegRespInfo->regAssertion->krd->fch->data, getRegReqInfo->fch->data, getRegReqInfo->fch->len); + + getRegRespInfo->regAssertion->krd->keyId = ALLOC(Buffer); + getRegRespInfo->regAssertion->krd->keyId->data = NALLOC(strlen((char*)keyId_b64_enc), uint8_t); + memcpy(getRegRespInfo->regAssertion->krd->keyId->data, keyId_b64_enc, strlen((char*)keyId_b64_enc)); + getRegRespInfo->regAssertion->krd->keyId->len = strlen((char*)keyId_b64_enc); + _INFO("gear_auth_keyid REG = [%s]", keyId_b64_enc); + _INFO("gear_auth_keyid REG len = [%d]", getRegRespInfo->regAssertion->krd->keyId->len); + + getRegRespInfo->regAssertion->krd->counter = ALLOC(Counters); + getRegRespInfo->regAssertion->krd->counter->signCounter = __sign_counter; + getRegRespInfo->regAssertion->krd->counter->regCounter = __reg_counter; + + + getRegRespInfo->regAssertion->krd->pubKey = ALLOC(Buffer); + getRegRespInfo->regAssertion->krd->pubKey->data = NALLOC(pub_len, uint8_t); + memcpy(getRegRespInfo->regAssertion->krd->pubKey->data, pub_key_raw, pub_len); + getRegRespInfo->regAssertion->krd->pubKey->len = pub_len; + + + + /*Signature = KRD data signed with attestation private key*/ + + Buffer *uafv1KrdBuff = NULL; + Krd *uafv1KrdInfo = NULL; + uafv1KrdInfo = getRegRespInfo->regAssertion->krd; + TlvEncodable encodableKrd(uafv1KrdInfo); + + ret = encodableKrd.setEncoder(EID_UAFV1_REG_ASSERTION_KRD_RESP); + if (ret == 0) { + _INFO("setEncoder EID_UAFV1_REG_ASSERTION_KRD_RESP PASS"); + } + else { + _INFO("setEncoder EID_UAFV1_REG_ASSERTION_KRD_RESP FAIL"); + } + + uafv1KrdBuff = encodableKrd.encode(); + if (uafv1KrdBuff != NULL) { + _INFO("encode EID_UAFV1_REG_ASSERTION_KRD_RESP PASS, length of encoded UAFV1KRD is = [%d]", uafv1KrdBuff->len); + } + else { + _INFO("encode EID_UAFV1_REG_ASSERTION_KRD_RESP FAIL"); + } + + unsigned char *krdStr = (unsigned char*)calloc(1, uafv1KrdBuff->len); + memcpy(krdStr, uafv1KrdBuff->data, uafv1KrdBuff->len); + + int krdStr_len = uafv1KrdBuff->len; + + _INFO("Before SignWithPrivateKeyFile"); + int sig_len = 0; + unsigned char *sign_raw = AsmCrypto::fidoSign(krdStr, krdStr_len, + FIDO_TIZEN_AUTH_KEY_PATH, + "tizen", &sig_len); + + if (sign_raw == NULL) { + _ERR("FIDO SignWithPrivateKeyFile failed"); + return NULL; + } + + _INFO("After SignWithPrivateKeyFile, Length of signature is = [%d]", sig_len); + + int cert_len = 0; + + unsigned char *cert_raw = NULL; + cert_raw = AsmCrypto::readDer(FIDO_TIZEN_AUTH_DER_PATH, &cert_len); + _INFO("After ReadRawCertFile"); + + getRegRespInfo->regAssertion->attFull = ALLOC(AttestationBasicFull); + + getRegRespInfo->regAssertion->attFull->sig = ALLOC(Buffer); + getRegRespInfo->regAssertion->attFull->sig->data = NALLOC(sig_len, uint8_t); + memcpy(getRegRespInfo->regAssertion->attFull->sig->data, sign_raw, sig_len); + getRegRespInfo->regAssertion->attFull->sig->len = sig_len; + + getRegRespInfo->regAssertion->attFull->cert = ALLOC(Buffer); + getRegRespInfo->regAssertion->attFull->cert->data = NALLOC(cert_len, uint8_t); + memcpy(getRegRespInfo->regAssertion->attFull->cert->data, cert_raw, cert_len); + getRegRespInfo->regAssertion->attFull->cert->len = cert_len; + + + TlvEncodable encodableRegResp(getRegRespInfo); + Buffer *getRegRespInfoBuff = NULL; + + ret = encodableRegResp.setEncoder(EID_UAFV1_REGISTER_RESP); + if (ret == 0) { + _INFO("setEncoder EID_UAFV1_REGISTER_RESP PASS \n"); + } + else { + _INFO("setEncoder EID_UAFV1_REGISTER_RESP FAIL \n"); + return NULL; + } + + getRegRespInfoBuff = encodableRegResp.encode(); + if (getRegRespInfoBuff != NULL) { + _INFO("decode EID_UAFV1_REGISTER_RESP PASS \n"); + } + else { + _INFO("decode EID_UAFV1_REGISTER_RESP FAIL \n"); + return NULL; + } + + _INFO("===========================REGISTER REPONSE ENCODE============================="); + + __reg_counter++; + __sign_counter++; + _INFO("========ProcessRegister end========="); + return getRegRespInfoBuff; +} + +void * +processGetInfo() +{ + AuthenticatorInfo *authInfo = ALLOC(AuthenticatorInfo); + + authInfo->__authenticatorIndex = 1; + authInfo->__aaid = strdup(AAID); + + authInfo->__meta = ALLOC(AuthenticatorMetaData); + authInfo->__meta->authenticatorType = AUTHNR_REQUIRE_TAG_APPID | AUTHNR_HAS_BUILTIN_ENROLL_VERIFY_UI;// DIFFER; + authInfo->__meta->maxKeyHandles = 10; + + authInfo->__meta->userVerification = USER_VERIFY_PASSCODE;//4 + + authInfo->__meta->keyProtection = KEY_PROTECTION_HARDWARE | KEY_PROTECTION_TEE;//6; + authInfo->__meta->matcherProtection = MATCHER_PROTECTION_TEE;//2 + + authInfo->__meta->transactionConfirmationDisplay = + TRANSACTION_CONFIRMATION_DISPLAY_PRIVILEGED_SOFTWARE | TRANSACTION_CONFIRMATION_DISPLAY_ANY;//3; + authInfo->__meta->authenticationAlg = UAF_ALG_SIGN_RSASSA_PSS_SHA256_RAW;//3 + + authInfo->__tcDispConType = strdup(tcDispConType); + + GList *tcDispList = NULL; + DisplayTc *tcPngGetInfo = ALLOC(DisplayTc); + tcPngGetInfo->width = 320; + tcPngGetInfo->height = 240; + tcPngGetInfo->bitDepth = 16; + tcPngGetInfo->colorType = 2; + tcPngGetInfo->compression = 0; + tcPngGetInfo->filter = 0; + tcPngGetInfo->interlace = 0; + tcPngGetInfo->plte = (char*)""; + tcDispList = g_list_append(tcDispList, tcPngGetInfo); + authInfo->__tcDisplayPNGCharacteristics = g_list_first(tcDispList); + + authInfo->__assertionScheme = (char*)"UAFV1TLV"; + + GList *attTypes = NULL; + attTypes = g_list_append(attTypes, GINT_TO_POINTER(TAG_ATTESTATION_BASIC_FULL)); + authInfo->__attestationTypes = g_list_first(attTypes); + + GList *extList = NULL; + extList = g_list_append(extList, (char*)"abc"); + authInfo->__extList = g_list_first(extList); + + //out + GetAuthInfoResp *getAuthInfoRespInfo = ALLOC(GetAuthInfoResp); + getAuthInfoRespInfo->statusCode = UAF_CMD_STATUS_OK; + getAuthInfoRespInfo->apiVersion = 0; + GList *authList = NULL; + authList = g_list_append(authList, authInfo); + getAuthInfoRespInfo->authList = g_list_first(authList); + + Buffer *getInfoRespBuff = NULL; + TlvEncodable encodableResp(getAuthInfoRespInfo);; + + _INFO("===========================RESPONSE ENCODE============================="); + int ret = encodableResp.setEncoder(EID_UAFV1_GETINFO_RESP); + if (ret == 0) { + _INFO("setEncoder EID_UAFV1_GETINFO_RESP PASS \n"); + } + else { + _INFO("setEncoder EID_UAFV1_GETINFO_RESP FAIL \n"); + return NULL; + } + + /*2) Create TLV encoded buffer*/ + getInfoRespBuff = encodableResp.encode(); + if (getInfoRespBuff != 0) { + _INFO("encode EID_UAFV1_GETINFO_RESP PASS \n"); + } + else { + _INFO("encode EID_UAFV1_GETINFO_RESP FAIL \n"); + return NULL; + } + _INFO("===========================RESPONSE ENCODE============================="); + + return getInfoRespBuff; +} + +static int +fido_auth_plugin_fido_command_process_internal(unsigned char *assert_req, + unsigned char **assrt_resp) +{ + _INFO("fido_auth_plugin_fido_command_process:: start"); + + tlv_s *root = tlv_decode(assert_req); + + Buffer *getRespBuff = NULL; + + bool foundMember = false; + + switch(root->tag) { + + case TAG_UAFV1_GETINFO_CMD: + getRespBuff = (Buffer*)processGetInfo(); + if(getRespBuff != NULL) + *assrt_resp = getRespBuff->data; + foundMember = true; + break; + + case TAG_UAFV1_REGISTER_CMD: + getRespBuff = (Buffer*)processRegister(assert_req); + if(getRespBuff != NULL) + *assrt_resp = getRespBuff->data; + foundMember = true; + break; + + case TAG_UAFV1_SIGN_CMD: + getRespBuff = (Buffer*)processAuthenticate(assert_req); + if(getRespBuff != NULL) + *assrt_resp = getRespBuff->data; + foundMember = true; + break; + + case TAG_UAFV1_DEREGISTER_CMD: + getRespBuff = (Buffer*)processDeRegister(assert_req); + if(getRespBuff != NULL) + *assrt_resp = getRespBuff->data; + foundMember = true; + break; + + default: + foundMember = false; + break; + } + + if(foundMember == false) + return -1; + + _INFO("fido_auth_plugin_fido_command_process:: end"); + return getRespBuff->len; +} + +extern "C" { + +EXPORT_API int +fido_auth_plugin_init(void) +{ + return 0; +} + +EXPORT_API bool +fido_auth_plugin_is_connected(void) +{ + return true; +} + +EXPORT_API int +fido_auth_plugin_de_init(void) +{ + return 0; +} + +/*int fido_auth_plugin_get_assertion_scheme(char **scheme); +unsigned char* fido_auth_plugin_encode_assertion(int tag, const void *data); +void* fido_auth_plugin_decode_assertion(int tag, unsigned char *assrt);*/ + + +EXPORT_API int +fido_auth_plugin_fido_command_process(unsigned char *assert_req, + unsigned char **assrt_resp) +{ + return fido_auth_plugin_fido_command_process_internal(assert_req, assrt_resp); +} + +EXPORT_API int +fido_auth_plugin_command_process_custom(const char *id, const char *data, + bool fail_if_unknown, char **custom_op) +{ + _INFO("process_custom"); + + if (id == NULL) { + _ERR("NULL extension id"); + return -1; + } + + if (strcmp(id, AUTH_EXTENSION_ID_INIT) == 0) { + _INFO("Init custom command"); + char *resp = (char*)(calloc(AUTH_EXTENSION_RESPONSE_SUCCESS_LEN, sizeof(char))); + snprintf(resp, AUTH_EXTENSION_RESPONSE_SUCCESS_LEN - 1, "%s", AUTH_EXTENSION_RESPONSE_SUCCESS); + + *custom_op = resp; + return 0; + } + + if (strcmp(id, AUTH_EXTENSION_ID_DE_INIT) == 0) { + _INFO("De-Init custom command"); + char *resp = (char*)(calloc(AUTH_EXTENSION_RESPONSE_SUCCESS_LEN, sizeof(char))); + snprintf(resp, AUTH_EXTENSION_RESPONSE_SUCCESS_LEN - 1, "%s", AUTH_EXTENSION_RESPONSE_SUCCESS); + + *custom_op = resp; + return 0; + } + + _ERR("Unknown extension id = [%s]", id); + return -1; +} + +EXPORT_API bool +fido_auth_plugin_is_uv_required(void) +{ + return true; +} + +EXPORT_API int +fido_auth_plugin_is_enrolled(const char *args) +{ + /*TODO*/ + return true; +} + +EXPORT_API int +fido_auth_plugin_enroll(const char *args) +{ + _INFO(""); + /*TODO: user verification*/ + return 0; +} + +EXPORT_API int +fido_auth_plugin_verify(const char *cmd, const char *fch, char **verif_token) +{ + _INFO(""); + /*TODO: user verification*/ + return 0; +} + +EXPORT_API int +fido_auth_plugin_get_attachment_hint(void) +{ + return ATTACHMENT_HINT_INTERNAL; +} + +} + +/*int fido_auth_plugin_hash(const char *ip, char **op); +int fido_auth_plugin_confirm_account(GList *acc_list, char **selected_acc); +int fido_auth_plugin_confirm_tc(const transaction_s *tr);*/ diff --git a/silent_auth/silent_auth_entry.h b/silent_auth/silent_auth_entry.h new file mode 100644 index 0000000..3c65036 --- /dev/null +++ b/silent_auth/silent_auth_entry.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include + +extern "C" { + +EXPORT_API int +fido_auth_plugin_init(void); + +EXPORT_API bool +fido_auth_plugin_is_connected(void); + +EXPORT_API int +fido_auth_plugin_de_init(void); + +//int fido_auth_plugin_get_assertion_scheme(char **scheme); +//unsigned char* fido_auth_plugin_encode_assertion(int tag, const void *data); +//void* fido_auth_plugin_decode_assertion(int tag, unsigned char *assrt); + +EXPORT_API int +fido_auth_plugin_fido_command_process(unsigned char *assert_req, + unsigned char **assrt_resp); + +EXPORT_API bool +fido_auth_plugin_is_uv_required(void); + +EXPORT_API int +fido_auth_plugin_is_enrolled(const char *args); + +EXPORT_API int +fido_auth_plugin_enroll(const char *args); + +EXPORT_API int +fido_auth_plugin_verify(const char *opt, const char *fch, char **verif_token); + +} +//int fido_auth_plugin_hash(const char *ip, char **op); + + + +//int fido_auth_plugin_confirm_account(GList *acc_list, char **selected_acc); +//int fido_auth_plugin_confirm_tc(const transaction_s *tr); diff --git a/test/RADemoTV/.cproject b/test/RADemoTV/.cproject new file mode 100644 index 0000000..ebc8598 --- /dev/null +++ b/test/RADemoTV/.cproject @@ -0,0 +1,609 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/RADemoTV/.exportMap b/test/RADemoTV/.exportMap new file mode 100644 index 0000000..43e310e --- /dev/null +++ b/test/RADemoTV/.exportMap @@ -0,0 +1,4 @@ +{ + global: main; + local: *; +}; diff --git a/test/RADemoTV/.gitignore b/test/RADemoTV/.gitignore new file mode 100644 index 0000000..3df573f --- /dev/null +++ b/test/RADemoTV/.gitignore @@ -0,0 +1 @@ +/Debug/ diff --git a/test/RADemoTV/.package-stamp b/test/RADemoTV/.package-stamp new file mode 100644 index 0000000..40cbe59 --- /dev/null +++ b/test/RADemoTV/.package-stamp @@ -0,0 +1 @@ +TPK \ No newline at end of file diff --git a/test/RADemoTV/.project b/test/RADemoTV/.project new file mode 100644 index 0000000..46db98f --- /dev/null +++ b/test/RADemoTV/.project @@ -0,0 +1,46 @@ + + + RADemoTV + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + 1473239863235 + + 26 + + org.eclipse.ui.ide.multiFilter + 1.0-projectRelativePath-matches-false-false-*/.tpk + + + + 1473239863239 + + 6 + + org.eclipse.ui.ide.multiFilter + 1.0-name-matches-false-false-project_def.prop + + + + diff --git a/test/RADemoTV/.rds_delta b/test/RADemoTV/.rds_delta new file mode 100644 index 0000000..c18d7b5 --- /dev/null +++ b/test/RADemoTV/.rds_delta @@ -0,0 +1,6 @@ +#delete +#add +#modify +author-signature.xml +signature1.xml +bin/rademotv diff --git a/test/RADemoTV/.sdk_delta.info b/test/RADemoTV/.sdk_delta.info new file mode 100644 index 0000000000000000000000000000000000000000..00f10e7a2e38ec96ba646dd0983812d36d07588d GIT binary patch literal 5889 zcmai2O^h7H6@D{oo7wdbYqP8|2^es~Pr@|2OX7t55yyrYN4A0i&u#*=d%A08dbg*$ zU0v<2q6xZA~YCUmF{Z4|Xo=&%hr1pqB#sh!z}iEls34@1;yPJKtMUbyLv$p$hwPA_dde&!2eW zMo9yOaU0PgC-wX-uP@q}@`kmAjmC#xUMq>9u|xAjEvNRL3hzyK=D7D_BnyrVGB*&B z^4Oiu$E{QEmb8{ZN8h(QS+F&tJ7L^QShLYwdF!i^3m#Qw4ifEkGK^Py*wmq1|NEb= z-d8dg%2qe~=jfm_^y085GUX_9tj(3T|5Gv_KwI_wAkmVSt3e{$+JdKYDV%G=$aIQ@ zCk)|3h$|~rt&(pUl7|Utq3Xa+rp5l!L){#}sLzOQ-k&;Zd}SP5p#4r9#+x3Znr4RU z?XS<4tZ$>$DXIZK7D|4U=eU+tJ31?X85IvB{J{AMgG!l;V0xURnwY}=BI4f;W4iUaB zvm2h8M+}GIK&z4(ylJ#?rS z28lbsWJE$b=Ax^U1hHVeiX^FmXwnVOcbH6co#=3;5{W7^&4{4_lYxo2bx?l|dKJ`5 z5GYUfg_;o|q!A0ghgovIxEiQ2j6+zb&z*8F3SE*p zww-rB{m12!0|w)Eh&|sISr&G~C{#POqV<=5SL+Wf#$tmGX1)|6cBMdy%c+XTm`}7a zM~i-r_zvBk^o9b-q$ho}nmUFVBpu@-h8_qQ3e#ffHVt@;=P-@hr!eljiG*ubOJFjd zN3L{pr4Zkdkutu9V^yKhn!}jHz*9nnJd#NPNQ@&yw*{i-<&iNRM(6m>xT8sPVO%c> zGdk6h)8tiT!EnbNx$O>$d9V%^17y5_`DUS2vC4d+HH;T=!DMGiE`7ack7`Y)_2#~+ z*5EwBSUO-&sak<<8IR9MsagTo8JA|KR4qzbLUd(jO4Sw4prtR6XdjGtmGSrkqdzM2jS<7Z>j zFj>Zyn2S@<#57Fu!C@?8ci&ygmOrcZ6MSPF9pBvts4%0h*Dq{+a-$@|S;mtXC-3eC z{rs_4UoT0ZFn&H|cdu2Q`FoxQqd?W_KThGYlB+Os3~Fonzh4x@;&b^M(J#g_ZZa@O znM-unc*afAL17$2+;Ix^vT)N$SJx1nBgOvz!h7!@t(*aeare{=owNZS;~Ud6bW#K& zPF+Wb5)7PH^#ktXKx4ebl1TKFRRS90WlZ|Wik7TeHQ+H^*2u6w zu-gHTaT#0U$WESGjex}Pu*kbAb~Ckun;RY%tST@WT}+@Z<({u}>bQO=eaLl3z86K- zKA>axME6hKbB1J7{A1RpA9@If_gUR zZl1eY67FRpR%&DSt4nA8!5gjeJGx<z}s)a;r-!wZlY*f)2d z_9nO9<4i`48hdT&{Q1ff{#T%C^&j`ojlH($&@CNq>NntK`|}%`1DwTAwPSx|p2rG$ zaY9+Y5UzbykcpltTiu+SavrNy2 + + + + + +6/NykFU4nuwn7JChNFNW40LmK7FZetyAgLHXLXhTzuI= + + + +UKIioAnp7EOVknfT7GrjomHAlbgVXDnljL9GL8ItOw0= + + + +gI5K8dcngljoGhr5KuyKw0Aqhq9ZnykoMcU7F5XakDs= + + + +2ldDLlV6LpIOqzFAJ1CybgkAf/S/sznZPqKzCVSqhrU= + + + ++IafhrGsAODlcITwxeT98j/lOAyT0HbPTZo4jttnFHE= + + + +Y6myUm14hX/nPMj+RLmYGRA7KN5+mU1F3SmxR9iORTQ= + + + +YejJZt9nNb9xQwV5qenq93ezIbuxC8ZyZVwTgMByPvg= + + + +SMBg7AWZVOu3YPjwx61tdpLIuMlgokp3aPBLj7wRlGI= + + + +ghgPMHrtivgImJpXjaPLjklLDOT/WIa0R8zWxNJTt18= + + + +Zw9k6AyPpFzAvyRVvdrGZpRZmca1C6mUYCaCQtKC7Q0= + + + +V4ihVvVB4A6jNxoD5FCJG20I5zqFv2IncqF5vzACvEA= + + + +ETR+/vrHSGsgqBk+2/qcFgenAno0K/rt6+RSMMA+3oE= + + + +VBhkh+VhOjOqTeXoy8OKkrSjrlGPqdmrkc6HbSJjRFg= + + + +x6Gjo2Ll1KzMWaT9R0+Q0O79T4Rq+DGCP29zIvW1Vmo= + + + +mYnkdwSLROPeT/XcO0miEa+qr2ezQ8Cq2IdB/MLRGU4= + + + +CxiRjdTnu+cPuDgCWPwRjALTI0bmUow2KWlLpfKMNBk= + + + +/6zSt3lcSoIucq46eFb6k4dkMcqaTvnqcbXI/MThxp0= + + + +tBixjttIXfanmUvxmDRq2ezNK/KfDbRq/aYSQ3OXR2w= + + + +WGhT3oJZtw3KwIyZpxTsgYYprqZX4G7O0tYFFgbuZAM= + + + +mSgblCuD523ZVKO7OZcVu1kxhLVB/Ok/YTn6d+gNjl0= + + + +trJ6JwE5vDCxOzBy58lT8mZo8oFej7lYcXA8aM9LrbA= + + + +1/p9dJr33nY1C0XgKEdCpZrZUb8t5qXaihqd6/pCiE4= + + + +ZJMOojE8pcti4mJJDD/iNw8d0k139TVGwzwEpGNbNyQ= + + + +0iTqeav2g4RFtoy07o/daD1pm40RTbXVb2/E6Jt25Dk= + + + +oZb4hdBo7gfvHQp3Phmi7OrQvOTkYebs+cj0CUB55wQ= + + + +ls9i8E/7YfyG+yCzw/XQC8as8ooSZNM8ItkTCvG3AQ0= + + + +rdOHCvLX1D/a4sN49GMCPTDj4spKyHjgXrcTvDmtHmI= + + + +yT6Ox68AGW/HIfljsxpDJ0/42qHiF0sSTOPCj0hDChM= + + + +zY+RgwVhayMhI8gOpkbxqIKV8/Sqe8uUkf/hn4wUZcQ= + + + +9DwesXg1NEg1AEHfbtrY6C9YwJoypEr2v6hOyWHW6i8= + + + +1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs= + + + +hf3BnDDOp8ZyVZbapG4QNDJtBWqH8Qa24aJD4/kN4dY= + + + + + + +lpo8tUDs054eLlBQXiDPVDVKfw30ZZdtkRs1jd7H5K8= + + + +o9X1remP0l3i/1LdxaKEtQungByfq6filBpnmxprmlrLGlbJ8NvlYwLGbiESY21gHajumW4Zyn// +c/iy8VFQOX04y9Nk2cxLO2Ut3RjUIakHyk32y+KgoBlRZAusGD1EQ/zu0noLLbiSzZcFhe96NO+d +b74qVqwdHfy9tYxkyao= + + + + +MIIClTCCAX2gAwIBAgIGAVWW5WFDMA0GCSqGSIb3DQEBBQUAMFYxGjAYBgNVBAoMEVRpemVuIEFz +c29jaWF0aW9uMRowGAYDVQQLDBFUaXplbiBBc3NvY2lhdGlvbjEcMBoGA1UEAwwTVGl6ZW4gRGV2 +ZWxvcGVycyBDQTAeFw0xMjExMDEwMDAwMDBaFw0xOTAxMDEwMDAwMDBaMBExDzANBgNVBAMMBmF1 +dGhvcjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEApQoQG76AhcGiaETu54POHH1PJlQRJk6y ++e6WWnbO6rc9HxFyA/37KdPO8okqiifUw9q9gRT3vN5dk5QHcS7dtsWcN4wmpf/gunezYMFc76q+ +BR1xEt3di0TSROqHrD+3yS4tyKVSlaXtPFIyR5RMAI3X3k1np9/1SWjpEAt9mskCAwEAAaMyMDAw +DAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMwDQYJKoZIhvcN +AQEFBQADggEBAC+4orztdjnriaP3CHkHMGmNU9VxhfXZqMM8zycz3HYhfffUkWYKKsT+1ZQisKON +3odhBQGDgQussm9PpQFyQ1epkeLbVTDXRwSE4vAiJpZwKRVmcHzi8/l9i4DxvecI5RgAX1BBBUCw +6FRDlLmJ2Kvz6wVS8CTRsXp6DyDMQl6OkmMwKbvAGFhpbVmy8l6G+QEpTsU4WY9gigHjJ2tafVI7 +XREhC+8+BrViOTNx7FxqXgoD+cSb8UUEtqSb6H72XQZLgW2FK1WvWzMCyseE2wzi9dUCgAtdF5tI +FGEd9WPy119WDEzes8sAdkeCxGtiycN99kP/m/2j3Ubt2G7E6LA= + + +MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMRowGAYDVQQKDBFUaXplbiBBc3NvY2lh +dGlvbjEaMBgGA1UECwwRVGl6ZW4gQXNzb2NpYXRpb24xHjAcBgNVBAMMFVRpemVuIERldmVsb3Bl +cnMgUm9vdDAeFw0xMjAxMDEwMDAwMDBaFw0yNzAxMDEwMDAwMDBaMFYxGjAYBgNVBAoMEVRpemVu +IEFzc29jaWF0aW9uMRowGAYDVQQLDBFUaXplbiBBc3NvY2lhdGlvbjEcMBoGA1UEAwwTVGl6ZW4g +RGV2ZWxvcGVycyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANVGhRGmMIUyBA7o +PCz8Sxut6z6HNkF4oDIuzuKaMzRYPeWodwe9O0gmqAkToQHfwg2giRhE5GoPld0fq+OYMMwSasCu +g8dwODx1eDeSYVuOLWRxpAmbTXOsSFi6VoWeyaPEm18JBHvZBsU5YQtgZ6Kp7MqzvQg3pXOxtajj +vyHxiatJl+xXrHgcXC1wgyG3buty7u/Fi2mvKXJ0PRJcCjjK81dqe/Vr20sRUCrbk02zbm5ggFt/ +jIEhV8wbFRQpliobc7J4dSTKhFfrqGM8rdd54LYhD7gSI1CFSe16pUXfcVR7FhJztRaiGLnCrwBE +dyTZ248+D4L/qR/D0axb3jcCAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOC +AQEAnOXXQ/1O/QTDHyrmQDtFziqPY3xWlJBqJtEqXiT7Y+Ljpe66e+Ee/OjQMlZe8gu21/8cKklH +95RxjopMWCVedXDUbWdvS2+CdyvVW/quT2E0tjqIzXDekUTYwwhlPWlGxvfj3VsxqSFq3p8Brl04 +1Gx5RKAGyKVsMfTLhbbwSWwApuBUxYfcNpKwLWGPXkysu+HctY03OKv4/xKBnVWiN8ex/Sgesi0M ++OBAOMdZMPK32uJBTeKFx1xZgTLIhk45V0hPOomPjZloiv0LSS11eyd451ufjW0iHRE7WlpR6EvI +W6TFyZgMpQq+kg4hWl2SBTf3s2VI8Ygz7gj8TMlClg== + + + + + \ No newline at end of file diff --git a/test/RADemoTV/.sign/signature1.xml b/test/RADemoTV/.sign/signature1.xml new file mode 100644 index 0000000..6a21c0d --- /dev/null +++ b/test/RADemoTV/.sign/signature1.xml @@ -0,0 +1,184 @@ + + + + + + +7K9ckaGz1GQydrpk8zkpnZw1mh7PkeJZQ41FJxuRd3Q= + + + +6/NykFU4nuwn7JChNFNW40LmK7FZetyAgLHXLXhTzuI= + + + +UKIioAnp7EOVknfT7GrjomHAlbgVXDnljL9GL8ItOw0= + + + +gI5K8dcngljoGhr5KuyKw0Aqhq9ZnykoMcU7F5XakDs= + + + +2ldDLlV6LpIOqzFAJ1CybgkAf/S/sznZPqKzCVSqhrU= + + + ++IafhrGsAODlcITwxeT98j/lOAyT0HbPTZo4jttnFHE= + + + +Y6myUm14hX/nPMj+RLmYGRA7KN5+mU1F3SmxR9iORTQ= + + + +YejJZt9nNb9xQwV5qenq93ezIbuxC8ZyZVwTgMByPvg= + + + +SMBg7AWZVOu3YPjwx61tdpLIuMlgokp3aPBLj7wRlGI= + + + +ghgPMHrtivgImJpXjaPLjklLDOT/WIa0R8zWxNJTt18= + + + +Zw9k6AyPpFzAvyRVvdrGZpRZmca1C6mUYCaCQtKC7Q0= + + + +V4ihVvVB4A6jNxoD5FCJG20I5zqFv2IncqF5vzACvEA= + + + +ETR+/vrHSGsgqBk+2/qcFgenAno0K/rt6+RSMMA+3oE= + + + +VBhkh+VhOjOqTeXoy8OKkrSjrlGPqdmrkc6HbSJjRFg= + + + +x6Gjo2Ll1KzMWaT9R0+Q0O79T4Rq+DGCP29zIvW1Vmo= + + + +mYnkdwSLROPeT/XcO0miEa+qr2ezQ8Cq2IdB/MLRGU4= + + + +CxiRjdTnu+cPuDgCWPwRjALTI0bmUow2KWlLpfKMNBk= + + + +/6zSt3lcSoIucq46eFb6k4dkMcqaTvnqcbXI/MThxp0= + + + +tBixjttIXfanmUvxmDRq2ezNK/KfDbRq/aYSQ3OXR2w= + + + +WGhT3oJZtw3KwIyZpxTsgYYprqZX4G7O0tYFFgbuZAM= + + + +mSgblCuD523ZVKO7OZcVu1kxhLVB/Ok/YTn6d+gNjl0= + + + +trJ6JwE5vDCxOzBy58lT8mZo8oFej7lYcXA8aM9LrbA= + + + +1/p9dJr33nY1C0XgKEdCpZrZUb8t5qXaihqd6/pCiE4= + + + +ZJMOojE8pcti4mJJDD/iNw8d0k139TVGwzwEpGNbNyQ= + + + +0iTqeav2g4RFtoy07o/daD1pm40RTbXVb2/E6Jt25Dk= + + + +oZb4hdBo7gfvHQp3Phmi7OrQvOTkYebs+cj0CUB55wQ= + + + +ls9i8E/7YfyG+yCzw/XQC8as8ooSZNM8ItkTCvG3AQ0= + + + +rdOHCvLX1D/a4sN49GMCPTDj4spKyHjgXrcTvDmtHmI= + + + +yT6Ox68AGW/HIfljsxpDJ0/42qHiF0sSTOPCj0hDChM= + + + +zY+RgwVhayMhI8gOpkbxqIKV8/Sqe8uUkf/hn4wUZcQ= + + + +9DwesXg1NEg1AEHfbtrY6C9YwJoypEr2v6hOyWHW6i8= + + + +1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs= + + + +hf3BnDDOp8ZyVZbapG4QNDJtBWqH8Qa24aJD4/kN4dY= + + + + + + +u/jU3U4Zm5ihTMSjKGlGYbWzDfRkGphPPHx3gJIYEJ4= + + + +G9pc7RO8mSwrw7f796Ngr1qU37WS3jRv9g8Sm5ugLxsJ23F6D3glkBRwiDvpTMc0/y/JtzINzCgs +ArloFO39fWP8kEKHcTkkVPXGED3D7jl3eVIYcIcgLD0iFsHFFzBHKRVIrZORmQIt9J3F6Ul8q9rQ +IwXK4ORO1aTjOqP6lgM= + + + + +MIICmzCCAgQCCQDXI7WLdVZwiTANBgkqhkiG9w0BAQUFADCBjzELMAkGA1UEBhMCS1IxDjAMBgNV +BAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6ZW4gVGVzdCBDQTEiMCAGA1UE +CwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwbVGl6ZW4gUHVibGljIERpc3Ry +aWJ1dG9yIENBMB4XDTEyMTAyOTEzMDMwNFoXDTIyMTAyNzEzMDMwNFowgZMxCzAJBgNVBAYTAktS +MQ4wDAYDVQQIDAVTdXdvbjEOMAwGA1UEBwwFU3V3b24xFjAUBgNVBAoMDVRpemVuIFRlc3QgQ0Ex +IjAgBgNVBAsMGVRpemVuIERpc3RyaWJ1dG9yIFRlc3QgQ0ExKDAmBgNVBAMMH1RpemVuIFB1Ymxp +YyBEaXN0cmlidXRvciBTaWduZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALtMvlc5hENK +90ZdA+y66+Sy0enD1gpZDBh5T9RP0oRsptJv5jjNTseQbQi0SZOdOXb6J7iQdlBCtR343RpIEz8H +mrBy7mSY7mgwoU4EPpp4CTSUeAuKcmvrNOngTp5Hv7Ngf02TTHOLK3hZLpGayaDviyNZB5PdqQdB +hokKjzAzAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAvGp1gxxAIlFfhJH1efjb9BJK/rtRkbYn9+Ez +GEbEULg1svsgnyWisFimI3uFvgI/swzr1eKVY3Sc8MQ3+Fdy3EkbDZ2+WAubhcEkorTWjzWz2fL1 +vKaYjeIsuEX6TVRUugHWudPzcEuQRLQf8ibZWjbQdBmpeQYBMg5x+xKLCJc= + + +MIICtDCCAh2gAwIBAgIJAMDbehElPNKvMA0GCSqGSIb3DQEBBQUAMIGVMQswCQYDVQQGEwJLUjEO +MAwGA1UECAwFU3V3b24xDjAMBgNVBAcMBVN1d29uMRYwFAYDVQQKDA1UaXplbiBUZXN0IENBMSMw +IQYDVQQLDBpUVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEpMCcGA1UEAwwgVGl6ZW4gUHVibGlj +IERpc3RyaWJ1dG9yIFJvb3QgQ0EwHhcNMTIxMDI5MTMwMjUwWhcNMjIxMDI3MTMwMjUwWjCBjzEL +MAkGA1UEBhMCS1IxDjAMBgNVBAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6 +ZW4gVGVzdCBDQTEiMCAGA1UECwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwb +VGl6ZW4gUHVibGljIERpc3RyaWJ1dG9yIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDe +OTS/3nXvkDEmsFCJIvRlQ3RKDcxdWJJp625pFqHdmoJBdV+x6jl1raGK2Y1sp2Gdvpjc/z92yzAp +bE/UVLPh/tRNZPeGhzU4ejDDm7kzdr2f7Ia0U98K+OoY12ucwg7TYNItj9is7Cj4blGfuMDzd2ah +2AgnCGlwNwV/pv+uVQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBACqJ +KO33YdoGudwanZIxMdXuxnnD9R6u72ltKk1S4zPfMJJv482CRGCI4FK6djhlsI4i0Lt1SVIJEed+ +yc3qckGm19dW+4xdlkekon7pViEBWuyHw8OWv3RXtTum1+PGHjBJ2eYY4ZKIpz73U/1NC16sTB/0 +VhfnkHwPltmrpYVe + + + + + \ No newline at end of file diff --git a/test/RADemoTV/.tproject b/test/RADemoTV/.tproject new file mode 100644 index 0000000..56660b2 --- /dev/null +++ b/test/RADemoTV/.tproject @@ -0,0 +1,12 @@ + + + + + mobile-3.0 + + + + + + + diff --git a/test/RADemoTV/Instruction.txt b/test/RADemoTV/Instruction.txt new file mode 100644 index 0000000..421e0fa --- /dev/null +++ b/test/RADemoTV/Instruction.txt @@ -0,0 +1,188 @@ +This is a simple Demo Application for FIDO Compliant Roaming Authenticator. +It shows single user Registration, Authentication and Deregistration for Client +device using Authenticator Device. + + +FIDO RA supports the following transport types for Peer to Peer communication: +1) IoTivity : + - Meant for Tizen 3.0+ Devices. + - Tested on TM1. + +2) Bluetooth (SDP + SPP) : + - Meant for Tizen 2.3+ Devices. + - Tested on TM1, 3.0. + +3) Bluetooth LE (untested) : + - Meant for Tizen 2.3+ Devices. + - Untested, due to issue in 3.0 TM1 in BLE. + +Based on the requirement please select one of the following steps: + + +================================================================================ +1) RA Over IoTivity +================================================================================ + +Before running,- +please make sure that /opt/dbspace/.fido_* is deleted on both devices +and only one type of RA agent(RA/BT/BLE) and Authenticator (PIN/Silent) is installed on the +Authenticator Device. + +(A) +[Pre-Condition] +- Two Tizen 3.0 TM1 Devices. +- Both should be connected to same Multicast AP. + +(B) +Build fido-asm SPIN, branch devel_3.0 + +(C) +- Lets assume Device1 will act as server, Device2 will act as Client. +- On Device1 install the following,- + - rpm -ivh fido_roaming_agent-0.0.1-1.armv7l.rpm + - rpm -ivh fido-asm-0.0.1-1.armv7l.rpm + - rpm -ivh fido_pin-0.0.1-1.armv7l.rpm + - org.tizen.asmui-0.0.1-1.armv7l.rpm + - chsmack -e System::Privileged /usr/bin/tpk-backend (this step is not needed) + - rpm -ivh org.tizen.asmui-0.0.1-1.armv7l.rpm + - tpk-backend -y org.tizen.asmui --preload + - sync + - reboot +- On Device2 install the following,- + - rpm -ivh fido-client-0.0.1-1.armv7l.rpm + - rpm -ev --nodeps dummyasm-0.0.1-1.armv7l + - rpm -ivh fido-asm-0.0.1-1.armv7l.rpm + - sync + - reboot + - DemoApp,- + - Import RADemoTV into Tizen Studio IDE. + - Make sure Device2 is not in root mode (sdb root off). + - Set certificate as manasij.p12 (password: manasij) + - Build for armv7l and run. + - For first run,- + - It will show "No Previous Registration". + - Click on "Register New User". + - Enter any user name and click ok. + - It will start Roaming Registration Flow. + - On Device1, "Setup New PIN" UI will appear, enter any 4 digit PIN and click on save. + - Device2 will show "Registered Successfully". + - Exit the app, from the next time,- + - The app will show Username in the Title Bar. + - Click on Authenticate, it will start the Authentication Flow. + - On Device1, "Verify PIN" UI will appear, enter the PIN saved during Registration. + - Device2 will show "Authenticated Successfully". + - You can also deregister, which deleted the key in remote and local devices. + + +================================================================================ +2) RA Over Bluetooth +================================================================================ + +Before running,- +please make sure that /opt/dbspace/.fido_* is deleted on both devices +and only one type of RA agent(RA/BT/BLE) and Authenticator (PIN/Silent) is installed on the +Authenticator Device. + +(A) +[Pre-Condition] +- Two Tizen 3.0 TM1 Devices. +- Both devices must be paired via BT (Settings->Bluetooth->Scan->Pair). +To enforce additional security, RA intentionally allows only pre-paired devices. + +(B) +Build fido-asm SPIN, branch devel_3.0 + +(C) +- Lets assume Device1 will act as server, Device2 will act as Client. +- On Device1 install the following,- + - rpm -ivh fido_bt_roaming_agent-0.0.1-1.armv7l.rpm + - rpm -ivh fido-asm-0.0.1-1.armv7l.rpm + - rpm -ivh fido_pin-0.0.1-1.armv7l.rpm + - org.tizen.asmui-0.0.1-1.armv7l.rpm + - chsmack -e System::Privileged /usr/bin/tpk-backend (this step is not needed) + - rpm -ivh org.tizen.asmui-0.0.1-1.armv7l.rpm + - tpk-backend -y org.tizen.asmui --preload + - sync + - reboot +- On Device2 install the following,- + - rpm -ivh fido-client-0.0.1-1.armv7l.rpm + - rpm -ev --nodeps dummyasm-0.0.1-1.armv7l + - rpm -ivh fido-asm-0.0.1-1.armv7l.rpm + - sync + - reboot + - DemoApp,- + - Import RADemoTV into Tizen Studio IDE. + - Make sure Device2 is not in root mode (sdb root off). + - Set certificate as manasij.p12 (password: manasij) + - Build for armv7l and run. + - If the server/client devices show BT message popup during the test, please accept. + - For first run,- + - It will show "No Previous Registration". + - Click on "Register New User". + - Enter any user name and click ok. + - It will start Roaming Registration Flow. + - On Device1, "Setup New PIN" UI will appear, enter any 4 digit PIN and click on save. + - Device2 will show "Registered Successfully". + - Exit the app, from the next time,- + - The app will show Username in the Title Bar. + - Click on Authenticate, it will start the Authentication Flow. + - On Device1, "Verify PIN" UI will appear, enter the PIN saved during Registration. + - Device2 will show "Authenticated Successfully". + - You can also deregister, which deleted the key in remote and local devices. + + +================================================================================ +3) RA Over BLE (Untested, Disabled) +================================================================================ + +Before running,- +please make sure that /opt/dbspace/.fido_* is deleted on both devices +and only one type of RA agent(RA/BT/BLE) and Authenticator (PIN/Silent) is installed on the +Authenticator Device. + +(A) +[Pre-Condition] +- Two Tizen 3.0 TM1 Devices. +- Both devices must be paired via BT (Settings->Bluetooth->Scan->Pair). +To enforce additional security, RA intentionally allows only pre-paired devices. + +(B) +Build fido-asm SPIN, branch devel_3.0 + +(C) +- Lets assume Device1 will act as server, Device2 will act as Client. +- On Device1 install the following,- + - rpm -ivh fido_ble_roaming_agent-0.0.1-1.armv7l.rpm + - rpm -ivh fido-asm-0.0.1-1.armv7l.rpm + - rpm -ivh fido_pin-0.0.1-1.armv7l.rpm + - org.tizen.asmui-0.0.1-1.armv7l.rpm + - chsmack -e System::Privileged /usr/bin/tpk-backend (this step is not needed) + - rpm -ivh org.tizen.asmui-0.0.1-1.armv7l.rpm + - tpk-backend -y org.tizen.asmui --preload + - sync + - reboot +- On Device2 install the following,- + - rpm -ivh fido-client-0.0.1-1.armv7l.rpm + - rpm -ev --nodeps dummyasm-0.0.1-1.armv7l + - rpm -ivh fido-asm-0.0.1-1.armv7l.rpm + - sync + - reboot + - DemoApp,- + - Import RADemoTV into Tizen Studio IDE. + - Make sure Device2 is not in root mode (sdb root off). + - Set certificate as manasij.p12 (password: manasij) + - Build for armv7l and run. + - If the server/client devices show BT message popup during the test, please accept. + - For first run,- + - It will show "No Previous Registration". + - Click on "Register New User". + - Enter any user name and click ok. + - It will start Roaming Registration Flow. + - On Device1, "Setup New PIN" UI will appear, enter any 4 digit PIN and click on save. + - Device2 will show "Registered Successfully". + - Exit the app, from the next time,- + - The app will show Username in the Title Bar. + - Click on Authenticate, it will start the Authentication Flow. + - On Device1, "Verify PIN" UI will appear, enter the PIN saved during Registration. + - Device2 will show "Authenticated Successfully". + - You can also deregister, which deleted the key in remote and local devices. diff --git a/test/RADemoTV/accessibility/screen_reader/custom_frame.edc b/test/RADemoTV/accessibility/screen_reader/custom_frame.edc new file mode 100644 index 0000000..c520bda --- /dev/null +++ b/test/RADemoTV/accessibility/screen_reader/custom_frame.edc @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +group { name: "custom_frame_layout"; + parts { + part { name: "bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 1; + color: BG_DEFAULT_COLOR_INC; + } + } + part { name: "button_name_lbl"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.0 0.05; + to: "bg"; + } + rel2 { + relative: 1.0 0.1; + to: "bg"; + } + } + } + part { name: "button_name"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.3 0.1; + to: "bg"; + } + rel2 { + relative: 0.7 0.2; + to: "bg"; + } + } + } + part { name: "button_custom_frame_lbl"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.3; + to: "bg"; + } + rel2 { + relative: 1.0 0.35; + to: "bg"; + } + visible: 1; + } + } + part { name: "button_custom_frame"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.2 0.35; + to: "bg"; + } + rel2 { + relative: 0.8 0.45; + to: "bg"; + } + visible: 1; + } + } + part { name: "button_custom_frame_lbl2"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.1 0.55; + to: "bg"; + } + rel2 { + relative: 0.9 0.6; + to: "bg"; + } + visible: 1; + } + } + part { name: "button_custom_frame2"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.2 0.6; + to: "bg"; + } + rel2 { + relative: 0.8 0.8; + to: "bg"; + } + visible: 1; + } + } + }//end parts +} //end group + diff --git a/test/RADemoTV/accessibility/screen_reader/description.edc b/test/RADemoTV/accessibility/screen_reader/description.edc new file mode 100644 index 0000000..4b7ed54 --- /dev/null +++ b/test/RADemoTV/accessibility/screen_reader/description.edc @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +group { name: "description_layout"; + parts { + part { name: "bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 1; + color: 200 200 200 255; + } + } + part { name: "button_name_lbl"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.0 0.05; + to: "bg"; + } + rel2 { + relative: 1.0 0.1; + to: "bg"; + } + } + } + part { name: "button_name"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.3 0.1; + to: "bg"; + } + rel2 { + relative: 0.7 0.2; + to: "bg"; + } + } + } + part { name: "button_description_lbl"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.3; + to: "bg"; + } + rel2 { + relative: 1.0 0.35; + to: "bg"; + } + visible: 1; + } + } + part { name: "button_description"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.3 0.35; + to: "bg"; + } + rel2 { + relative: 0.7 0.45; + to: "bg"; + } + visible: 1; + } + } + part { name: "button_a11y_name_lbl"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.1 0.55; + to: "bg"; + } + rel2 { + relative: 0.9 0.6; + to: "bg"; + } + visible: 1; + } + } + part { name: "button_a11y_name"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.3 0.6; + to: "bg"; + } + rel2 { + relative: 0.7 0.7; + to: "bg"; + } + visible: 1; + } + } + part { name: "button_empty_lbl"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.1 0.8; + to: "bg"; + } + rel2 { + relative: 0.9 0.85; + to: "bg"; + } + visible: 1; + } + } + part { name: "button_empty"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.4 0.85; + to: "bg"; + } + rel2 { + relative: 0.6 0.95; + to: "bg"; + } + visible: 1; + } + } + }//end parts +} //end group diff --git a/test/RADemoTV/accessibility/screen_reader/reading_order.edc b/test/RADemoTV/accessibility/screen_reader/reading_order.edc new file mode 100644 index 0000000..b706dea --- /dev/null +++ b/test/RADemoTV/accessibility/screen_reader/reading_order.edc @@ -0,0 +1,382 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +group { name: "reading_order_layout"; + + images.image: "../res/images/arrow-right.png" COMP; + images.image: "../res/images/arrow-left.png" COMP; + images.image: "../res/images/arrow-left1.png" COMP; + images.image: "../res/images/arrow-up.png" COMP; + images.image: "../res/images/arrow-down.png" COMP; + + parts { + part { name: "bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 1; + color: 200 200 200 255; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 1.0 1.0; + } + } + } + part { name: "bg_custom"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 1; + color: 89 205 255 255; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 1.0 0.5; + } + } + } + part { name: "bg_default"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 1; + color: 89 255 142 255; + rel1 { + relative: 0.0 0.5; + } + rel2 { + relative: 1.0 1.0; + } + } + } + part { name: "custom_lbl"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.05 0.05; + to: "bg"; + } + rel2 { + relative: 1.0 0.15; + to: "bg"; + } + } + } + part { name: "default_lbl"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.05 0.55; + to: "bg"; + } + rel2 { + relative: 1.0 0.65; + to: "bg"; + } + } + } + part { name: "button_a"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.1 0.15; + to: "bg"; + } + rel2 { + relative: 0.3 0.25; + to: "bg"; + } + } + } + part { name: "button_b"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.4 0.15; + to: "bg"; + } + rel2 { + relative: 0.6 0.25; + to: "bg"; + } + } + } + part { name: "button_c"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.7 0.15; + to: "bg"; + } + rel2 { + relative: 0.9 0.25; + to: "bg"; + } + } + } + part { name: "button_d"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.1 0.3; + to: "bg"; + } + rel2 { + relative: 0.3 0.4; + to: "bg"; + } + } + } + part { name: "button_e"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.4 0.3; + to: "bg"; + } + rel2 { + relative: 0.6 0.4; + to: "bg"; + } + } + } + + + + part { name: "button_default_a"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.1 0.65; + to: "bg"; + } + rel2 { + relative: 0.3 0.75; + to: "bg"; + } + } + } + part { name: "button_default_b"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.4 0.65; + to: "bg"; + } + rel2 { + relative: 0.6 0.75; + to: "bg"; + } + } + } + part { name: "button_default_c"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.7 0.65; + to: "bg"; + } + rel2 { + relative: 0.9 0.75; + to: "bg"; + } + } + } + part { name: "button_default_d"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.1 0.8; + to: "bg"; + } + rel2 { + relative: 0.3 0.9; + to: "bg"; + } + } + } + part { name: "button_default_e"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.4 0.8; + to: "bg"; + } + rel2 { + relative: 0.6 0.9; + to: "bg"; + } + } + } + part { name: "arrow_custom_label_d"; + description { + state: "default" 0.0; + image.normal: "../res/images/arrow-down.png"; + rel1 { + relative: 0.0 0.4; + to: "custom_lbl"; + } + rel2 { + relative: 0.0 0.0; + to: "button_d"; + } + } + } + part { name: "arrow_custom_b_c"; + description { + state: "default" 0.0; + image.normal: "../res/images/arrow-right.png"; + rel1 { + relative: 1.05 0.3; + to: "button_b"; + } + rel2 { + relative: -0.05 0.7; + to: "button_c"; + } + } + } + part { name: "arrow_custom_d_e"; + description { + state: "default" 0.0; + image.normal: "../res/images/arrow-right.png"; + rel1 { + relative: 1.05 0.3; + to: "button_d"; + } + rel2 { + relative: -0.05 0.7; + to: "button_e"; + } + } + } + part { name: "arrow_custom_e_b"; + description { + state: "default" 0.0; + image.normal: "../res/images/arrow-up.png"; + rel1 { + relative: 0.35 1.05; + to: "button_b"; + } + rel2 { + relative: 0.65 -0.05; + to: "button_e"; + } + } + } + + + part { name: "arrow_default_a_b"; + description { + state: "default" 0.0; + image.normal: "../res/images/arrow-right.png"; + rel1 { + relative: 1.05 0.3; + to: "button_default_a"; + } + rel2 { + relative: -0.05 0.7; + to: "button_default_b"; + } + } + } + part { name: "arrow_default_b_c"; + description { + state: "default" 0.0; + image.normal: "../res/images/arrow-right.png"; + rel1 { + relative: 1.05 0.3; + to: "button_default_b"; + } + rel2 { + relative: -0.05 0.7; + to: "button_default_c"; + } + } + } + + part { name: "arrow_default_d_e"; + description { + state: "default" 0.0; + image.normal: "../res/images/arrow-right.png"; + rel1 { + relative: 1.05 0.3; + to: "button_default_d"; + } + rel2 { + relative: -0.05 0.7; + to: "button_default_e"; + } + } + } + + part { name: "arrow_default_c_d"; + description { + state: "default" 0.0; + image.normal: "../res/images/arrow-left1.png"; + rel1 { + relative: 0.5 -0.5; + to: "button_default_d"; + } + rel2 { + relative: 0.5 1.5; + to: "button_default_c"; + } + } + } + + }//end parts +} //end group diff --git a/test/RADemoTV/button.edc b/test/RADemoTV/button.edc new file mode 100644 index 0000000..a8094c8 --- /dev/null +++ b/test/RADemoTV/button.edc @@ -0,0 +1,347 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#define BUTTON_PADDING_WIDTH 170 +#define BUTTON_PADDING_HEIGHT 22 + +group { name: "button_layout"; + parts { + part { name: "top_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 0 1; + rel2.relative: 1.0 0.0; + align: 0 0; + } + } + part { name: "btn_expand_opened"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "top_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "top_padding"; + } + } + } + part { name: "btn_expand_opened_bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + max: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.0 1.0; + to_y: "btn_expand_opened"; + } + rel2.to_y: "btn_expand_opened"; + } + } + part { name: "btn_expand_closed"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "btn_expand_opened_bottom_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "btn_expand_opened_bottom_padding"; + } + } + } + part { name: "btn_expand_closed_bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + max: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0 1.0; + to_y: "btn_expand_closed"; + } + rel2.to_y: "btn_expand_closed"; + } + } + part { name: "btn_reorder"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "btn_expand_closed_bottom_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "btn_expand_closed_bottom_padding"; + } + } + } + part { name: "btn_reorder_bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + max: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.0 1.0; + to_y: "btn_reorder"; + } + rel2.to_y: "btn_reorder"; + } + } + part { name: "btn_expand_add"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "btn_reorder_bottom_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "btn_reorder_bottom_padding"; + } + } + } + part { name: "btn_expand_add_bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + max: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.0 1.0; + to_y: "btn_expand_add"; + } + rel2.to_y: "btn_expand_add"; + } + } + part { name: "btn_expand_delete"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "btn_expand_add_bottom_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "btn_expand_add_bottom_padding"; + } + } + } + part { name: "btn_expand_delete_bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + max: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.0 1.0; + to_y: "btn_expand_delete"; + } + rel2.to_y: "btn_expand_delete"; + } + } + part { name: "btn_default"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "btn_expand_delete_bottom_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "btn_expand_delete_bottom_padding"; + } + } + } + part { name: "btn_default_bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + max: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.0 1.0; + to_y: "btn_default"; + } + rel2.to_y: "btn_default"; + } + } + part { name: "btn_circle"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "btn_default_bottom_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "btn_default_bottom_padding"; + } + } + } + part { name: "btn_circle_bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + max: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.0 1.0; + to_y: "btn_circle"; + } + rel2.to_y: "btn_circle"; + } + } + part { name: "btn_bottom"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + state: "default" 0.0; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "btn_circle_bottom_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "btn_circle_bottom_padding"; + } + } + } + part { name: "btn_bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + max: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.0 1.0; + to_y: "btn_bottom"; + } + rel2.to_y: "btn_bottom"; + } + } + part { name: "btn_circle_text"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + state: "default" 0.0; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "btn_bottom_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "btn_bottom_padding"; + } + } + } + part { name: "btn_circle_text_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + max: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.0 1.0; + to_y: "btn_circle_text"; + } + rel2.to_y: "btn_circle_text"; + } + } + part { name: "btn_contacts"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + state: "default" 0.0; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "btn_circle_text_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "btn_circle_text_padding"; + } + } + } + part { name: "bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 0 BUTTON_PADDING_HEIGHT; + align: 0.5 1.0; + rel1 { + relative: 0.0 1.0; + to_y: "btn_contacts"; + } + } + } + } +} + +#undef BUTTON_PADDING_WIDTH +#undef BUTTON_PADDING_HEIGHT diff --git a/test/RADemoTV/datetime.edc b/test/RADemoTV/datetime.edc new file mode 100644 index 0000000..231ab79 --- /dev/null +++ b/test/RADemoTV/datetime.edc @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#define DATETIME_PADDING_HEIGHT 50 +#define DATETIME_TOP_PADDING_HEIGHT 30 +#define DATETIME_PICKER_PADDING_HEIGHT 100 +#define DATETIME_BUTTON_WIDTH 550 +#define DATETIME_TEXT_HEIGHT 60 +#define DATETIME_TEXT_COLOR 173 170 165 255 +#define DATETIME_TEXT_SIZE 24 + +#define DATETIME_PICKER(_pos, _after, str)\ + part { name: "picker"#_pos;\ + type: SWALLOW;\ + scale: 1;\ + description { state: "default" 0.0;\ + align: 0.5 0.0;\ + fixed: 1 1;\ + rel1 {\ + relative: 0 1;\ + to: "text"#_pos;\ + }\ + rel2 {\ + relative: 1 1;\ + to: "text"#_pos;\ + }\ + }\ + }\ + part { name: "text"#_pos;\ + type: TEXT;\ + scale: 1;\ + description { state: "default" 0.0;\ + align: 0.5 0.0;\ + fixed: 0 1;\ + min: 0 DATETIME_PADDING_HEIGHT;\ + rel1 {\ + relative: 0 1;\ + to: "padding"#_after;\ + }\ + rel2 {\ + relative: 1 1;\ + to: "padding"#_after;\ + }\ + color: DATETIME_TEXT_COLOR;\ + text {\ + font: "Tizen:style=Regular";\ + size: DATETIME_TEXT_SIZE;\ + min: 1 0;\ + align: 0.0 0.0;\ + text: str;\ + ellipsis: -1; \ + }\ + }\ + }\ + part { name: "padding"#_pos;\ + type: SPACER;\ + scale: 1;\ + description { state: "default" 0.0;\ + min: 0 DATETIME_PADDING_HEIGHT;\ + fixed: 0 1;\ + align: 0.5 0.0;\ + rel1 {\ + relative: 0.0 1.0;\ + to_x: "padding"#_after;\ + to_y: "picker"#_pos;\ + }\ + rel2 {\ + relative: 1.0 1.0;\ + to_x: "padding"#_after;\ + to_y: "picker"#_pos;\ + }\ + }\ + } + +group { name: "datetime_layout"; + parts { + part { name: "padding0"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 0 DATETIME_TOP_PADDING_HEIGHT; + fixed: 0 1; + align: 0.5 0.0; + rel1.relative: 0 0; + rel2.relative: 1 0; + } + } + DATETIME_PICKER(1, 0, " Date Time (12hr) :") + DATETIME_PICKER(2, 1, " Date Time (24hr) :") + DATETIME_PICKER(3, 2, " Time Date (12hr) :") + DATETIME_PICKER(4, 3, " Time Date (24hr) :") + DATETIME_PICKER(5, 4, " User format changed as per System's Region format :") + DATETIME_PICKER(6, 5, " Datetime widget with field limits :") + part { name: "bottom.padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 0 DATETIME_TOP_PADDING_HEIGHT; + align: 0.5 1.0; + rel1 { + to: "padding6"; + relative: 0 1; + } + } + } + } +} + +#undef DATETIME_PICKER +#undef DATETIME_PADDING_HEIGHT +#undef DATETIME_PICKER_PADDING_HEIGHT +#undef DATETIME_BUTTON_WIDTH +#undef DATETIME_TOP_PADDING_HEIGHT +#undef DATETIME_TEXT_HEIGHT +#undef DATETIME_TEXT_COLOR +#undef DATETIME_TEXT_SIZE diff --git a/test/RADemoTV/default/inc/my_button_header.edc b/test/RADemoTV/default/inc/my_button_header.edc new file mode 100644 index 0000000..7e3001e --- /dev/null +++ b/test/RADemoTV/default/inc/my_button_header.edc @@ -0,0 +1,61 @@ +#define BASE_SCALE_INC 2.6 +#define SMALL "HD/" +#define MEDIUM "HD/" +#define DEFAULT_IMAGE "HD/" + +#define BG_DEFAULT_COLOR_INC 248 246 239 255 +#define BG_EDIT_MODE_COLOR_INC 248 246 239 255 +#define BG_GROUP_LIST_COLOR_INC 248 246 239 255 +#define BG_TRANSPARENT_COLOR_INC 0 0 0 0 +#define BORDER_BG_COLOR_INC 248 246 239 255 +#define BORDER_FONT_COLOR_INC 59 115 182 255 +#define BORDER_FONT_SIZE_INC 42 +#define BORDER_HEIGHT_INC 80 +#define BORDER_ICON_PADDING_WIDTH 8 +#define BORDER_ICON_SIZE 36 36 +#define BORDER_PADDING_WIDTH 20 +#define BORDER_SHADOW_HEIGHT 20 +#define BORDER_TITLE_FONT_SIZE_INC 12 +#define BORDER_TITLE_HEIGHT_INC 22 + +#define BUTTON_ANCHOR_BG_BORDER 20 20 22 22 +#define BUTTON_ANCHOR_COLOR_TRANSPARENT 0 0 0 0 +#define BUTTON_ANCHOR_PADDING_DEFAULT_SIZE 10 +#define BUTTON_ICON_DEFAULT_HEIGHT_INC 60 +#define BUTTON_ICON_DEFAULT_WIDTH_INC 60 +#define BUTTON_MIN_HEIGHT_INC 78 +#define BUTTON_MIN_WIDTH_INC 50 +#define BUTTON_PADDING_BOTTOM_HEIGHT_INC 14 +#define BUTTON_PADDING_ICON_RIGHT_INC 14 +#define BUTTON_PADDING_LEFT_ICON_TEXT_INC 56 +#define BUTTON_PADDING_LEFT_RIGHT_INC 32 +#define BUTTON_PADDING_TOP_HEIGHT_INC 10 +#define BUTTON_TEXT_SHADOW_NORMAL_COLOR_INC 255 255 255 255 +#define BUTTON_TEXT_STYLE1_FONT_SIZE_INC 36 +#define BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC 58 58 58 255 +#define BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC 148 74 + +#define STYLE_TAGS \ + tag: "br" "\n";\ + tag: "ps" "ps";\ + tag: "tab" "\t";\ + tag: "b" "+ font_weight=Bold"; + +#define STYLE_TAG_MATCH \ + tag: "match" "+ color=#3db8cc"; + +styles { + // ************* button text ********** // + style { name: "button_main"; + base: "align=center valign=center color=#fafafaff font=Tizen:style=Regular font_size=30 text_class=tizen ellipsis=1.0"; + STYLE_TAGS + } + style { name: "button_main_dim"; + base: "align=center valign=center color=#fafafaa3 font=Tizen:style=Regular font_size=30 text_class=tizen ellipsis=1.0"; + STYLE_TAGS + } + style { name: "button_main_press"; + base: "align=center valign=center color=#fafafaff font=Tizen:style=Regular font_size=30 text_class=tizen ellipsis=1.0"; + STYLE_TAGS + } +} diff --git a/test/RADemoTV/default/my_button.edc b/test/RADemoTV/default/my_button.edc new file mode 100644 index 0000000..b69b2b8 --- /dev/null +++ b/test/RADemoTV/default/my_button.edc @@ -0,0 +1,709 @@ +group { name: "elm/button/base/custom1"; + data { + item: "access_highlight" "on"; + } + images { + image: "../res/images/btn_style_nor.png" COMP; + image: "../res/images/btn_style_sel.png" COMP; + image: "../res/images/custom_highlight.png" COMP; + } + parts { + part { name: "button_image"; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + min: BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC; + visible: 0; + image { + normal: "../res/images/btn_style_nor.png"; + border: BUTTON_ANCHOR_BG_BORDER; + middle: SOLID; + } + } + description { state: "visible" 0.0; + visible: 1; + min: BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC; + color_class: "W012"; + image { + normal: "../res/images/btn_style_nor.png"; + border: BUTTON_ANCHOR_BG_BORDER; + border_scale: 1; + } + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + description { state: "default" 0.0; + fixed: 1 0; + visible: 0; + align: 0.0 0.5; + rel2.relative: 0.0 1.0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + fixed: 1 0; + visible: 1; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + fixed: 0 0; + visible: 1; + align: 0.5 0.5; + aspect: 1.0 1.0; + rel2.relative: 1.0 1.0; + aspect_preference: VERTICAL; + } + } + part { name: "elm.padding.text.left"; + type: SPACER; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0 0.5; + fixed: 1 0; + min: BUTTON_ANCHOR_PADDING_DEFAULT_SIZE 0; + rel1 { + to: "elm.swallow.content"; + relative: 1 0; + } + rel2 { + to: "elm.swallow.content"; + relative: 1 1; + } + } + } + part { name: "elm.padding.text.right"; + type: SPACER; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1 0.5; + rel1.relative: 1 0; + fixed: 1 0; + min: BUTTON_ANCHOR_PADDING_DEFAULT_SIZE 10; + } + } + part { name: "elm.text"; + type: TEXT; + mouse_events: 0; + scale: 1; + effect: SHADOW BOTTOM; + description { state: "default" 0.0; + rel1 { + to_x: "elm.padding.text.left"; + relative: 1 0; + } + rel2 { + to : "elm.padding.text.right"; + relative: 0 1; + } + color: BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC; + color2: BUTTON_TEXT_SHADOW_NORMAL_COLOR_INC; + text { + font: "SLP:style=Regular"; + size: BUTTON_TEXT_STYLE1_FONT_SIZE_INC; + min: 0 0; + text_class: "slp"; + } + } + } + part { name: "over"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: BUTTON_ANCHOR_COLOR_TRANSPARENT; + } + } + part { name: "disabler"; + type: RECT; + description { state: "default" 0.0; + color: BUTTON_ANCHOR_COLOR_TRANSPARENT; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "highlight_base"; type: RECT; + clip_to: "highlight_clip"; + description { state: "default" 0.0; + visible: 0; + } + } + part { name: "highlight_clip"; type: RECT; + scale: 1; + description { + state: "default" 0.0; + color: 255 255 255 255; + rel1.relative: -1 -1; + rel2.relative: 2 2; + } + } + + part { name: "highlight"; + clip_to: "highlight_clip"; + description { state: "default" 0.0; + image.normal: "../res/images/custom_highlight.png"; + image.border: 12 12 12 12; + image.middle: 0; + fill.smooth: 0; + rel1.to: "highlight_base"; + rel1.offset: -7 -7; + rel2.to: "highlight_base"; + rel2.offset: 5 5; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + + + programs { + program { name: "button_mouse_in"; + signal: "mouse,in"; + source: "over"; + action: STATE_SET "visible" 0.0; + target: "button_image"; + target: "elm.text"; + } + program { name: "button_mouse_out"; + signal: "mouse,out"; + source: "over"; + action: STATE_SET "default" 0.0; + target: "button_image"; + target: "elm.text"; + } + program { name: "button_unclick"; + signal: "mouse,up,1"; + source: "over"; + action: STATE_SET "visible" 0.0; + target: "button_image"; + target: "elm.text"; + } + program { name: "button_click2"; + signal: "mouse,down,1"; + source: "over"; + action: STATE_SET "clicked" 0.0; + target: "button_image"; + target: "elm.text"; + } + program { name: "button_unclick2"; + signal: "mouse,up,1"; + source: "over"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.5; + target: "button_image"; + target: "elm.text"; + } + program { name: "button_unclick3"; + signal: "mouse,up,1"; + source: "over"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "icononly")) { + set_state(PART:"elm.swallow.content", "visible", 0.0); + } + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "disabled") || (!strcmp(st, "disabled_visible"))) + set_state(PART:"elm.text", "disabled_visible", 0.0); + else + set_state(PART:"elm.text", "visible", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) { + set_state(PART:"elm.swallow.content", "visible", 0.0); + } + else { + set_state(PART:"elm.swallow.content", "icononly", 0.0); + } + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + script { + new st[31]; + new Float:vl; + set_state(PART:"button_image", "visible", 0.0); + set_state(PART:"over", "visible", 0.0); + set_state(PART:"disabler", "visible", 0.0); + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible") || !strcmp(st, "disabled_visible")) + set_state(PART:"elm.text", "visible", 0.0); + else + set_state(PART:"elm.text", "default", 0.0); + } + } + program { name: "show_new_highlight"; + signal: "elm,action,access_highlight,show"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "highlight"; + } + program { name: "hide_new_highlight"; + signal: "elm,action,access_highlight,hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "highlight"; + } + } + +} + +group { name: "elm/button/base/custom2"; + data.item: "vector_ux" "default"; + data.item: "access_highlight" "on"; + images.image: "../res/images/custom_highlight2.png" COMP; + script { + public mouse_down = 0; + public multi_down = 0; + public disabled = 0; + public text = 0; + public content = 0; + } + parts { + part { name: "base"; + scale: 1; + type: SPACER; + description { state: "default" 0.0; + min: BUTTON_MIN_WIDTH_INC BUTTON_MIN_HEIGHT_INC; + } + } + //Base Shape Part + part { name: "tizen_vg_shape"; + type: SWALLOW; + clip_to: "tizen_vg_shape_clipper"; + scale: 1; + description { state: "default" 0.0; + min: 0 BUTTON_MIN_HEIGHT_INC; + rel1.relative: 0 0.5; + rel2.relative: 1 0.5; + fixed: 0 1; + } + } + part { name: "tizen_vg_shape_clipper"; + type: RECT; + description { state: "default" 0.0; + color: 82 198 216 255; + } + description { state: "disabled" 0.0; + color: 138 195 204 255; + } + } + //Effect Shape Part + part { name: "tizen_vg_shape2"; + type: SWALLOW; + clip_to: "tizen_vg_shape_clipper2"; + scale: 1; + description { state: "default" 0.0; + rel1.to: "tizen_vg_shape"; + rel2.to: "tizen_vg_shape"; + rel1.relative: 0.15 0.15; + rel2.relative: 0.85 0.85; + } + description { state: "ready" 0.0; + inherit: "default" 0.0; + } + description { state: "pressed" 0.0; + inherit: "default" 0.0; + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 1.0; + } + } + part { name: "tizen_vg_shape_clipper2"; + type: RECT; + description { state: "default" 0.0; + visible: 0; + color: 48 139 153 0; + } + description { state: "ready" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "pressed" 0.0; + color: 48 139 153 255; + } + } + part { name: "padding_left_top"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + rel1.to: "tizen_vg_shape"; + rel2.to: "tizen_vg_shape"; + align: 0.0 0.0; + rel2.relative: 0.0 0.0; + min: BUTTON_PADDING_LEFT_RIGHT_INC BUTTON_PADDING_TOP_HEIGHT_INC; + fixed: 1 1; + } + description { state: "icon_only" 0.0; + inherit: "default" 0.0; + min: 0 0; + } + description { state: "icon_text" 0.0; + inherit: "default" 0.0; + min: BUTTON_PADDING_LEFT_ICON_TEXT_INC BUTTON_PADDING_TOP_HEIGHT_INC; + } + } + part { name: "padding_right_bottom"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + rel1.to: "tizen_vg_shape"; + rel2.to: "tizen_vg_shape"; + align: 1.0 1.0; + rel1.relative: 1.0 1.0; + min: BUTTON_PADDING_LEFT_RIGHT_INC BUTTON_PADDING_BOTTOM_HEIGHT_INC; + fixed: 1 1; + } + description { state: "icon_only" 0.0; + inherit: "default" 0.0; + min: 0 0; + } + } + part { name: "icon_rect"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + min: 0 BUTTON_ICON_DEFAULT_HEIGHT_INC; + fixed: 1 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: BUTTON_ICON_DEFAULT_WIDTH_INC BUTTON_ICON_DEFAULT_HEIGHT_INC; + fixed: 1 1; + } + description { state: "icon_only" 0.0; + rel1.to: "tizen_vg_shape"; + rel2.to: "tizen_vg_shape"; + min: BUTTON_ICON_DEFAULT_WIDTH_INC BUTTON_ICON_DEFAULT_HEIGHT_INC; + max: BUTTON_ICON_DEFAULT_WIDTH_INC BUTTON_ICON_DEFAULT_HEIGHT_INC; + align: 0.5 0.5; + fixed: 1 1; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + rel1.to: "icon_rect"; + rel2.to: "icon_rect"; + } + } + part { name: "icon_text_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + align: 0.0 0.5; + min: 0 0; + rel1 { + relative: 1.0 0.0; + to: "icon_rect"; + } + rel2 { + relative: 1.0 1.0; + to: "icon_rect"; + } + fixed: 1 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: BUTTON_PADDING_ICON_RIGHT_INC 0; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + rel1 { + relative: 1.0 0.0; + to: "icon_text_padding"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + text { + style: "button_main"; + } + } + description { state: "pressed" 0.0; + inherit: "default" 0.0; + text.style: "button_main_press"; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + text.style: "button_main_dim"; + } + } + part { name: "clipper"; + type: RECT; + description { state: "default" 0.0; + } + description { state: "pressed" 0.0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: 255 255 255 163; + } + } + part { name: "event"; + type: RECT; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + rel1.to: "tizen_vg_shape"; + rel2.to: "tizen_vg_shape"; + color: 0 0 0 0; + } + } + part { name: "highlight_clip"; type: RECT; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 1.0 0.0; + to: "icon_text_padding"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + } + } + part { name: "highlight_base"; type: RECT; + clip_to: "highlight_clip"; + description { state: "default" 0.0; + visible: 0; + } + } + part { name: "highlight"; + clip_to: "highlight_clip"; + description { state: "default" 0.0; + image.normal: "../res/images/custom_highlight2.png"; + image.border: 10 10 10 10; + image.middle: 0; + fill.smooth: 0; + rel1.to: "elm.text"; + rel1.offset: 30 5; + rel2.to: "elm.text"; + rel2.offset: -30 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { name: "clicked_effect"; + action: STATE_SET "ready" 0.0; + target: "tizen_vg_shape2"; + target: "tizen_vg_shape_clipper2"; + after: "clicked_effect2"; + } + program { name: "clicked_effect2"; + script { + run_program(PROGRAM:"clicked_effect3"); + run_program(PROGRAM:"clicked_effect4"); + } + } + program { name: "clicked_effect3"; + action: STATE_SET "pressed" 0.0; + target: "tizen_vg_shape2"; + target: "elm.text"; + target: "clipper"; + transition: DECELERATE 0.3; + } + program { name: "clicked_effect4"; + action: STATE_SET "pressed" 0.0; + target: "tizen_vg_shape_clipper2"; + transition: DECELERATE 0.225; + after: "clicked_effect5"; + } + program { name: "clicked_effect5"; + action: STATE_SET "ready" 0.0; + target: "tizen_vg_shape_clipper2"; + transition: LINEAR 0.45; + after: "clicked_effect6"; + } + program { name: "clicked_effect6"; + action: STATE_SET "default" 0.0; + target: "tizen_vg_shape2"; + target: "tizen_vg_shape_clipper2"; + target: "elm.text"; + target: "clipper"; + } + program { name: "pressed"; + signal: "mouse,down,1*"; + source: "event"; + script { + if ((get_int(multi_down) == 0) && (get_int(mouse_down) == 0)) { + set_int(mouse_down, 1); + if (get_int(disabled) == 0) { + emit("elm,action,press", ""); + run_program(PROGRAM:"clicked_effect"); + } + } + } + } + program { name: "unpressed"; + signal: "mouse,up,1"; + source: "event"; + script { + if (get_int(mouse_down) == 1) { + set_int(mouse_down, 0); + if (get_int(disabled) == 0) { + emit("elm,action,unpress", ""); + } + } + } + } + program { name: "touch_snd"; + signal: "mouse,clicked,1"; + source: "event"; + script { + if (get_int(multi_down) == 0) { + if (get_int(disabled) == 0) { + run_program(PROGRAM:"touch_sound"); + emit("elm,action,click", ""); + } + } + } + } + program { name: "touch_sound"; + action: RUN_PLUGIN "touch_sound"; + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + set_int(content, 1); + set_state(PART:"icon_text_padding", "visible", 0.0); + if (get_int(text) == 1) { + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_left_top", "icon_text", 0.0); + } else { + set_state(PART:"icon_rect", "icon_only", 0.0); + set_state(PART:"padding_left_top", "icon_only", 0.0); + set_state(PART:"padding_right_bottom", "icon_only", 0.0); + } + } + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + script { + set_int(content, 0); + set_state(PART:"icon_text_padding", "default", 0.0); + set_state(PART:"icon_rect", "default", 0.0); + set_state(PART:"padding_left_top", "default", 0.0); + set_state(PART:"padding_right_bottom", "default", 0.0); + } + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + set_int(text, 1); + if (get_int(content) == 1) { + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_left_top", "icon_text", 0.0); + } + } + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + script { + set_int(text, 0); + if (get_int(content) == 1) { + set_state(PART:"icon_rect", "icon_only", 0.0); + set_state(PART:"padding_left_top", "icon_only", 0.0); + set_state(PART:"padding_right_bottom", "icon_only", 0.0); + } + } + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + script { + set_int(disabled, 1); + set_state(PART:"clipper", "disabled", 0.0); + set_state(PART:"tizen_vg_shape_clipper", "disabled", 0.0); + set_state(PART:"elm.text", "disabled", 0.0); + set_state(PART:"clipper", "disabled", 0.0); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + script { + set_int(disabled, 0); + set_state(PART:"clipper", "default", 0.0); + set_state(PART:"tizen_vg_shape_clipper", "default", 0.0); + set_state(PART:"elm.text", "default", 0.0); + set_state(PART:"clipper", "default", 0.0); + } + } + program { name: "multi_down"; + signal: "elm,action,multi,down"; + source: "elm"; + script { + set_int(multi_down, 1); + } + } + program { name: "multi_up"; + signal: "elm,action,multi,up"; + source: "elm"; + script { + set_int(multi_down, 0); + } + } + program { name: "show_new_highlight"; + signal: "elm,action,access_highlight,show"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "highlight"; + } + program { name: "hide_new_highlight"; + signal: "elm,action,access_highlight,hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "highlight"; + } + } +} diff --git a/test/RADemoTV/edc_resource/accessibility/screen_reader/custom_frame.edc b/test/RADemoTV/edc_resource/accessibility/screen_reader/custom_frame.edc new file mode 100644 index 0000000..c520bda --- /dev/null +++ b/test/RADemoTV/edc_resource/accessibility/screen_reader/custom_frame.edc @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +group { name: "custom_frame_layout"; + parts { + part { name: "bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 1; + color: BG_DEFAULT_COLOR_INC; + } + } + part { name: "button_name_lbl"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.0 0.05; + to: "bg"; + } + rel2 { + relative: 1.0 0.1; + to: "bg"; + } + } + } + part { name: "button_name"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.3 0.1; + to: "bg"; + } + rel2 { + relative: 0.7 0.2; + to: "bg"; + } + } + } + part { name: "button_custom_frame_lbl"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.3; + to: "bg"; + } + rel2 { + relative: 1.0 0.35; + to: "bg"; + } + visible: 1; + } + } + part { name: "button_custom_frame"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.2 0.35; + to: "bg"; + } + rel2 { + relative: 0.8 0.45; + to: "bg"; + } + visible: 1; + } + } + part { name: "button_custom_frame_lbl2"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.1 0.55; + to: "bg"; + } + rel2 { + relative: 0.9 0.6; + to: "bg"; + } + visible: 1; + } + } + part { name: "button_custom_frame2"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.2 0.6; + to: "bg"; + } + rel2 { + relative: 0.8 0.8; + to: "bg"; + } + visible: 1; + } + } + }//end parts +} //end group + diff --git a/test/RADemoTV/edc_resource/accessibility/screen_reader/description.edc b/test/RADemoTV/edc_resource/accessibility/screen_reader/description.edc new file mode 100644 index 0000000..4b7ed54 --- /dev/null +++ b/test/RADemoTV/edc_resource/accessibility/screen_reader/description.edc @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +group { name: "description_layout"; + parts { + part { name: "bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 1; + color: 200 200 200 255; + } + } + part { name: "button_name_lbl"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.0 0.05; + to: "bg"; + } + rel2 { + relative: 1.0 0.1; + to: "bg"; + } + } + } + part { name: "button_name"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.3 0.1; + to: "bg"; + } + rel2 { + relative: 0.7 0.2; + to: "bg"; + } + } + } + part { name: "button_description_lbl"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.3; + to: "bg"; + } + rel2 { + relative: 1.0 0.35; + to: "bg"; + } + visible: 1; + } + } + part { name: "button_description"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.3 0.35; + to: "bg"; + } + rel2 { + relative: 0.7 0.45; + to: "bg"; + } + visible: 1; + } + } + part { name: "button_a11y_name_lbl"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.1 0.55; + to: "bg"; + } + rel2 { + relative: 0.9 0.6; + to: "bg"; + } + visible: 1; + } + } + part { name: "button_a11y_name"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.3 0.6; + to: "bg"; + } + rel2 { + relative: 0.7 0.7; + to: "bg"; + } + visible: 1; + } + } + part { name: "button_empty_lbl"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.1 0.8; + to: "bg"; + } + rel2 { + relative: 0.9 0.85; + to: "bg"; + } + visible: 1; + } + } + part { name: "button_empty"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.4 0.85; + to: "bg"; + } + rel2 { + relative: 0.6 0.95; + to: "bg"; + } + visible: 1; + } + } + }//end parts +} //end group diff --git a/test/RADemoTV/edc_resource/accessibility/screen_reader/reading_order.edc b/test/RADemoTV/edc_resource/accessibility/screen_reader/reading_order.edc new file mode 100644 index 0000000..b706dea --- /dev/null +++ b/test/RADemoTV/edc_resource/accessibility/screen_reader/reading_order.edc @@ -0,0 +1,382 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +group { name: "reading_order_layout"; + + images.image: "../res/images/arrow-right.png" COMP; + images.image: "../res/images/arrow-left.png" COMP; + images.image: "../res/images/arrow-left1.png" COMP; + images.image: "../res/images/arrow-up.png" COMP; + images.image: "../res/images/arrow-down.png" COMP; + + parts { + part { name: "bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 1; + color: 200 200 200 255; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 1.0 1.0; + } + } + } + part { name: "bg_custom"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 1; + color: 89 205 255 255; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 1.0 0.5; + } + } + } + part { name: "bg_default"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 1; + color: 89 255 142 255; + rel1 { + relative: 0.0 0.5; + } + rel2 { + relative: 1.0 1.0; + } + } + } + part { name: "custom_lbl"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.05 0.05; + to: "bg"; + } + rel2 { + relative: 1.0 0.15; + to: "bg"; + } + } + } + part { name: "default_lbl"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.05 0.55; + to: "bg"; + } + rel2 { + relative: 1.0 0.65; + to: "bg"; + } + } + } + part { name: "button_a"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.1 0.15; + to: "bg"; + } + rel2 { + relative: 0.3 0.25; + to: "bg"; + } + } + } + part { name: "button_b"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.4 0.15; + to: "bg"; + } + rel2 { + relative: 0.6 0.25; + to: "bg"; + } + } + } + part { name: "button_c"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.7 0.15; + to: "bg"; + } + rel2 { + relative: 0.9 0.25; + to: "bg"; + } + } + } + part { name: "button_d"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.1 0.3; + to: "bg"; + } + rel2 { + relative: 0.3 0.4; + to: "bg"; + } + } + } + part { name: "button_e"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.4 0.3; + to: "bg"; + } + rel2 { + relative: 0.6 0.4; + to: "bg"; + } + } + } + + + + part { name: "button_default_a"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.1 0.65; + to: "bg"; + } + rel2 { + relative: 0.3 0.75; + to: "bg"; + } + } + } + part { name: "button_default_b"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.4 0.65; + to: "bg"; + } + rel2 { + relative: 0.6 0.75; + to: "bg"; + } + } + } + part { name: "button_default_c"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.7 0.65; + to: "bg"; + } + rel2 { + relative: 0.9 0.75; + to: "bg"; + } + } + } + part { name: "button_default_d"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.1 0.8; + to: "bg"; + } + rel2 { + relative: 0.3 0.9; + to: "bg"; + } + } + } + part { name: "button_default_e"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.4 0.8; + to: "bg"; + } + rel2 { + relative: 0.6 0.9; + to: "bg"; + } + } + } + part { name: "arrow_custom_label_d"; + description { + state: "default" 0.0; + image.normal: "../res/images/arrow-down.png"; + rel1 { + relative: 0.0 0.4; + to: "custom_lbl"; + } + rel2 { + relative: 0.0 0.0; + to: "button_d"; + } + } + } + part { name: "arrow_custom_b_c"; + description { + state: "default" 0.0; + image.normal: "../res/images/arrow-right.png"; + rel1 { + relative: 1.05 0.3; + to: "button_b"; + } + rel2 { + relative: -0.05 0.7; + to: "button_c"; + } + } + } + part { name: "arrow_custom_d_e"; + description { + state: "default" 0.0; + image.normal: "../res/images/arrow-right.png"; + rel1 { + relative: 1.05 0.3; + to: "button_d"; + } + rel2 { + relative: -0.05 0.7; + to: "button_e"; + } + } + } + part { name: "arrow_custom_e_b"; + description { + state: "default" 0.0; + image.normal: "../res/images/arrow-up.png"; + rel1 { + relative: 0.35 1.05; + to: "button_b"; + } + rel2 { + relative: 0.65 -0.05; + to: "button_e"; + } + } + } + + + part { name: "arrow_default_a_b"; + description { + state: "default" 0.0; + image.normal: "../res/images/arrow-right.png"; + rel1 { + relative: 1.05 0.3; + to: "button_default_a"; + } + rel2 { + relative: -0.05 0.7; + to: "button_default_b"; + } + } + } + part { name: "arrow_default_b_c"; + description { + state: "default" 0.0; + image.normal: "../res/images/arrow-right.png"; + rel1 { + relative: 1.05 0.3; + to: "button_default_b"; + } + rel2 { + relative: -0.05 0.7; + to: "button_default_c"; + } + } + } + + part { name: "arrow_default_d_e"; + description { + state: "default" 0.0; + image.normal: "../res/images/arrow-right.png"; + rel1 { + relative: 1.05 0.3; + to: "button_default_d"; + } + rel2 { + relative: -0.05 0.7; + to: "button_default_e"; + } + } + } + + part { name: "arrow_default_c_d"; + description { + state: "default" 0.0; + image.normal: "../res/images/arrow-left1.png"; + rel1 { + relative: 0.5 -0.5; + to: "button_default_d"; + } + rel2 { + relative: 0.5 1.5; + to: "button_default_c"; + } + } + } + + }//end parts +} //end group diff --git a/test/RADemoTV/edc_resource/button.edc b/test/RADemoTV/edc_resource/button.edc new file mode 100644 index 0000000..a8094c8 --- /dev/null +++ b/test/RADemoTV/edc_resource/button.edc @@ -0,0 +1,347 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#define BUTTON_PADDING_WIDTH 170 +#define BUTTON_PADDING_HEIGHT 22 + +group { name: "button_layout"; + parts { + part { name: "top_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 0 1; + rel2.relative: 1.0 0.0; + align: 0 0; + } + } + part { name: "btn_expand_opened"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "top_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "top_padding"; + } + } + } + part { name: "btn_expand_opened_bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + max: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.0 1.0; + to_y: "btn_expand_opened"; + } + rel2.to_y: "btn_expand_opened"; + } + } + part { name: "btn_expand_closed"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "btn_expand_opened_bottom_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "btn_expand_opened_bottom_padding"; + } + } + } + part { name: "btn_expand_closed_bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + max: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0 1.0; + to_y: "btn_expand_closed"; + } + rel2.to_y: "btn_expand_closed"; + } + } + part { name: "btn_reorder"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "btn_expand_closed_bottom_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "btn_expand_closed_bottom_padding"; + } + } + } + part { name: "btn_reorder_bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + max: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.0 1.0; + to_y: "btn_reorder"; + } + rel2.to_y: "btn_reorder"; + } + } + part { name: "btn_expand_add"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "btn_reorder_bottom_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "btn_reorder_bottom_padding"; + } + } + } + part { name: "btn_expand_add_bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + max: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.0 1.0; + to_y: "btn_expand_add"; + } + rel2.to_y: "btn_expand_add"; + } + } + part { name: "btn_expand_delete"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "btn_expand_add_bottom_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "btn_expand_add_bottom_padding"; + } + } + } + part { name: "btn_expand_delete_bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + max: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.0 1.0; + to_y: "btn_expand_delete"; + } + rel2.to_y: "btn_expand_delete"; + } + } + part { name: "btn_default"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "btn_expand_delete_bottom_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "btn_expand_delete_bottom_padding"; + } + } + } + part { name: "btn_default_bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + max: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.0 1.0; + to_y: "btn_default"; + } + rel2.to_y: "btn_default"; + } + } + part { name: "btn_circle"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "btn_default_bottom_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "btn_default_bottom_padding"; + } + } + } + part { name: "btn_circle_bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + max: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.0 1.0; + to_y: "btn_circle"; + } + rel2.to_y: "btn_circle"; + } + } + part { name: "btn_bottom"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + state: "default" 0.0; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "btn_circle_bottom_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "btn_circle_bottom_padding"; + } + } + } + part { name: "btn_bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + max: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.0 1.0; + to_y: "btn_bottom"; + } + rel2.to_y: "btn_bottom"; + } + } + part { name: "btn_circle_text"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + state: "default" 0.0; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "btn_bottom_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "btn_bottom_padding"; + } + } + } + part { name: "btn_circle_text_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + max: BUTTON_PADDING_WIDTH BUTTON_PADDING_HEIGHT; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0.0 1.0; + to_y: "btn_circle_text"; + } + rel2.to_y: "btn_circle_text"; + } + } + part { name: "btn_contacts"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + state: "default" 0.0; + align: 0.5 0; + rel1 { + relative: 0.5 1.0; + to_y: "btn_circle_text_padding"; + } + rel2 { + relative: 0.5 1.0; + to_y: "btn_circle_text_padding"; + } + } + } + part { name: "bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 0 BUTTON_PADDING_HEIGHT; + align: 0.5 1.0; + rel1 { + relative: 0.0 1.0; + to_y: "btn_contacts"; + } + } + } + } +} + +#undef BUTTON_PADDING_WIDTH +#undef BUTTON_PADDING_HEIGHT diff --git a/test/RADemoTV/edc_resource/datetime.edc b/test/RADemoTV/edc_resource/datetime.edc new file mode 100644 index 0000000..231ab79 --- /dev/null +++ b/test/RADemoTV/edc_resource/datetime.edc @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#define DATETIME_PADDING_HEIGHT 50 +#define DATETIME_TOP_PADDING_HEIGHT 30 +#define DATETIME_PICKER_PADDING_HEIGHT 100 +#define DATETIME_BUTTON_WIDTH 550 +#define DATETIME_TEXT_HEIGHT 60 +#define DATETIME_TEXT_COLOR 173 170 165 255 +#define DATETIME_TEXT_SIZE 24 + +#define DATETIME_PICKER(_pos, _after, str)\ + part { name: "picker"#_pos;\ + type: SWALLOW;\ + scale: 1;\ + description { state: "default" 0.0;\ + align: 0.5 0.0;\ + fixed: 1 1;\ + rel1 {\ + relative: 0 1;\ + to: "text"#_pos;\ + }\ + rel2 {\ + relative: 1 1;\ + to: "text"#_pos;\ + }\ + }\ + }\ + part { name: "text"#_pos;\ + type: TEXT;\ + scale: 1;\ + description { state: "default" 0.0;\ + align: 0.5 0.0;\ + fixed: 0 1;\ + min: 0 DATETIME_PADDING_HEIGHT;\ + rel1 {\ + relative: 0 1;\ + to: "padding"#_after;\ + }\ + rel2 {\ + relative: 1 1;\ + to: "padding"#_after;\ + }\ + color: DATETIME_TEXT_COLOR;\ + text {\ + font: "Tizen:style=Regular";\ + size: DATETIME_TEXT_SIZE;\ + min: 1 0;\ + align: 0.0 0.0;\ + text: str;\ + ellipsis: -1; \ + }\ + }\ + }\ + part { name: "padding"#_pos;\ + type: SPACER;\ + scale: 1;\ + description { state: "default" 0.0;\ + min: 0 DATETIME_PADDING_HEIGHT;\ + fixed: 0 1;\ + align: 0.5 0.0;\ + rel1 {\ + relative: 0.0 1.0;\ + to_x: "padding"#_after;\ + to_y: "picker"#_pos;\ + }\ + rel2 {\ + relative: 1.0 1.0;\ + to_x: "padding"#_after;\ + to_y: "picker"#_pos;\ + }\ + }\ + } + +group { name: "datetime_layout"; + parts { + part { name: "padding0"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 0 DATETIME_TOP_PADDING_HEIGHT; + fixed: 0 1; + align: 0.5 0.0; + rel1.relative: 0 0; + rel2.relative: 1 0; + } + } + DATETIME_PICKER(1, 0, " Date Time (12hr) :") + DATETIME_PICKER(2, 1, " Date Time (24hr) :") + DATETIME_PICKER(3, 2, " Time Date (12hr) :") + DATETIME_PICKER(4, 3, " Time Date (24hr) :") + DATETIME_PICKER(5, 4, " User format changed as per System's Region format :") + DATETIME_PICKER(6, 5, " Datetime widget with field limits :") + part { name: "bottom.padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 0 DATETIME_TOP_PADDING_HEIGHT; + align: 0.5 1.0; + rel1 { + to: "padding6"; + relative: 0 1; + } + } + } + } +} + +#undef DATETIME_PICKER +#undef DATETIME_PADDING_HEIGHT +#undef DATETIME_PICKER_PADDING_HEIGHT +#undef DATETIME_BUTTON_WIDTH +#undef DATETIME_TOP_PADDING_HEIGHT +#undef DATETIME_TEXT_HEIGHT +#undef DATETIME_TEXT_COLOR +#undef DATETIME_TEXT_SIZE diff --git a/test/RADemoTV/edc_resource/default/inc/my_button_header.edc b/test/RADemoTV/edc_resource/default/inc/my_button_header.edc new file mode 100644 index 0000000..7e3001e --- /dev/null +++ b/test/RADemoTV/edc_resource/default/inc/my_button_header.edc @@ -0,0 +1,61 @@ +#define BASE_SCALE_INC 2.6 +#define SMALL "HD/" +#define MEDIUM "HD/" +#define DEFAULT_IMAGE "HD/" + +#define BG_DEFAULT_COLOR_INC 248 246 239 255 +#define BG_EDIT_MODE_COLOR_INC 248 246 239 255 +#define BG_GROUP_LIST_COLOR_INC 248 246 239 255 +#define BG_TRANSPARENT_COLOR_INC 0 0 0 0 +#define BORDER_BG_COLOR_INC 248 246 239 255 +#define BORDER_FONT_COLOR_INC 59 115 182 255 +#define BORDER_FONT_SIZE_INC 42 +#define BORDER_HEIGHT_INC 80 +#define BORDER_ICON_PADDING_WIDTH 8 +#define BORDER_ICON_SIZE 36 36 +#define BORDER_PADDING_WIDTH 20 +#define BORDER_SHADOW_HEIGHT 20 +#define BORDER_TITLE_FONT_SIZE_INC 12 +#define BORDER_TITLE_HEIGHT_INC 22 + +#define BUTTON_ANCHOR_BG_BORDER 20 20 22 22 +#define BUTTON_ANCHOR_COLOR_TRANSPARENT 0 0 0 0 +#define BUTTON_ANCHOR_PADDING_DEFAULT_SIZE 10 +#define BUTTON_ICON_DEFAULT_HEIGHT_INC 60 +#define BUTTON_ICON_DEFAULT_WIDTH_INC 60 +#define BUTTON_MIN_HEIGHT_INC 78 +#define BUTTON_MIN_WIDTH_INC 50 +#define BUTTON_PADDING_BOTTOM_HEIGHT_INC 14 +#define BUTTON_PADDING_ICON_RIGHT_INC 14 +#define BUTTON_PADDING_LEFT_ICON_TEXT_INC 56 +#define BUTTON_PADDING_LEFT_RIGHT_INC 32 +#define BUTTON_PADDING_TOP_HEIGHT_INC 10 +#define BUTTON_TEXT_SHADOW_NORMAL_COLOR_INC 255 255 255 255 +#define BUTTON_TEXT_STYLE1_FONT_SIZE_INC 36 +#define BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC 58 58 58 255 +#define BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC 148 74 + +#define STYLE_TAGS \ + tag: "br" "\n";\ + tag: "ps" "ps";\ + tag: "tab" "\t";\ + tag: "b" "+ font_weight=Bold"; + +#define STYLE_TAG_MATCH \ + tag: "match" "+ color=#3db8cc"; + +styles { + // ************* button text ********** // + style { name: "button_main"; + base: "align=center valign=center color=#fafafaff font=Tizen:style=Regular font_size=30 text_class=tizen ellipsis=1.0"; + STYLE_TAGS + } + style { name: "button_main_dim"; + base: "align=center valign=center color=#fafafaa3 font=Tizen:style=Regular font_size=30 text_class=tizen ellipsis=1.0"; + STYLE_TAGS + } + style { name: "button_main_press"; + base: "align=center valign=center color=#fafafaff font=Tizen:style=Regular font_size=30 text_class=tizen ellipsis=1.0"; + STYLE_TAGS + } +} diff --git a/test/RADemoTV/edc_resource/default/my_button.edc b/test/RADemoTV/edc_resource/default/my_button.edc new file mode 100644 index 0000000..b69b2b8 --- /dev/null +++ b/test/RADemoTV/edc_resource/default/my_button.edc @@ -0,0 +1,709 @@ +group { name: "elm/button/base/custom1"; + data { + item: "access_highlight" "on"; + } + images { + image: "../res/images/btn_style_nor.png" COMP; + image: "../res/images/btn_style_sel.png" COMP; + image: "../res/images/custom_highlight.png" COMP; + } + parts { + part { name: "button_image"; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + min: BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC; + visible: 0; + image { + normal: "../res/images/btn_style_nor.png"; + border: BUTTON_ANCHOR_BG_BORDER; + middle: SOLID; + } + } + description { state: "visible" 0.0; + visible: 1; + min: BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC; + color_class: "W012"; + image { + normal: "../res/images/btn_style_nor.png"; + border: BUTTON_ANCHOR_BG_BORDER; + border_scale: 1; + } + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + description { state: "default" 0.0; + fixed: 1 0; + visible: 0; + align: 0.0 0.5; + rel2.relative: 0.0 1.0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + fixed: 1 0; + visible: 1; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + } + description { state: "icononly" 0.0; + inherit: "default" 0.0; + fixed: 0 0; + visible: 1; + align: 0.5 0.5; + aspect: 1.0 1.0; + rel2.relative: 1.0 1.0; + aspect_preference: VERTICAL; + } + } + part { name: "elm.padding.text.left"; + type: SPACER; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0 0.5; + fixed: 1 0; + min: BUTTON_ANCHOR_PADDING_DEFAULT_SIZE 0; + rel1 { + to: "elm.swallow.content"; + relative: 1 0; + } + rel2 { + to: "elm.swallow.content"; + relative: 1 1; + } + } + } + part { name: "elm.padding.text.right"; + type: SPACER; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1 0.5; + rel1.relative: 1 0; + fixed: 1 0; + min: BUTTON_ANCHOR_PADDING_DEFAULT_SIZE 10; + } + } + part { name: "elm.text"; + type: TEXT; + mouse_events: 0; + scale: 1; + effect: SHADOW BOTTOM; + description { state: "default" 0.0; + rel1 { + to_x: "elm.padding.text.left"; + relative: 1 0; + } + rel2 { + to : "elm.padding.text.right"; + relative: 0 1; + } + color: BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC; + color2: BUTTON_TEXT_SHADOW_NORMAL_COLOR_INC; + text { + font: "SLP:style=Regular"; + size: BUTTON_TEXT_STYLE1_FONT_SIZE_INC; + min: 0 0; + text_class: "slp"; + } + } + } + part { name: "over"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: BUTTON_ANCHOR_COLOR_TRANSPARENT; + } + } + part { name: "disabler"; + type: RECT; + description { state: "default" 0.0; + color: BUTTON_ANCHOR_COLOR_TRANSPARENT; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "highlight_base"; type: RECT; + clip_to: "highlight_clip"; + description { state: "default" 0.0; + visible: 0; + } + } + part { name: "highlight_clip"; type: RECT; + scale: 1; + description { + state: "default" 0.0; + color: 255 255 255 255; + rel1.relative: -1 -1; + rel2.relative: 2 2; + } + } + + part { name: "highlight"; + clip_to: "highlight_clip"; + description { state: "default" 0.0; + image.normal: "../res/images/custom_highlight.png"; + image.border: 12 12 12 12; + image.middle: 0; + fill.smooth: 0; + rel1.to: "highlight_base"; + rel1.offset: -7 -7; + rel2.to: "highlight_base"; + rel2.offset: 5 5; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + + + programs { + program { name: "button_mouse_in"; + signal: "mouse,in"; + source: "over"; + action: STATE_SET "visible" 0.0; + target: "button_image"; + target: "elm.text"; + } + program { name: "button_mouse_out"; + signal: "mouse,out"; + source: "over"; + action: STATE_SET "default" 0.0; + target: "button_image"; + target: "elm.text"; + } + program { name: "button_unclick"; + signal: "mouse,up,1"; + source: "over"; + action: STATE_SET "visible" 0.0; + target: "button_image"; + target: "elm.text"; + } + program { name: "button_click2"; + signal: "mouse,down,1"; + source: "over"; + action: STATE_SET "clicked" 0.0; + target: "button_image"; + target: "elm.text"; + } + program { name: "button_unclick2"; + signal: "mouse,up,1"; + source: "over"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.5; + target: "button_image"; + target: "elm.text"; + } + program { name: "button_unclick3"; + signal: "mouse,up,1"; + source: "over"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.content", st, 30, vl); + if (!strcmp(st, "icononly")) { + set_state(PART:"elm.swallow.content", "visible", 0.0); + } + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "disabled") || (!strcmp(st, "disabled_visible"))) + set_state(PART:"elm.text", "disabled_visible", 0.0); + else + set_state(PART:"elm.text", "visible", 0.0); + } + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible")) { + set_state(PART:"elm.swallow.content", "visible", 0.0); + } + else { + set_state(PART:"elm.swallow.content", "icononly", 0.0); + } + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + script { + new st[31]; + new Float:vl; + set_state(PART:"button_image", "visible", 0.0); + set_state(PART:"over", "visible", 0.0); + set_state(PART:"disabler", "visible", 0.0); + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "visible") || !strcmp(st, "disabled_visible")) + set_state(PART:"elm.text", "visible", 0.0); + else + set_state(PART:"elm.text", "default", 0.0); + } + } + program { name: "show_new_highlight"; + signal: "elm,action,access_highlight,show"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "highlight"; + } + program { name: "hide_new_highlight"; + signal: "elm,action,access_highlight,hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "highlight"; + } + } + +} + +group { name: "elm/button/base/custom2"; + data.item: "vector_ux" "default"; + data.item: "access_highlight" "on"; + images.image: "../res/images/custom_highlight2.png" COMP; + script { + public mouse_down = 0; + public multi_down = 0; + public disabled = 0; + public text = 0; + public content = 0; + } + parts { + part { name: "base"; + scale: 1; + type: SPACER; + description { state: "default" 0.0; + min: BUTTON_MIN_WIDTH_INC BUTTON_MIN_HEIGHT_INC; + } + } + //Base Shape Part + part { name: "tizen_vg_shape"; + type: SWALLOW; + clip_to: "tizen_vg_shape_clipper"; + scale: 1; + description { state: "default" 0.0; + min: 0 BUTTON_MIN_HEIGHT_INC; + rel1.relative: 0 0.5; + rel2.relative: 1 0.5; + fixed: 0 1; + } + } + part { name: "tizen_vg_shape_clipper"; + type: RECT; + description { state: "default" 0.0; + color: 82 198 216 255; + } + description { state: "disabled" 0.0; + color: 138 195 204 255; + } + } + //Effect Shape Part + part { name: "tizen_vg_shape2"; + type: SWALLOW; + clip_to: "tizen_vg_shape_clipper2"; + scale: 1; + description { state: "default" 0.0; + rel1.to: "tizen_vg_shape"; + rel2.to: "tizen_vg_shape"; + rel1.relative: 0.15 0.15; + rel2.relative: 0.85 0.85; + } + description { state: "ready" 0.0; + inherit: "default" 0.0; + } + description { state: "pressed" 0.0; + inherit: "default" 0.0; + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 1.0; + } + } + part { name: "tizen_vg_shape_clipper2"; + type: RECT; + description { state: "default" 0.0; + visible: 0; + color: 48 139 153 0; + } + description { state: "ready" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "pressed" 0.0; + color: 48 139 153 255; + } + } + part { name: "padding_left_top"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + rel1.to: "tizen_vg_shape"; + rel2.to: "tizen_vg_shape"; + align: 0.0 0.0; + rel2.relative: 0.0 0.0; + min: BUTTON_PADDING_LEFT_RIGHT_INC BUTTON_PADDING_TOP_HEIGHT_INC; + fixed: 1 1; + } + description { state: "icon_only" 0.0; + inherit: "default" 0.0; + min: 0 0; + } + description { state: "icon_text" 0.0; + inherit: "default" 0.0; + min: BUTTON_PADDING_LEFT_ICON_TEXT_INC BUTTON_PADDING_TOP_HEIGHT_INC; + } + } + part { name: "padding_right_bottom"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + rel1.to: "tizen_vg_shape"; + rel2.to: "tizen_vg_shape"; + align: 1.0 1.0; + rel1.relative: 1.0 1.0; + min: BUTTON_PADDING_LEFT_RIGHT_INC BUTTON_PADDING_BOTTOM_HEIGHT_INC; + fixed: 1 1; + } + description { state: "icon_only" 0.0; + inherit: "default" 0.0; + min: 0 0; + } + } + part { name: "icon_rect"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + rel2 { + relative: 1.0 1.0; + to: "padding_left_top"; + } + min: 0 BUTTON_ICON_DEFAULT_HEIGHT_INC; + fixed: 1 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: BUTTON_ICON_DEFAULT_WIDTH_INC BUTTON_ICON_DEFAULT_HEIGHT_INC; + fixed: 1 1; + } + description { state: "icon_only" 0.0; + rel1.to: "tizen_vg_shape"; + rel2.to: "tizen_vg_shape"; + min: BUTTON_ICON_DEFAULT_WIDTH_INC BUTTON_ICON_DEFAULT_HEIGHT_INC; + max: BUTTON_ICON_DEFAULT_WIDTH_INC BUTTON_ICON_DEFAULT_HEIGHT_INC; + align: 0.5 0.5; + fixed: 1 1; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + rel1.to: "icon_rect"; + rel2.to: "icon_rect"; + } + } + part { name: "icon_text_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + align: 0.0 0.5; + min: 0 0; + rel1 { + relative: 1.0 0.0; + to: "icon_rect"; + } + rel2 { + relative: 1.0 1.0; + to: "icon_rect"; + } + fixed: 1 1; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + min: BUTTON_PADDING_ICON_RIGHT_INC 0; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + clip_to: "clipper"; + description { state: "default" 0.0; + rel1 { + relative: 1.0 0.0; + to: "icon_text_padding"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + text { + style: "button_main"; + } + } + description { state: "pressed" 0.0; + inherit: "default" 0.0; + text.style: "button_main_press"; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + text.style: "button_main_dim"; + } + } + part { name: "clipper"; + type: RECT; + description { state: "default" 0.0; + } + description { state: "pressed" 0.0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + color: 255 255 255 163; + } + } + part { name: "event"; + type: RECT; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + rel1.to: "tizen_vg_shape"; + rel2.to: "tizen_vg_shape"; + color: 0 0 0 0; + } + } + part { name: "highlight_clip"; type: RECT; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 1.0 0.0; + to: "icon_text_padding"; + } + rel2 { + relative: 0.0 0.0; + to: "padding_right_bottom"; + } + } + } + part { name: "highlight_base"; type: RECT; + clip_to: "highlight_clip"; + description { state: "default" 0.0; + visible: 0; + } + } + part { name: "highlight"; + clip_to: "highlight_clip"; + description { state: "default" 0.0; + image.normal: "../res/images/custom_highlight2.png"; + image.border: 10 10 10 10; + image.middle: 0; + fill.smooth: 0; + rel1.to: "elm.text"; + rel1.offset: 30 5; + rel2.to: "elm.text"; + rel2.offset: -30 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { name: "clicked_effect"; + action: STATE_SET "ready" 0.0; + target: "tizen_vg_shape2"; + target: "tizen_vg_shape_clipper2"; + after: "clicked_effect2"; + } + program { name: "clicked_effect2"; + script { + run_program(PROGRAM:"clicked_effect3"); + run_program(PROGRAM:"clicked_effect4"); + } + } + program { name: "clicked_effect3"; + action: STATE_SET "pressed" 0.0; + target: "tizen_vg_shape2"; + target: "elm.text"; + target: "clipper"; + transition: DECELERATE 0.3; + } + program { name: "clicked_effect4"; + action: STATE_SET "pressed" 0.0; + target: "tizen_vg_shape_clipper2"; + transition: DECELERATE 0.225; + after: "clicked_effect5"; + } + program { name: "clicked_effect5"; + action: STATE_SET "ready" 0.0; + target: "tizen_vg_shape_clipper2"; + transition: LINEAR 0.45; + after: "clicked_effect6"; + } + program { name: "clicked_effect6"; + action: STATE_SET "default" 0.0; + target: "tizen_vg_shape2"; + target: "tizen_vg_shape_clipper2"; + target: "elm.text"; + target: "clipper"; + } + program { name: "pressed"; + signal: "mouse,down,1*"; + source: "event"; + script { + if ((get_int(multi_down) == 0) && (get_int(mouse_down) == 0)) { + set_int(mouse_down, 1); + if (get_int(disabled) == 0) { + emit("elm,action,press", ""); + run_program(PROGRAM:"clicked_effect"); + } + } + } + } + program { name: "unpressed"; + signal: "mouse,up,1"; + source: "event"; + script { + if (get_int(mouse_down) == 1) { + set_int(mouse_down, 0); + if (get_int(disabled) == 0) { + emit("elm,action,unpress", ""); + } + } + } + } + program { name: "touch_snd"; + signal: "mouse,clicked,1"; + source: "event"; + script { + if (get_int(multi_down) == 0) { + if (get_int(disabled) == 0) { + run_program(PROGRAM:"touch_sound"); + emit("elm,action,click", ""); + } + } + } + } + program { name: "touch_sound"; + action: RUN_PLUGIN "touch_sound"; + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + set_int(content, 1); + set_state(PART:"icon_text_padding", "visible", 0.0); + if (get_int(text) == 1) { + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_left_top", "icon_text", 0.0); + } else { + set_state(PART:"icon_rect", "icon_only", 0.0); + set_state(PART:"padding_left_top", "icon_only", 0.0); + set_state(PART:"padding_right_bottom", "icon_only", 0.0); + } + } + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + script { + set_int(content, 0); + set_state(PART:"icon_text_padding", "default", 0.0); + set_state(PART:"icon_rect", "default", 0.0); + set_state(PART:"padding_left_top", "default", 0.0); + set_state(PART:"padding_right_bottom", "default", 0.0); + } + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + set_int(text, 1); + if (get_int(content) == 1) { + set_state(PART:"icon_rect", "visible", 0.0); + set_state(PART:"padding_left_top", "icon_text", 0.0); + } + } + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + script { + set_int(text, 0); + if (get_int(content) == 1) { + set_state(PART:"icon_rect", "icon_only", 0.0); + set_state(PART:"padding_left_top", "icon_only", 0.0); + set_state(PART:"padding_right_bottom", "icon_only", 0.0); + } + } + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + script { + set_int(disabled, 1); + set_state(PART:"clipper", "disabled", 0.0); + set_state(PART:"tizen_vg_shape_clipper", "disabled", 0.0); + set_state(PART:"elm.text", "disabled", 0.0); + set_state(PART:"clipper", "disabled", 0.0); + } + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + script { + set_int(disabled, 0); + set_state(PART:"clipper", "default", 0.0); + set_state(PART:"tizen_vg_shape_clipper", "default", 0.0); + set_state(PART:"elm.text", "default", 0.0); + set_state(PART:"clipper", "default", 0.0); + } + } + program { name: "multi_down"; + signal: "elm,action,multi,down"; + source: "elm"; + script { + set_int(multi_down, 1); + } + } + program { name: "multi_up"; + signal: "elm,action,multi,up"; + source: "elm"; + script { + set_int(multi_down, 0); + } + } + program { name: "show_new_highlight"; + signal: "elm,action,access_highlight,show"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "highlight"; + } + program { name: "hide_new_highlight"; + signal: "elm,action,access_highlight,hide"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "highlight"; + } + } +} diff --git a/test/RADemoTV/edc_resource/entry.edc b/test/RADemoTV/edc_resource/entry.edc new file mode 100644 index 0000000..9e0fdc4 --- /dev/null +++ b/test/RADemoTV/edc_resource/entry.edc @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +group { name: "entry_layout"; + parts { + part { name: "bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + color: 220 220 220 255; + } + } + part { name: "entry_part"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + rel1.to: "bg"; + rel2.to: "bg"; + } + } + } +} diff --git a/test/RADemoTV/edc_resource/genlist.edc b/test/RADemoTV/edc_resource/genlist.edc new file mode 100644 index 0000000..1de7c7e --- /dev/null +++ b/test/RADemoTV/edc_resource/genlist.edc @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +group { name: "gl_custom_item"; + styles{ + style { name: "text_style"; + base: "color=#000000FF font=Tizen:style=Regular font_size=30 ellipsis=1.0"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "tab" "\t"; + tag: "b" "+ font_weight=Bold"; + } + } + parts { + part { name: "base"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + } + } + part { name: "left_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 32 0; + align: 0.0 0.0; + rel1 { to: "base"; relative: 0.0 0.0; } + rel2 { to: "base"; relative: 0.0 1.0; } + } + } + part { name: "right_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 32 0; + align: 1.0 0.0; + rel1 { to: "base"; relative: 1.0 0.0; } + rel2 { to: "base"; relative: 1.0 1.0; } + } + } + part { name: "top_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 0 24; + align: 0.0 0.0; + rel1 { to_x: "left_padding"; to_y: "base"; relative: 1.0 0.0; } + rel2 { to_x: "right_padding"; to_y: "base"; relative: 0.0 0.0; } + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 41; + align: 0.0 0.0; + rel1 { to: "top_padding"; relative: 0.0 1.0; } + rel2 { to: "top_padding"; relative: 1.0 1.0; } + text.style: "text_style"; + text.min: 0 1; + } + } + part { name: "text_content_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 0 10; + align: 0.0 0.0; + rel1 { to: "elm.text"; relative: 0.0 1.0; } + rel2 { to: "elm.text"; relative: 1.0 1.0; } + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + align: 0.5 0.0; + rel1 { to: "text_content_padding"; relative: 0.0 1.0; } + rel2 { to: "bottom_padding"; relative: 1.0 0.0; } + } + } + part { name: "bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 0 24; + align: 0.5 1.0; + rel1 { to: "base"; relative: 0.0 1.0; } + rel2 { to: "base"; relative: 1.0 1.0; } + } + } + } +} diff --git a/test/RADemoTV/edc_resource/label.edc b/test/RADemoTV/edc_resource/label.edc new file mode 100644 index 0000000..5d3c9b9 --- /dev/null +++ b/test/RADemoTV/edc_resource/label.edc @@ -0,0 +1,585 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#define LABEL_WIDTH 350.0 +#define LABEL_HEIGHT 40.0 +#define LABEL_GAP 100.0 + +group { + name: "label_layout"; + parts{ + part { + name: "top_padding"; + type: RECT; + scale: 1; //allow scaling + description { + state: "default" 0.0; + min : LABEL_WIDTH 50; //minimum size for gap filler + fixed: 0 1; + rel1 { relative: 0 0; } + rel2 { relative: 1 0; } + align: 0 0; + visible: 0; + } + } + part { + name: "label1_bg"; + type: RECT; + description { + color: 200 200 200 127; + rel1.to:"label1"; + rel2.to:"label1"; + } + } + part { + name: "label1"; + type: SWALLOW; + scale: 1; + description { + fixed: 1 1; + min: LABEL_WIDTH LABEL_HEIGHT; + max: LABEL_WIDTH LABEL_HEIGHT; + state: "default" 0.0; + rel1 { relative: 0 1.0; to_y: "top_padding"; } + align: 0.5 0; + } + } + part { + name: "label1_bottom_padding"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min : LABEL_WIDTH LABEL_GAP; + fixed: 0 1; + rel1 { relative: 0 1.0; to_y: "label1"; } + rel2 { relative: 1 1.0; to_y: "label1"; } + visible: 0; + } + } + part { + name: "label2_bg"; + type: RECT; + description { + color: 200 200 200 127; + rel1.to:"label2"; + rel2.to:"label2"; + } + } + part { + name: "label2"; + type: SWALLOW; + scale: 1; + description { + fixed: 1 0; + min: LABEL_WIDTH LABEL_HEIGHT; + max: LABEL_WIDTH LABEL_HEIGHT; + state: "default" 0.0; + rel1 { relative: 0 1.0; to_y: "label1_bottom_padding"; } + align: 0.5 0; + } + } + part { + name: "label2_bottom_padding"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min : 0 LABEL_GAP; + fixed: 0 1; + rel1 { relative: 0 1.0; to_y: "label2"; } + rel2 { relative: 1 1.0; to_y: "label2"; } + visible: 0; + } + } + part { + name: "label3_bg"; + type: RECT; + description { + color: 200 200 200 127; + rel1.to:"label3"; + rel2.to:"label3"; + } + } + part { + name: "label3"; + type: SWALLOW; + scale: 1; + description { + fixed: 1 1; + min: LABEL_WIDTH LABEL_HEIGHT; + max: LABEL_WIDTH LABEL_HEIGHT; + state: "default" 0.0; + rel1 { relative: 0 1.0; to_y: "label2_bottom_padding"; } + align: 0.5 0; + } + } + part { + name: "label3_bottom_padding"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min : 0 LABEL_GAP; + fixed: 0 1; + rel1 { relative: 0 1.0; to_y: "label3"; } + rel2 { relative: 1 1.0; to_y: "label3"; } + visible: 0; + } + } + part { + name: "label4_bg"; + type: RECT; + description { + color: 200 200 200 127; + rel1.to:"label4"; + rel2.to:"label4"; + } + } + part { + name: "label4"; + type: SWALLOW; + scale: 1; + description { + fixed: 1 1; + min: LABEL_WIDTH LABEL_HEIGHT; + max: LABEL_WIDTH LABEL_HEIGHT; + state: "default" 0.0; + rel1 { relative: 0 1.0; to_y: "label3_bottom_padding"; } + align: 0.5 0; + } + } + part { + name: "label4_bottom_padding"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min : 0 LABEL_GAP; + fixed: 0 1; + rel1 { relative: 0 1.0; to_y: "label4"; } + rel2 { relative: 1 1.0; to_y: "label4"; } + visible: 0; + } + } + part { + name: "label5_bg"; + type: RECT; + description { + color: 200 200 200 127; + rel1.to:"label5"; + rel2.to:"label5"; + } + } + part { + name: "label5"; + type: SWALLOW; + scale: 1; + description { + fixed: 1 1; + min: LABEL_WIDTH LABEL_HEIGHT; + max: LABEL_WIDTH LABEL_HEIGHT; + state: "default" 0.0; + rel1 { relative: 0 1.0; to_y: "label4_bottom_padding"; } + align: 0.5 0; + } + } + part { + name: "label5_bottom_padding"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min : 0 30; + rel1 { relative: 0 1.0; to_y: "label5"; } + rel2 { relative: 1 1.0; } + visible: 0; + align: 0.5 1.0; + } + } + }//end parts +#undef LABEL_WIDTH +#undef LABEL_HEIGHT +#undef LABEL_GAP +} //end group + + group { + name, "label_slide_layout"; + parts { + part { name, "background"; + type: RECT; + description { + state: "default" 0.0; + min : 0 100; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0 0; } + rel2 { relative: 1 0; } + visible: 0; + } + } + part { + name: "top_padding"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min : 0 80; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0.15 0.0; to_y: "background"; } + rel2 { relative: 0.85 0.0; to_y: "background"; } + visible: 0; + } + } + part { name: "slide_long_text"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.35; to: "top_padding";} + rel2 { relative: 1.0 1.0; to: "top_padding";} + text { + font: "Tizen:style=Regular"; + size: 24; + text:"Slide Long (10 sec)"; + min: 1 1 ; + align: 0.0 0.0; + ellipsis: -1; + } + align: 0.5 0; + color: 173 170 165 255; + } + } + part { name: "swallow_label_1_bg"; + type: RECT; + description { state: "default" 0.0; + color: 200 200 200 127; + rel1.to: "swallow_label_1"; + rel2.to: "swallow_label_1"; + } + } + part { name: "swallow_label_1"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min : 330 40; + fixed: 0 1; + rel1 { relative: 0.15 1.0; to_y: "top_padding"; } + rel2 { relative: 0.85 1.0; to_y: "top_padding"; } + align: 0.0 0.0; + visible: 1; + } + } + part { + name: "padding1"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min : 0 80; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0 1.0; to: "swallow_label_1"; } + rel2 { relative: 1 1.0; to: "swallow_label_1"; } + visible: 0; + } + } + part { name: "slide_long1_text"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.35; to: "padding1";} + rel2 { relative: 1.0 1.0; to: "padding1";} + text { + font: "Tizen:style=Regular"; + size: 24; + text: "Slide Long (5 sec)"; + min: 1 1 ; + align: 0.0 0.0; + ellipsis: -1; + } + color: 173 170 165 255; + align: 0.5 0; + } + } + part { name: "swallow_label_2_bg"; + type: RECT; + description { state: "default" 0.0; + color: 200 200 200 127; + rel1.to: "swallow_label_2"; + rel2.to: "swallow_label_2"; + } + } + part { name: "swallow_label_2"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min : 330 40; + fixed: 0 1; + rel1 { relative: 0.15 1.0; to_y: "padding1"; } + rel2 { relative: 0.85 1.0; to_y: "padding1"; } + align: 0.0 0.0; + visible: 1; + } + } + part { + name: "padding2"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min : 0 80; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0 1.0; to: "swallow_label_2"; } + rel2 { relative: 1 1.0; to: "swallow_label_2"; } + visible: 0; + } + } + part { name: "slide_short_text"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.35; to: "padding2";} + rel2 { relative: 1.0 1.0; to: "padding2";} + text { + font: "Tizen:style=Regular"; + size: 24; + text: "Slide Short"; + min: 1 1 ; + align: 0.0 0.0; + ellipsis: -1; + } + color: 173 170 165 255; + align: 0.5 0; + } + } + part { name: "swallow_label_3_bg"; + type: RECT; + description { state: "default" 0.0; + color: 200 200 200 127; + rel1.to: "swallow_label_3"; + rel2.to: "swallow_label_3"; + } + } + part { name: "swallow_label_3"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min : 330 40; + fixed: 0 1; + rel1 { relative: 0.15 1.0; to_y: "padding2"; } + rel2 { relative: 0.85 1.0; to_y: "padding2"; } + align: 0.0 0.0; + visible: 1; + } + } + part { + name: "padding3"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min : 0 80; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0 1.0; to: "swallow_label_3"; } + rel2 { relative: 1 1.0; to: "swallow_label_3"; } + visible: 0; + } + } + part { name: "slide_bounce_text"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.35; to: "padding3";} + rel2 { relative: 1.0 1.0; to: "padding3";} + text { + font: "Tizen:style=Regular"; + size: 24; + text: "Slide Bounce"; + min: 1 1 ; + align: 0.0 0.0; + ellipsis: -1; + } + color: 173 170 165 255; + align: 0.5 0; + } + } + part { name: "swallow_label_4_bg"; + type: RECT; + description { state: "default" 0.0; + color: 200 200 200 127; + rel1.to: "swallow_label_4"; + rel2.to: "swallow_label_4"; + } + } + part { name: "swallow_label_4"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min : 330 40; + fixed: 0 1; + rel1 { relative: 0.15 1.0; to_y: "padding3"; } + rel2 { relative: 0.85 1.0; to_y: "padding3"; } + align: 0.0 0.0; + visible: 1; + } + } + part { + name: "padding4"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min : 0 80; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0 1.0; to: "swallow_label_4"; } + rel2 { relative: 1 1.0; to: "swallow_label_4"; } + visible: 0; + } + } + part { name: "slide_roll_text"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.35; to: "padding4";} + rel2 { relative: 1.0 1.0; to: "padding4";} + text { + font: "Tizen:style=Regular"; + size: 24; + text: "Slide Roll Short"; + min: 1 1 ; + align: 0.0 0.0; + ellipsis: -1; + } + color: 173 170 165 255; + align: 0.5 0; + } + } + part { name: "swallow_label_5_bg"; + type: RECT; + description { state: "default" 0.0; + color: 200 200 200 127; + rel1.to: "swallow_label_5"; + rel2.to: "swallow_label_5"; + } + } + part { name: "swallow_label_5"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min : 330 40; + fixed: 0 1; + rel1 { relative: 0.15 1.0; to_y: "padding4"; } + rel2 { relative: 0.85 1.0; to_y: "padding4"; } + align: 0.0 0.0; + visible: 1; + } + } + part { + name: "padding5"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min : 0 80; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0 1.0; to: "swallow_label_5"; } + rel2 { relative: 1 1.0; to: "swallow_label_5"; } + visible: 0; + } + } + part { name: "slide_roll1_text"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.35; to: "padding5";} + rel2 { relative: 1.0 1.0; to: "padding5";} + text { + font: "Tizen:style=Regular"; + size: 24; + text: "Slide Roll Long"; + min: 1 1 ; + align: 0.0 0.0; + ellipsis: -1; + } + color: 173 170 165 255; + align: 0.5 0; + } + } + part { name: "swallow_label_6_bg"; + type: RECT; + description { state: "default" 0.0; + color: 200 200 200 127; + rel1.to: "swallow_label_6"; + rel2.to: "swallow_label_6"; + } + } + part { name: "swallow_label_6"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min : 330 40; + fixed: 0 1; + rel1 { relative: 0.15 1.0; to_y: "padding5"; } + rel2 { relative: 0.85 1.0; to_y: "padding5"; } + align: 0.0 0.0; + visible: 1; + } + } + part { + name: "padding6"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min : 0 80; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0 1.0; to: "swallow_label_6"; } + rel2 { relative: 1 1.0; to: "swallow_label_6"; } + visible: 0; + } + } + part { name: "swallow_btn"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min : 330 40; + fixed: 0 1; + rel1 { relative: 0 1.0; to: "padding6"; } + rel2 { relative: 1 1.0; to: "padding6"; } + align: 0.0 0.0; + visible: 1; + } + } + part { + name: "padding7"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min : 0 30; + align: 0 1; + rel1 { relative: 0 1.0; to: "swallow_btn"; } + rel2 { relative: 1 1.0; } + visible: 0; + } + } + } + } diff --git a/test/RADemoTV/edc_resource/layout.edc b/test/RADemoTV/edc_resource/layout.edc new file mode 100644 index 0000000..9e724bd --- /dev/null +++ b/test/RADemoTV/edc_resource/layout.edc @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +group { name: "white_bg_layout"; + parts { + part { name: "base"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + color: 250 250 250 255; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + } + } + } +} + +group { name: "button_layout_1"; + parts { + part { name: "base"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 300 78; + color: 0 0 0 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + } + } + } +} + +group { name: "button_layout_2"; + parts { + part { name: "base"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 500 78; + color: 0 0 0 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + } + } + } +} + +group { name: "check_layout"; + parts { + part { name: "base"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 300 78; + color: 0 0 0 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + } + } + } +} + diff --git a/test/RADemoTV/edc_resource/pagecontrol.edc b/test/RADemoTV/edc_resource/pagecontrol.edc new file mode 100644 index 0000000..6b5f648 --- /dev/null +++ b/test/RADemoTV/edc_resource/pagecontrol.edc @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +group { name: "pagecontrol_layout"; + parts { + part { name: "bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + color: 0 0 0 255; + } + } + part { name: "scroller"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + to: "bg"; + } + rel2 { + relative: 1.0 1.0; + to: "bg"; + } + align: 0.5 0.5; + } + } + part { name: "controller"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: 0 52; + fixed: 0 1; + align: 0.5 1.0; + rel1.relative: 0.0 1.0; + rel2.relative: 1.0 1.0; + } + } + } +} + +group { name: "pagecontrol_page_layout"; + parts { + part { name: "page"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + } + } + part { name: "text"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + rel1.relative: 0.5 0.5; + rel2.relative: 0.5 0.5; + text { + min: 1 1; + size: 50; + ellipsis: -1; + } + } + } + } +} diff --git a/test/RADemoTV/edc_resource/popup_custom.edc b/test/RADemoTV/edc_resource/popup_custom.edc new file mode 100644 index 0000000..0b5d5b9 --- /dev/null +++ b/test/RADemoTV/edc_resource/popup_custom.edc @@ -0,0 +1,1047 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#define POPUP_CONTENT_DEFAULT_PADDING_TOP_MIN_INC 27 +#define POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 15 +#define POPUP_CONTENT_DEFAULT_PADDING_RIGHT_MIN_INC 15 +#define POPUP_CONTENT_DEFAULT_PADDING_BOTTOM_MIN_INC 27 +#define POPUP_EDITFIELD_LAYOUT_MINMAX_HEIGHT_INC 96 + +#define POPUP_IMAGE_VIEW_LAYOUT_BG_MIN_INC 0 112 +#define POPUP_IMAGE_SWALLOW_CONTENT_PADDING_BOTTOM_MIN_INC 0 20 +#define POPUP_DESCRIPTION_DEFAULT_TEXT_FONT_SIZE_INC 38 +#define POPUP_CHECK_VIEW_LAYOUT_CONTENT_MIN_INC 0 162 +#define POPUP_CHECK_VIEW_LAYOUT_BOTTOM_MIN_INC 0 90 +#define POPUP_CHECK_VIEW_SWALLOW_END_MIN_INC 50 50 +#define POPUP_CHECK_VIEW_LAYOUT_MIN_INC 0 252 + +#define POPUP_TEXT_INPUTTEXT_VIEW_LAYOUT_BG_MIN_INC 480 159 + +#define POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC 15 27 +#define POPUP_PROGRESSBAR_VIEW_LAYOUT_TEXT_FONT_SIZE_INC 0 38 +#define POPUP_PROGRESSBAR_VIEW_LAYOUT_BG_INC 0 69 +#define POPUP_PROGRESSBAR_VIEW_LAYOUT_BG_MIN_INC 0 161 + +#define POPUP_PROGRESSBAR_2TEXT_VIEW_LAYOUT_BG_MIN_INC 0 193 +#define POPUP_PROGRESSBAR_VIEW_LAYOUT_SUBTEXT_FONT_SIZE_INC 0 32 + +#define POPUP_GROUP_INDEX_BG_MIN_INC 0 52 +#define POPUP_GROUP_INDEX_PROCESSING_MIN_INC 28 28 +#define POPUP_GROUP_INDEX_PROCESSING_MAX_INC 28 28 +#define POPUP_GROUP_INDEX_PADDING_BEFORE_SWALLOW_MIN_INC 15 52 +#define POPUP_GROUP_INDEX_TEXT_MIN_INC 0 52 + +#define POPUP_TEXT_SLIDER_VIEW_LAYOUT_MIN_INC 0 144 +#define POPUP_TEXT_SLIDER_PADDING_SIZE_INC 15 27 +#define POPUP_TEXT_SLIDER_TEXT_DISCRIPTION_MIN_INC 0 38 +#define POPUP_TEXT_SLIDER_BG_MIN_INC 0 42 +#define POPUP_SLIDER_PADDING_LEFT_MIN_INC 10 0 + +#define POPUP_2TEXT_SLIDER_VIEW_LAYOUT_MIN_INC 0 176 +#define POPUP_TEXT_SLIDER_SUBTEXT_DISCRIPTION_MIN_INC 0 32 + +#define POPUP_SCROLLABLE_TEXT_VIEW_BG_HEIGHT_INC 252 + +#define POPUP_PROCESSING_SWALLOW_VIEW_LAYOUT_MIN_INC 36 36 +#define POPUP_PROCESSING_SWALLOW_VIEW_LAYOUT_MAX_INC 36 36 +#define POPUP_PROCESSING_SWALLOW_VIEW_LAYOUT_PADDING_AFTER_INC 15 90 +#define POPUP_PROCESSING_SWALLOW_VIEW_LAYOUT_TEXT_MIN_INC 0 90 +#define POPUP_PROCESSING_VIEW_LAYOUT_BG_MIN_INC 0 90 + +#define POPUP_TEXT_FONT_SIZE1 30 +#define POPUP_TEXT_FONT_SIZE2 24 +#define POPUP_TEXT_FONT_SIZE3 27 + +group { name: "popup_image_list_layout"; + styles { + style { name: "popup_content_style"; + base: "font=Tizen:style=Regular align=left font_size="POPUP_TEXT_FONT_SIZE1" color=#000000 wrap=mixed ellipsis=1.0 text_class=tizen"; + tag: "br" "\n"; + tag: "tab" "\t"; + } + } + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_IMAGE_VIEW_LAYOUT_BG_MIN_INC; + fixed: 1 0; + } + } + part { name: "pad_l"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 0.0 0.0; + rel2.relative: 0.0 1.0; + align: 0.0 0.0; + } + } + part { name: "pad_r"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 1.0 0.0; + rel2.relative: 1.0 1.0; + align: 1.0 0.0; + } + } + part { name: "pad_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + align: 0.0 0.0; + min: 0 POPUP_CONTENT_DEFAULT_PADDING_TOP_MIN_INC; + fixed: 0 1; + rel1 { + relative: 1.0 0.0;to_x: "pad_l"; + } + rel2 { + relative: 0.0 0.0;to_x: "pad_r"; + } + } + } + part { name: "content_bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + fixed: 1 0; + rel1 { + relative: 1.0 1.0; + to_x: "pad_l"; + to_y: "pad_t"; + } + rel2 { + relative: 0.0 0.0; + to_x: "pad_r"; + to_y: "pad_b"; + } + align: 0.5 0.5; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 0; + rel1.to: "content_bg"; + rel2.to: "content_bg"; + } + } + part { name: "pad_b"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_IMAGE_SWALLOW_CONTENT_PADDING_BOTTOM_MIN_INC; + fixed: 0 1; + rel1 { + relative: 1.0 0.0; + to_x: "pad_l"; + to_y: "elm.text"; + } + rel2 { + relative: 0.0 0.0; + to_x: "pad_r"; + to_y: "elm.text"; + } + align: 0.0 1.0; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + min: 0 POPUP_DESCRIPTION_DEFAULT_TEXT_FONT_SIZE_INC; + fixed: 0 1; + align: 0.0 1.0; + rel1 { + relative: 1.0 0.0; + to_x: "pad_l"; + to_y: "pad_bottom"; + } + rel2 { + relative: 0.0 0.0; + to_x: "pad_r"; + to_y: "pad_bottom"; + } + text { + style: "popup_content_style"; + min: 0 1; + } + color: 0 0 0 255; + } + } + part { name: "pad_bottom"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + align: 0.0 1.0; + min: 0 POPUP_CONTENT_DEFAULT_PADDING_BOTTOM_MIN_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to_x: "pad_l"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r"; + } + } + } + } +} + +group { name: "popup_checkview_layout"; + parts { + part { name: "bg"; + scale: 1; + type: SPACER; + description { state: "default" 0.0; + min: POPUP_CHECK_VIEW_LAYOUT_MIN_INC; + fixed: 1 0; + } + } + part { name: "pad_l"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 0.0 0.0; + rel2.relative: 0.0 1.0; + align: 0.0 0.0; + } + } + part { name: "pad_r"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_RIGHT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 1.0 0.0; + rel2.relative: 1.0 1.0; + align: 1.0 0.0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + min: POPUP_CHECK_VIEW_LAYOUT_CONTENT_MIN_INC; + align: 0.5 0.0; + rel2 { + relative: 1.0 0.0; + to: "pad_b"; + } + } + } + part { name: "pad_b"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + align: 0.0 1.0; + min: POPUP_CHECK_VIEW_LAYOUT_BOTTOM_MIN_INC; + fixed: 0 1; + rel1.relative: 0.0 1.0; + } + } + part { name: "elm.swallow.end"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + align: 0.0 0.5; + min: POPUP_CHECK_VIEW_SWALLOW_END_MIN_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + to_x: "pad_l"; + to_y: "pad_b"; + } + rel2 { + relative: 0.0 0.0; + to_x: "pad_r"; + to_y: "pad_b"; + } + } + } + } +} + +group { name: "processing_view_layout"; + styles { + style { name: "popup_processing_style"; + base: "font=Tizen:style=Regular align=left font_size="POPUP_TEXT_FONT_SIZE1" color=#000000 wrap=mixed ellipsis=1.0 text_class=tizen"; + tag: "br" "\n"; + tag: "tab" "\t"; + } + } + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROCESSING_VIEW_LAYOUT_BG_MIN_INC; + fixed: 1 0; + } + } + part { name: "pad_l"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 0.0 0.0; + rel2.relative: 0.0 1.0; + align: 0.0 0.0; + } + } + part { name: "pad_r"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 1.0 0.0; + rel2.relative: 1.0 1.0; + align: 1.0 0.0; + } + } + part { name: "processing"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + min: POPUP_PROCESSING_SWALLOW_VIEW_LAYOUT_MIN_INC; + max: POPUP_PROCESSING_SWALLOW_VIEW_LAYOUT_MAX_INC; + rel1 { + relative: 1.0 0.0; + to_x: "pad_l"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r"; + } + align: 0.0 0.5; + } + } + part { name: "pad_after_processing"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + min: POPUP_PROCESSING_SWALLOW_VIEW_LAYOUT_PADDING_AFTER_INC; + rel1 { + relative: 1.0 0.0; + to: "processing"; + } + rel2.to: "processing"; + align: 0.0 0.5; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROCESSING_SWALLOW_VIEW_LAYOUT_TEXT_MIN_INC; + fixed: 0 1; + rel1 { + relative: 1.0 0.0; + to: "pad_after_processing"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r"; + } + align: 0.0 0.5; + text { + style: "popup_processing_style"; + min: 0 1; + } + } + } + } +} + +group { name: "popup_text_progressbar_view_layout"; + styles { + style { name: "popup_progress_style"; + base: "font=Tizen:style=Regular align=right font_size="14" color=#000000 wrap=mixed ellipsis=1.0 text_class=tizen"; + tag: "br" "\n"; + tag: "tab" "\t"; + } + } + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_BG_MIN_INC; + fixed: 1 0; + } + } + part { name: "pad_l_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC; + max: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC; + fixed: 1 1; + rel2.relative: 0.0 0.0; + align: 0.0 0.0; + } + } + part { name: "pad_r_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC; + max: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC; + fixed: 1 1; + rel1.relative: 1.0 1.0; + align: 1.0 1.0; + } + } + part { name: "elm.text.description"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_TEXT_FONT_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "pad_l_t"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r_t"; + to_y: "pad_l_t"; + } + text { + style: "popup_processing_style"; + min: 0 1; + } + align: 0.0 0.0; + } + } + part { name: "progressbar_bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_BG_INC; + rel1 { + relative: 1.0 1.0; + to_x: "pad_l_t"; + to_y: "elm.text.description"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r_t"; + to_y: "elm.text.description"; + } + align: 0.0 0.0; + } + } + part { name: "progressbar"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1.to: "progressbar_bg"; + rel2.to: "progressbar_bg"; + } + } + } +} + +group { name: "popup_2text_progressbar_view_layout"; + styles { + style { name: "popup_subtext_style"; + base: "font=Tizen:style=Regular align=left font_size="POPUP_TEXT_FONT_SIZE2" color=#000000 wrap=mixed ellipsis=1.0 text_class=tizen"; + tag: "br" "\n"; + tag: "tab" "\t"; + } + } + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROGRESSBAR_2TEXT_VIEW_LAYOUT_BG_MIN_INC; + fixed: 1 0; + } + } + part { name: "pad_l_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC; + max: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC; + fixed: 1 1; + rel2.relative: 0.0 0.0; + align: 0.0 0.0; + } + } + part { name: "pad_r_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC; + max: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC; + fixed: 1 1; + rel1.relative: 1.0 1.0; + align: 1.0 1.0; + } + } + part { name: "elm.text.description"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_TEXT_FONT_SIZE_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to: "pad_l_t"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r_t"; + to_y: "pad_l_t"; + } + text { + style: "popup_processing_style"; + min: 0 1; + } + align: 0.0 0.0; + } + } + part { name: "elm.subtext.description"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_SUBTEXT_FONT_SIZE_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to_x: "pad_l_t"; + to_y: "elm.text.description"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r_t"; + to_y: "elm.text.description"; + } + text { + style: "popup_subtext_style"; + min: 0 1; + } + align: 0.0 0.0; + } + } + part { name: "progressbar_bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_BG_INC; + rel1 { + relative: 1.0 1.0; + to_x: "pad_l_t"; + to_y: "elm.subtext.description"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r_t"; + to_y: "elm.subtext.description"; + } + align: 0.0 0.0; + } + } + part { name: "progressbar"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1.to: "progressbar_bg"; + rel2.to: "progressbar_bg"; + } + } + } +} + +group { name: "popup_groupindex_view_layout"; + styles { + style { name: "popup_groupindex_style"; + base: "font=Tizen:style=Regular align=right font_size="POPUP_TEXT_FONT_SIZE3" color=#000000 wrap=mixed ellipsis=1.0 text_class=tizen"; + tag: "br" "\n"; + tag: "tab" "\t"; + } + } + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + } + } + part { name: "pad_l"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 0.0 0.0; + rel2.relative: 0.0 1.0; + align: 0.0 0.0; + } + } + part { name: "pad_r"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_RIGHT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 1.0 0.0; + rel2.relative: 1.0 1.0; + align: 1.0 0.0; + } + } + part { name: "index_bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_GROUP_INDEX_BG_MIN_INC; + fixed: 0 1; + rel1 { + relative: 1.0 0.0; + to: "pad_l"; + } + rel2 { + relative: 0.0 0.0; + to: "pad_r"; + } + align: 0.5 0.0; + } + } + part { name: "processing"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: POPUP_GROUP_INDEX_PROCESSING_MIN_INC; + max: POPUP_GROUP_INDEX_PROCESSING_MAX_INC; + rel1 { + relative: 1.0 0.0; + to: "index_bg"; + } + rel2.to: "index_bg"; + align: 1.0 0.5; + } + } + part { name: "pad_before_swallow"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_GROUP_INDEX_PADDING_BEFORE_SWALLOW_MIN_INC; + rel1 { + relative: 0.0 0.0; + to: "processing"; + } + rel2 { + relative: 0.0 1.0; + to: "processing"; + } + align: 1.0 0.5; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + min: POPUP_GROUP_INDEX_TEXT_MIN_INC; + fixed: 0 1; + rel1 { + relative: 0.0 0.0; + to: "index_bg"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_before_swallow"; + to_y: "index_bg"; + } + align: 0.5 0.0; + text { + style: "popup_groupindex_style"; + min: 0 1; + } + } + } + part { name: "genlist"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + rel1 { + relative: 0.0 1.0; + to_y: "index_bg"; + } + align: 0.5 0.0; + } + } + } +} + +group { name: "popup_text_slider_view_layout"; + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_TEXT_SLIDER_VIEW_LAYOUT_MIN_INC; + fixed: 1 0; + } + } + part { name: "pad_l_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_TEXT_SLIDER_PADDING_SIZE_INC; + max: POPUP_TEXT_SLIDER_PADDING_SIZE_INC; + fixed: 1 1; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 0.0 0.0; + } + align: 0.0 0.0; + } + } + part { name: "pad_r_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_TEXT_SLIDER_PADDING_SIZE_INC; + max: POPUP_TEXT_SLIDER_PADDING_SIZE_INC; + fixed: 1 1; + rel1.relative: 1.0 1.0; + rel2.relative: 1.0 1.0; + align: 1.0 1.0; + } + } + part { name: "elm.text.description"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + min: POPUP_TEXT_SLIDER_TEXT_DISCRIPTION_MIN_INC; + rel1 { + relative: 1.0 1.0; + to: "pad_l_t"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r_t"; + to_y: "pad_l_t"; + } + text { + style: "popup_processing_style"; + min: 0 1; + } + align: 0.0 0.0; + } + } + part { name: "slider"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + min: POPUP_TEXT_SLIDER_BG_MIN_INC; + rel1 { + relative: 1.0 0.0; + to_y: "pad_r_t"; + to_x: "pad_l_t"; + } + rel2 { + relative: 0.0 0.0; + to: "pad_r_t"; + } + align: 0.0 1.0; + } + } + } +} + +group { name: "popup_2text_slider_view_layout"; + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_2TEXT_SLIDER_VIEW_LAYOUT_MIN_INC; + fixed: 1 0; + } + } + part { name: "pad_l_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_TEXT_SLIDER_PADDING_SIZE_INC; + max: POPUP_TEXT_SLIDER_PADDING_SIZE_INC; + fixed: 1 1; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 0.0 0.0; + } + align: 0.0 0.0; + } + } + part { name: "pad_r_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_TEXT_SLIDER_PADDING_SIZE_INC; + max: POPUP_TEXT_SLIDER_PADDING_SIZE_INC; + fixed: 1 1; + rel1.relative: 1.0 1.0; + rel2.relative: 1.0 1.0; + align: 1.0 1.0; + } + } + part { name: "elm.text.description"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + min: POPUP_TEXT_SLIDER_TEXT_DISCRIPTION_MIN_INC; + rel1 { + relative: 1.0 1.0; + to: "pad_l_t"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r_t"; + to_y: "pad_l_t"; + } + text { + style: "popup_processing_style"; + min: 0 1; + } + align: 0.0 0.0; + } + } + part { name: "elm.subtext.description"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + min: POPUP_TEXT_SLIDER_SUBTEXT_DISCRIPTION_MIN_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to_x: "pad_l_t"; + to_y: "elm.text.description"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r_t"; + to_y: "elm.text.description"; + } + text { + style: "popup_subtext_style"; + min: 0 1; + } + align: 0.0 0.0; + } + } + part { name: "slider"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + min: POPUP_TEXT_SLIDER_BG_MIN_INC; + rel1 { + relative: 1.0 0.0; + to_y: "pad_r_t"; + to_x: "pad_l_t"; + } + rel2 { + relative: 0.0 0.0; + to: "pad_r_t"; + } + align: 0.0 1.0; + } + } + } +} + +group { name: "popup_scrollable_text"; + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 0 POPUP_SCROLLABLE_TEXT_VIEW_BG_HEIGHT_INC; + max: -1 POPUP_SCROLLABLE_TEXT_VIEW_BG_HEIGHT_INC; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + } + } + } +} + +group { name: "popup_input_text"; + parts { + part { name: "pad_l"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 0.0 0.0; + rel2.relative: 0.0 1.0; + align: 0.0 0.0; + } + } + part { name: "pad_r"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 1.0 0.0; + rel2.relative: 1.0 1.0; + align: 1.0 0.0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: 0 POPUP_EDITFIELD_LAYOUT_MINMAX_HEIGHT_INC; + max: -1 POPUP_EDITFIELD_LAYOUT_MINMAX_HEIGHT_INC; + align: 0.5 0.5; + rel1{ + relative: 1.0 0.0 ; + to_x: "pad_l"; + } + rel2{ + relative: 0.0 1.0; + to_x: "pad_r"; + } + } + } + } +} + +group { name: "popup_text_input_text"; + styles { + style { name: "popup_input_style"; + base: "font=Tizen:style=Regular align=left font_size="POPUP_TEXT_FONT_SIZE1" color=#000000 wrap=mixed text_class=tizen"; + tag: "br" "\n"; + tag: "tab" "\t"; + } + } + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_TEXT_INPUTTEXT_VIEW_LAYOUT_BG_MIN_INC; + } + } + part { name: "pad_l_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC POPUP_CONTENT_DEFAULT_PADDING_TOP_MIN_INC; + max: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC POPUP_CONTENT_DEFAULT_PADDING_TOP_MIN_INC; + fixed: 1 1; + rel1.to: "bg"; + rel2 { + relative: 0.0 0.0; + to: "bg"; + } + align: 0.0 0.0; + } + } + part { name: "pad_r_b"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_RIGHT_MIN_INC POPUP_CONTENT_DEFAULT_PADDING_TOP_MIN_INC; + max: POPUP_CONTENT_DEFAULT_PADDING_RIGHT_MIN_INC POPUP_CONTENT_DEFAULT_PADDING_TOP_MIN_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + to: "bg"; + } + rel2.to: "bg"; + align: 1.0 1.0; + } + } + part { name: "elm.text.description"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + min: 0 POPUP_DESCRIPTION_DEFAULT_TEXT_FONT_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "pad_l_t"; + } + rel2 { + relative: 0.0 0.0; + to_x: "pad_r_b"; + to_y: "elm.swallow.content"; + } + text { + style: "popup_input_style"; + min: 0 1; + } + align: 0.5 0.0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: 0 POPUP_EDITFIELD_LAYOUT_MINMAX_HEIGHT_INC; + max: -1 POPUP_EDITFIELD_LAYOUT_MINMAX_HEIGHT_INC; + fixed: 0 1; + align: 0.0 1.0; + rel1{ + relative: 1.0 0.0 ; + to_x: "pad_l_t"; + to_y: "pad_r_b"; + } + rel2{ + relative: 0.0 0.0; + to: "pad_r_b"; + } + } + } + } +} diff --git a/test/RADemoTV/edc_resource/progressbar.edc b/test/RADemoTV/edc_resource/progressbar.edc new file mode 100644 index 0000000..d3b5428 --- /dev/null +++ b/test/RADemoTV/edc_resource/progressbar.edc @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +group { name: "progessbar_layout"; + parts { + part { name: "bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "top_padding"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: 0 30; + max: -1 30; + fixed: 0 1; + rel1 { + relative: 0.5 0.0; + to_y: "bg"; + } + rel2 { + relative: 0.5 0.0; + to_y: "bg"; + } + align: 0.5 0.0; + } + } + part { name: "left_padding"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 10 0; + fixed: 1 0; + rel1.relative: 0.0 0.0; + rel1.to_x: "bg"; + rel2.relative: 0.0 1.0; + align: 0.0 0.5; + color: 0 0 0 0; + } + } + part { name: "right_padding"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 10 0; + fixed: 1 0; + rel1.relative: 1.0 0.0; + rel2.to_x: "bg"; + rel2.relative: 1.0 1.0; + align: 1.0 0.5; + color: 0 0 0 0; + } + } + part { name: "list_progress"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 1.0 1.0; to_x: "left_padding"; to_y: "top_padding"; } + rel2 { relative: 0.0 1.0; to_x: "right_padding"; to_y: "top_padding"; } + align: 0.5 0; + } + } + part { name: "top_padding1"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: 10 30; + max: 10 30; + fixed: 1 1; + rel1.relative: 0.5 1.0; + rel2.relative: 0.5 1.0; + rel1.to_y:"list_progress"; + rel2.to_y:"list_progress"; + align: 0.5 0.0; + } + } + part { name: "pending_list"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 1.0 1.0; to_x: "left_padding"; to_y: "top_padding1"; } + rel2 { relative: 0.0 1.0; to_x: "right_padding"; to_y: "top_padding1"; } + align: 0.5 0; + } + } + part { name: "top_padding2"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: 10 30; + max: 10 30; + fixed: 1 1; + rel1.relative: 0.5 1.0; + rel2.relative: 0.5 1.0; + rel1.to_y:"pending_list"; + rel2.to_y:"pending_list"; + align: 0.5 0.0; + } + } + part { name: "process_large"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 1.0 1.0; to_x: "left_padding"; to_y: "top_padding2"; } + rel2 { relative: 0.0 1.0; to_x: "right_padding"; to_y: "top_padding2"; } + align: 0.5 0; + } + } + part { name: "top_padding3"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: 10 30; + max: 10 30; + fixed: 1 1; + rel1.relative: 0.5 1.0; + rel2.relative: 0.5 1.0; + rel1.to_y:"process_large"; + rel2.to_y:"process_large"; + align: 0.5 0.0; + } + } + part { name: "process_medium"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 1.0 1.0; to_x: "left_padding"; to_y: "top_padding3"; } + rel2 { relative: 0.0 1.0; to_x: "right_padding"; to_y: "top_padding3"; } + align: 0.5 0; + } + } + part { name: "top_padding4"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: 10 30; + max: 10 30; + fixed: 1 1; + rel1.relative: 0.5 1.0; + rel2.relative: 0.5 1.0; + rel1.to_y:"process_medium"; + rel2.to_y:"process_medium"; + align: 0.5 0.0; + } + } + part { name: "process_small"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 1.0 1.0; to_x: "left_padding"; to_y: "top_padding4"; } + rel2 { relative: 0.0 1.0; to_x: "right_padding"; to_y: "top_padding4"; } + align: 0.5 0; + } + } + } + } + diff --git a/test/RADemoTV/edc_resource/slider.edc b/test/RADemoTV/edc_resource/slider.edc new file mode 100644 index 0000000..4e766b5 --- /dev/null +++ b/test/RADemoTV/edc_resource/slider.edc @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +group { name: "slider_layout"; + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 320 0; + max: 320 -1; + } + } + part { name: "top_pad"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + align: 0.0 0.0; + min: 0 50; + fixed: 0 1; + rel1.to: "bg"; + rel2 { + relative: 1.0 0.0; + to: "bg"; + } + } + } + part { name: "elm.swallow.content1"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1 { + relative: 0.0 1.0; + to: "top_pad"; + } + rel2 { + relative: 1.0 0.0; + to: "top_pad"; + } + fixed: 1 1; + } + } + part { name: "bottom_pad"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 0 10; + max: -1 10; + align: 0.0 0.0; + rel1 { + relative: 0.0 1.0; + to: "elm.swallow.content1"; + } + rel2.to: "elm.swallow.content1"; + fixed: 0 1; + } + } + part { name: "elm.swallow.content2"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1 { + to: "bottom_pad"; + relative: 0.0 1.0; + } + rel2 { + to: "bottom_pad"; + relative: 1.0 1.0; + } + fixed: 1 1; + } + } + part { name: "bottom_pad1"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 0 10; + max: -1 10; + align: 0.0 0.0; + rel1 { + relative: 0.0 1.0; + to: "elm.swallow.content2"; + } + rel2.to: "elm.swallow.content2"; + fixed: 0 1; + } + } + part { name: "elm.swallow.content3"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1 { + to: "bottom_pad1"; + relative: 0.0 1.0; + } + rel2 { + to: "bottom_pad1"; + relative: 1.0 1.0; + } + fixed: 1 1; + } + } + part { name: "bottom_pad2"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 0 10; + max: -1 10; + align: 0.0 0.0; + rel1 { + relative: 0.0 1.0; + to: "elm.swallow.content3"; + } + rel2.to: "elm.swallow.content3"; + fixed: 0 1; + } + } + part { name: "elm.swallow.content4"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1 { + to: "bottom_pad2"; + relative: 0.0 1.0; + } + rel2 { + to: "bottom_pad2"; + relative: 1.0 1.0; + } + fixed: 1 1; + } + } + } +} diff --git a/test/RADemoTV/entry.edc b/test/RADemoTV/entry.edc new file mode 100644 index 0000000..9e0fdc4 --- /dev/null +++ b/test/RADemoTV/entry.edc @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +group { name: "entry_layout"; + parts { + part { name: "bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + color: 220 220 220 255; + } + } + part { name: "entry_part"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + rel1.to: "bg"; + rel2.to: "bg"; + } + } + } +} diff --git a/test/RADemoTV/genlist.edc b/test/RADemoTV/genlist.edc new file mode 100644 index 0000000..1de7c7e --- /dev/null +++ b/test/RADemoTV/genlist.edc @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +group { name: "gl_custom_item"; + styles{ + style { name: "text_style"; + base: "color=#000000FF font=Tizen:style=Regular font_size=30 ellipsis=1.0"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "tab" "\t"; + tag: "b" "+ font_weight=Bold"; + } + } + parts { + part { name: "base"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + } + } + part { name: "left_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 32 0; + align: 0.0 0.0; + rel1 { to: "base"; relative: 0.0 0.0; } + rel2 { to: "base"; relative: 0.0 1.0; } + } + } + part { name: "right_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 32 0; + align: 1.0 0.0; + rel1 { to: "base"; relative: 1.0 0.0; } + rel2 { to: "base"; relative: 1.0 1.0; } + } + } + part { name: "top_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 0 24; + align: 0.0 0.0; + rel1 { to_x: "left_padding"; to_y: "base"; relative: 1.0 0.0; } + rel2 { to_x: "right_padding"; to_y: "base"; relative: 0.0 0.0; } + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + min: 0 41; + align: 0.0 0.0; + rel1 { to: "top_padding"; relative: 0.0 1.0; } + rel2 { to: "top_padding"; relative: 1.0 1.0; } + text.style: "text_style"; + text.min: 0 1; + } + } + part { name: "text_content_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 0 10; + align: 0.0 0.0; + rel1 { to: "elm.text"; relative: 0.0 1.0; } + rel2 { to: "elm.text"; relative: 1.0 1.0; } + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + align: 0.5 0.0; + rel1 { to: "text_content_padding"; relative: 0.0 1.0; } + rel2 { to: "bottom_padding"; relative: 1.0 0.0; } + } + } + part { name: "bottom_padding"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 0 24; + align: 0.5 1.0; + rel1 { to: "base"; relative: 0.0 1.0; } + rel2 { to: "base"; relative: 1.0 1.0; } + } + } + } +} diff --git a/test/RADemoTV/inc/fido_handler.h b/test/RADemoTV/inc/fido_handler.h new file mode 100644 index 0000000..748eecd --- /dev/null +++ b/test/RADemoTV/inc/fido_handler.h @@ -0,0 +1,30 @@ +/* + * fido_handler.h + * + * Created on: Sep 7, 2016 + * Author: manasij.r + */ + +#ifndef FIDO_HANDLER_H_ +#define FIDO_HANDLER_H_ + +#include + +typedef struct _fido_reg_assertion { + char *aaid; + unsigned char *kid; + int kid_len; +} fido_reg_assertion_t; + +//fido_reg_assertion_t* fido_handler_decode_reg_assertion(const char *uaf_reg_resp); + +typedef void (*on_reg_resp)(fido_reg_assertion_t *reg_resp, int err, void *user_data); +int fido_handler_req_reg(const char *uname, on_reg_resp cb, void *user_data); + +typedef void (*on_auth_resp)(fido_reg_assertion_t *reg_resp, int err, void *user_data); +int fido_handler_req_auth(const char *kid, on_auth_resp cb, void *user_data); + +typedef void (*on_dereg_resp)(int err, void *user_data); +int fido_handler_req_dereg(const char *kid, on_dereg_resp cb, void *user_data); + +#endif /* FIDO_HANDLER_H_ */ diff --git a/test/RADemoTV/inc/rademotv.h b/test/RADemoTV/inc/rademotv.h new file mode 100644 index 0000000..46bbe30 --- /dev/null +++ b/test/RADemoTV/inc/rademotv.h @@ -0,0 +1,42 @@ +#ifndef __rademotv_H__ +#define __rademotv_H__ + +#include +#include +#include +#include +#include +#include "storage_handler.h" + +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "rademotv" + +#if !defined(PACKAGE) +#define PACKAGE "org.example.rademotv" +#endif + +typedef struct appdata { + Evas_Object *win; + Evas_Object *conform; + Evas_Object *layout; + Evas_Object *nf; + Evas_Object *list; + Evas_Object *datetime; + Evas_Object *popup; + Evas_Object *button; + struct tm saved_time; + fido_data_t *stored_data; + + Evas_Object *u_popup; + Evas_Object *u_btn; + Evas_Object *u_entry; + Evas_Object *u_layout; + char *uname; + Evas_Object *w_popup; +} appdata_s; + +void create_list_view(appdata_s *ad); + +#endif /* __rademotv_H__ */ diff --git a/test/RADemoTV/inc/storage_handler.h b/test/RADemoTV/inc/storage_handler.h new file mode 100644 index 0000000..ba96a7e --- /dev/null +++ b/test/RADemoTV/inc/storage_handler.h @@ -0,0 +1,27 @@ +/* + * storage_handler.h + * + * Created on: Sep 7, 2016 + * Author: manasij.r + */ + +#ifndef STORAGE_HANDLER_H_ +#define STORAGE_HANDLER_H_ + +#include + +typedef struct _fido_data { + char *uname; + char *kid; + int sc; + int v; + char *aaid; +} fido_data_t; + +int storage_handler_store(const fido_data_t *data); + +fido_data_t* storage_handler_search(const fido_data_t *filter); + +int storage_handler_delete_all(void); + +#endif /* STORAGE_HANDLER_H_ */ diff --git a/test/RADemoTV/inc/util.h b/test/RADemoTV/inc/util.h new file mode 100644 index 0000000..de6e1fc --- /dev/null +++ b/test/RADemoTV/inc/util.h @@ -0,0 +1,51 @@ +/* + * util.h + * + * Created on: Sep 8, 2016 + * Author: manasij.r + */ + +#ifndef UTIL_H_ +#define UTIL_H_ + +#define RET_IF_FAIL_VOID(cond) do {\ + if (!(cond)){\ + return;\ + }\ +} while(0) + +#define RET_IF_FAIL(cond, err) do {\ + if (!(cond)){\ + return err;\ + }\ +} while(0) + +#define CATCH_IF_FAIL(cond) do {\ + if (!(cond)){\ + goto CATCH;\ + }\ +} while(0) + +#define CATCH_IF_FAIL_X(cond, expr) do {\ + if (!(cond)){\ + expr;\ + goto CATCH;\ + }\ +} while(0) + +#define GOTO_IF_FAIL(cond, catch_block) do {\ + if (!(cond)){\ + goto catch_block;\ + }\ +} while(0) + +#define SAFE_DELETE(x) do {\ + if (x != NULL) {\ + free(x); \ + x = NULL;\ + }\ +} while(0) + +#define _SAFE_DUP(x) ((x) ? strdup(x) : NULL) + +#endif /* UTIL_H_ */ diff --git a/test/RADemoTV/label.edc b/test/RADemoTV/label.edc new file mode 100644 index 0000000..5d3c9b9 --- /dev/null +++ b/test/RADemoTV/label.edc @@ -0,0 +1,585 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#define LABEL_WIDTH 350.0 +#define LABEL_HEIGHT 40.0 +#define LABEL_GAP 100.0 + +group { + name: "label_layout"; + parts{ + part { + name: "top_padding"; + type: RECT; + scale: 1; //allow scaling + description { + state: "default" 0.0; + min : LABEL_WIDTH 50; //minimum size for gap filler + fixed: 0 1; + rel1 { relative: 0 0; } + rel2 { relative: 1 0; } + align: 0 0; + visible: 0; + } + } + part { + name: "label1_bg"; + type: RECT; + description { + color: 200 200 200 127; + rel1.to:"label1"; + rel2.to:"label1"; + } + } + part { + name: "label1"; + type: SWALLOW; + scale: 1; + description { + fixed: 1 1; + min: LABEL_WIDTH LABEL_HEIGHT; + max: LABEL_WIDTH LABEL_HEIGHT; + state: "default" 0.0; + rel1 { relative: 0 1.0; to_y: "top_padding"; } + align: 0.5 0; + } + } + part { + name: "label1_bottom_padding"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min : LABEL_WIDTH LABEL_GAP; + fixed: 0 1; + rel1 { relative: 0 1.0; to_y: "label1"; } + rel2 { relative: 1 1.0; to_y: "label1"; } + visible: 0; + } + } + part { + name: "label2_bg"; + type: RECT; + description { + color: 200 200 200 127; + rel1.to:"label2"; + rel2.to:"label2"; + } + } + part { + name: "label2"; + type: SWALLOW; + scale: 1; + description { + fixed: 1 0; + min: LABEL_WIDTH LABEL_HEIGHT; + max: LABEL_WIDTH LABEL_HEIGHT; + state: "default" 0.0; + rel1 { relative: 0 1.0; to_y: "label1_bottom_padding"; } + align: 0.5 0; + } + } + part { + name: "label2_bottom_padding"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min : 0 LABEL_GAP; + fixed: 0 1; + rel1 { relative: 0 1.0; to_y: "label2"; } + rel2 { relative: 1 1.0; to_y: "label2"; } + visible: 0; + } + } + part { + name: "label3_bg"; + type: RECT; + description { + color: 200 200 200 127; + rel1.to:"label3"; + rel2.to:"label3"; + } + } + part { + name: "label3"; + type: SWALLOW; + scale: 1; + description { + fixed: 1 1; + min: LABEL_WIDTH LABEL_HEIGHT; + max: LABEL_WIDTH LABEL_HEIGHT; + state: "default" 0.0; + rel1 { relative: 0 1.0; to_y: "label2_bottom_padding"; } + align: 0.5 0; + } + } + part { + name: "label3_bottom_padding"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min : 0 LABEL_GAP; + fixed: 0 1; + rel1 { relative: 0 1.0; to_y: "label3"; } + rel2 { relative: 1 1.0; to_y: "label3"; } + visible: 0; + } + } + part { + name: "label4_bg"; + type: RECT; + description { + color: 200 200 200 127; + rel1.to:"label4"; + rel2.to:"label4"; + } + } + part { + name: "label4"; + type: SWALLOW; + scale: 1; + description { + fixed: 1 1; + min: LABEL_WIDTH LABEL_HEIGHT; + max: LABEL_WIDTH LABEL_HEIGHT; + state: "default" 0.0; + rel1 { relative: 0 1.0; to_y: "label3_bottom_padding"; } + align: 0.5 0; + } + } + part { + name: "label4_bottom_padding"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min : 0 LABEL_GAP; + fixed: 0 1; + rel1 { relative: 0 1.0; to_y: "label4"; } + rel2 { relative: 1 1.0; to_y: "label4"; } + visible: 0; + } + } + part { + name: "label5_bg"; + type: RECT; + description { + color: 200 200 200 127; + rel1.to:"label5"; + rel2.to:"label5"; + } + } + part { + name: "label5"; + type: SWALLOW; + scale: 1; + description { + fixed: 1 1; + min: LABEL_WIDTH LABEL_HEIGHT; + max: LABEL_WIDTH LABEL_HEIGHT; + state: "default" 0.0; + rel1 { relative: 0 1.0; to_y: "label4_bottom_padding"; } + align: 0.5 0; + } + } + part { + name: "label5_bottom_padding"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min : 0 30; + rel1 { relative: 0 1.0; to_y: "label5"; } + rel2 { relative: 1 1.0; } + visible: 0; + align: 0.5 1.0; + } + } + }//end parts +#undef LABEL_WIDTH +#undef LABEL_HEIGHT +#undef LABEL_GAP +} //end group + + group { + name, "label_slide_layout"; + parts { + part { name, "background"; + type: RECT; + description { + state: "default" 0.0; + min : 0 100; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0 0; } + rel2 { relative: 1 0; } + visible: 0; + } + } + part { + name: "top_padding"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min : 0 80; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0.15 0.0; to_y: "background"; } + rel2 { relative: 0.85 0.0; to_y: "background"; } + visible: 0; + } + } + part { name: "slide_long_text"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.35; to: "top_padding";} + rel2 { relative: 1.0 1.0; to: "top_padding";} + text { + font: "Tizen:style=Regular"; + size: 24; + text:"Slide Long (10 sec)"; + min: 1 1 ; + align: 0.0 0.0; + ellipsis: -1; + } + align: 0.5 0; + color: 173 170 165 255; + } + } + part { name: "swallow_label_1_bg"; + type: RECT; + description { state: "default" 0.0; + color: 200 200 200 127; + rel1.to: "swallow_label_1"; + rel2.to: "swallow_label_1"; + } + } + part { name: "swallow_label_1"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min : 330 40; + fixed: 0 1; + rel1 { relative: 0.15 1.0; to_y: "top_padding"; } + rel2 { relative: 0.85 1.0; to_y: "top_padding"; } + align: 0.0 0.0; + visible: 1; + } + } + part { + name: "padding1"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min : 0 80; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0 1.0; to: "swallow_label_1"; } + rel2 { relative: 1 1.0; to: "swallow_label_1"; } + visible: 0; + } + } + part { name: "slide_long1_text"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.35; to: "padding1";} + rel2 { relative: 1.0 1.0; to: "padding1";} + text { + font: "Tizen:style=Regular"; + size: 24; + text: "Slide Long (5 sec)"; + min: 1 1 ; + align: 0.0 0.0; + ellipsis: -1; + } + color: 173 170 165 255; + align: 0.5 0; + } + } + part { name: "swallow_label_2_bg"; + type: RECT; + description { state: "default" 0.0; + color: 200 200 200 127; + rel1.to: "swallow_label_2"; + rel2.to: "swallow_label_2"; + } + } + part { name: "swallow_label_2"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min : 330 40; + fixed: 0 1; + rel1 { relative: 0.15 1.0; to_y: "padding1"; } + rel2 { relative: 0.85 1.0; to_y: "padding1"; } + align: 0.0 0.0; + visible: 1; + } + } + part { + name: "padding2"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min : 0 80; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0 1.0; to: "swallow_label_2"; } + rel2 { relative: 1 1.0; to: "swallow_label_2"; } + visible: 0; + } + } + part { name: "slide_short_text"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.35; to: "padding2";} + rel2 { relative: 1.0 1.0; to: "padding2";} + text { + font: "Tizen:style=Regular"; + size: 24; + text: "Slide Short"; + min: 1 1 ; + align: 0.0 0.0; + ellipsis: -1; + } + color: 173 170 165 255; + align: 0.5 0; + } + } + part { name: "swallow_label_3_bg"; + type: RECT; + description { state: "default" 0.0; + color: 200 200 200 127; + rel1.to: "swallow_label_3"; + rel2.to: "swallow_label_3"; + } + } + part { name: "swallow_label_3"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min : 330 40; + fixed: 0 1; + rel1 { relative: 0.15 1.0; to_y: "padding2"; } + rel2 { relative: 0.85 1.0; to_y: "padding2"; } + align: 0.0 0.0; + visible: 1; + } + } + part { + name: "padding3"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min : 0 80; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0 1.0; to: "swallow_label_3"; } + rel2 { relative: 1 1.0; to: "swallow_label_3"; } + visible: 0; + } + } + part { name: "slide_bounce_text"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.35; to: "padding3";} + rel2 { relative: 1.0 1.0; to: "padding3";} + text { + font: "Tizen:style=Regular"; + size: 24; + text: "Slide Bounce"; + min: 1 1 ; + align: 0.0 0.0; + ellipsis: -1; + } + color: 173 170 165 255; + align: 0.5 0; + } + } + part { name: "swallow_label_4_bg"; + type: RECT; + description { state: "default" 0.0; + color: 200 200 200 127; + rel1.to: "swallow_label_4"; + rel2.to: "swallow_label_4"; + } + } + part { name: "swallow_label_4"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min : 330 40; + fixed: 0 1; + rel1 { relative: 0.15 1.0; to_y: "padding3"; } + rel2 { relative: 0.85 1.0; to_y: "padding3"; } + align: 0.0 0.0; + visible: 1; + } + } + part { + name: "padding4"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min : 0 80; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0 1.0; to: "swallow_label_4"; } + rel2 { relative: 1 1.0; to: "swallow_label_4"; } + visible: 0; + } + } + part { name: "slide_roll_text"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.35; to: "padding4";} + rel2 { relative: 1.0 1.0; to: "padding4";} + text { + font: "Tizen:style=Regular"; + size: 24; + text: "Slide Roll Short"; + min: 1 1 ; + align: 0.0 0.0; + ellipsis: -1; + } + color: 173 170 165 255; + align: 0.5 0; + } + } + part { name: "swallow_label_5_bg"; + type: RECT; + description { state: "default" 0.0; + color: 200 200 200 127; + rel1.to: "swallow_label_5"; + rel2.to: "swallow_label_5"; + } + } + part { name: "swallow_label_5"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min : 330 40; + fixed: 0 1; + rel1 { relative: 0.15 1.0; to_y: "padding4"; } + rel2 { relative: 0.85 1.0; to_y: "padding4"; } + align: 0.0 0.0; + visible: 1; + } + } + part { + name: "padding5"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min : 0 80; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0 1.0; to: "swallow_label_5"; } + rel2 { relative: 1 1.0; to: "swallow_label_5"; } + visible: 0; + } + } + part { name: "slide_roll1_text"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 0.0 0.35; to: "padding5";} + rel2 { relative: 1.0 1.0; to: "padding5";} + text { + font: "Tizen:style=Regular"; + size: 24; + text: "Slide Roll Long"; + min: 1 1 ; + align: 0.0 0.0; + ellipsis: -1; + } + color: 173 170 165 255; + align: 0.5 0; + } + } + part { name: "swallow_label_6_bg"; + type: RECT; + description { state: "default" 0.0; + color: 200 200 200 127; + rel1.to: "swallow_label_6"; + rel2.to: "swallow_label_6"; + } + } + part { name: "swallow_label_6"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min : 330 40; + fixed: 0 1; + rel1 { relative: 0.15 1.0; to_y: "padding5"; } + rel2 { relative: 0.85 1.0; to_y: "padding5"; } + align: 0.0 0.0; + visible: 1; + } + } + part { + name: "padding6"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min : 0 80; + fixed: 0 1; + align: 0 0; + rel1 { relative: 0 1.0; to: "swallow_label_6"; } + rel2 { relative: 1 1.0; to: "swallow_label_6"; } + visible: 0; + } + } + part { name: "swallow_btn"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min : 330 40; + fixed: 0 1; + rel1 { relative: 0 1.0; to: "padding6"; } + rel2 { relative: 1 1.0; to: "padding6"; } + align: 0.0 0.0; + visible: 1; + } + } + part { + name: "padding7"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min : 0 30; + align: 0 1; + rel1 { relative: 0 1.0; to: "swallow_btn"; } + rel2 { relative: 1 1.0; } + visible: 0; + } + } + } + } diff --git a/test/RADemoTV/layout.edc b/test/RADemoTV/layout.edc new file mode 100644 index 0000000..9e724bd --- /dev/null +++ b/test/RADemoTV/layout.edc @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +group { name: "white_bg_layout"; + parts { + part { name: "base"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + color: 250 250 250 255; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + } + } + } +} + +group { name: "button_layout_1"; + parts { + part { name: "base"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 300 78; + color: 0 0 0 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + } + } + } +} + +group { name: "button_layout_2"; + parts { + part { name: "base"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 500 78; + color: 0 0 0 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + } + } + } +} + +group { name: "check_layout"; + parts { + part { name: "base"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 300 78; + color: 0 0 0 0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + } + } + } +} + diff --git a/test/RADemoTV/manasij.p12 b/test/RADemoTV/manasij.p12 new file mode 100644 index 0000000000000000000000000000000000000000..83a03cec3c681a969cba79a1135fa9c55aaffecd GIT binary patch literal 2785 zcmY+Fc{J1w7sqGDF!n7TTSQ|E!*6VZQje_+50SA`_N^HiV_$~Gnrst|5@ijcv4-p_ zTgVWyCt0(VWkl-jJ?DL&=Y9Y9o_o&cd++`0d(Q<(tg{d>13+TUVq%etH;kuqfMMV~ z5^Exq#2Wh>M*}1V{{OQWn4lyE2tb1T{H-GD7{qZmll9IPKmA%uK`b)bM*F!-?85VfW~;?4Bw~z-=%bk`pL-9hx^yj(TiS>Z z@sul+8tI~W-7j&&hS9ktIHWx5dJUPY&@Fx^!@<8+sMSF4uI0!RgdQWW3{b0c9=eSV z{|ceTe$nnidmDQcub8;MfhgH_lWE>v^h@rJyf#iRHMOLO#(`3PEz8MgcHyW!Hhw=1 zUreT^0}l(w0UaYyry-=Xejv%R-;>cAwVrVnR~Ea&M|DpotWe@tCkGrcNnI7Ywkq6P z?&2V^$yL{$7zX;@{DgU;2#)bHwFI7g{$O}<%Vii4YS{g=vhS}44SuRzdlSEoso)zD zA|AHQV1(SlOQkD5oo6x8wZtq-I17EKHv{2E?YNA5-CI{T7#N*diL5%mRT5=^r6Kjd zZQR^bGvf9drT*kUd1OvYKPk&h#jn9K1SkR9V>+^ixDQiWcL#+7a^UGs-Il5{24N?{ z+wQKgJ2P6chEbC1GH8#y?C|vxJV2E#66L-@7}v5f8@Mj};qgTtaZ7V7sx>TP6Psb4 zLO;)D99x+J^0_FJxc@4)ig$(qV^0}64A^q$5@D0jb!hXu$zss)armr~hkIU1E<9h3 ztHfV7MJE*HFMg!#KbX8Y)V|inyU7v3=Qk1=aH?lVbU3H}4s4n3lCWT?G;a;a4V>7j zHooD$W*S*U$&%+xqv(_e&=fTND6*CYd-olhl`5DT>@UGN3Pw}k@!TOa3zF)TPfeqn z!|K^>f(Gjg9Z~kfRXT=)nBarCC^hZS+t-k~fau?$X5m9}i*bT*AZL*8ZxKM=ARj>D zADbV^2j#_h^p9WJ5TGPo8-NX(;QQsUT}%F%By{(=Z}%^XPjUeBJQAUTs~Qk>QJQXC!5X97BOC0&A zdB=Fo?5Mwz{L{O3wq7t4Y&YAG71W^iRCo8R^h%9e7ejdz5UBQnt9YSvt8a%XEHss4MU=Lh9A6(UccQp-U7F8CI? zN?;+3gOsgISUdx9EZ2uPTDxva|Kz@4^)V?>{KoEgpOj`0q!by_mi=O%?Q?IS`b&I` zW8X;HOt=Cfpg`*@{Ne>n6(`XWt$QIqx_8 zish7(5UCWYM2Yz4HJt?{+BZugKByXjUmM>c9S!>s~R^$zD(d! zMZzEd`T5{mU{F)Bn&2XUhwcYkTJ70kosEcmD#q5U-!?VYycES9D}zFql(263!hq2W z39Q&X#0Z?`AXd=5Y}D4}|LS^<`r*iZ9TEawpR88%rVH+u1~^5r4AQ z(~geMVLW8*)s4ObnAdGtkj^ zrY%VI^SjlY1`7eD$^nG7QB7YrysYgsdHvvGOdXFeWoEIBQy_GF0Z*NdtC($-pO7+d z46feU6_sy=iFjmSTYPYSxdpnn8zw9NIGwsm`2j|IhyFGJDkkHfxWTQsybkd?i`06K_5D-PO~2|gtT7NFWNLlfZSDr(O^DCy(_Xjiv*VLz8m-!x^ zuhwkn(RLzvJ|CmaHYQ;Mg*|mZj zcwZU}aAK?L-K@v0bMkCGqL^bjWe=8Lk&?o_Z}E<9sFwLT7=-k`Dwpr;p5&P?pljNE%~G2&7MG@ z30I1^#+0cLwJ_Ko9$MIy`g%>9>UP{CjjCzndd4!t(=

UuiO1V3)cp*Cv2Aa%!}9 zf1%mN4nm{x`4gTAB+v%kT_Xcy`@XIUTTJLS9*a~UBZ{s}a&EOAHrW}Hb1g^XCYkA< z5v)9!C4jdImSL$SS@SgI!Et6PEAdh1PDv=^1WV?xF^;pQWV&5eK6SB-=Sh6~wc&x1p{VhM71VSk zTao;lpMy<(mh!P8-^q!#i%{gVu_IlD(*i?@O_UA1gcIV{IeUG{qkDIs5l)vZ?_R^1 zb*u{JB)M0@a@Wd%z7UoaKpT(%SeO{)IT;|rj36iR$s@oeL eDBrbW9^#}F;fzLN4cw&vX<+KZ)C>Q9ss94HXB{vA literal 0 HcmV?d00001 diff --git a/test/RADemoTV/pagecontrol.edc b/test/RADemoTV/pagecontrol.edc new file mode 100644 index 0000000..6b5f648 --- /dev/null +++ b/test/RADemoTV/pagecontrol.edc @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +group { name: "pagecontrol_layout"; + parts { + part { name: "bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + color: 0 0 0 255; + } + } + part { name: "scroller"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + to: "bg"; + } + rel2 { + relative: 1.0 1.0; + to: "bg"; + } + align: 0.5 0.5; + } + } + part { name: "controller"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: 0 52; + fixed: 0 1; + align: 0.5 1.0; + rel1.relative: 0.0 1.0; + rel2.relative: 1.0 1.0; + } + } + } +} + +group { name: "pagecontrol_page_layout"; + parts { + part { name: "page"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + } + } + part { name: "text"; + type: TEXT; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + rel1.relative: 0.5 0.5; + rel2.relative: 0.5 0.5; + text { + min: 1 1; + size: 50; + ellipsis: -1; + } + } + } + } +} diff --git a/test/RADemoTV/popup_custom.edc b/test/RADemoTV/popup_custom.edc new file mode 100644 index 0000000..0b5d5b9 --- /dev/null +++ b/test/RADemoTV/popup_custom.edc @@ -0,0 +1,1047 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#define POPUP_CONTENT_DEFAULT_PADDING_TOP_MIN_INC 27 +#define POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 15 +#define POPUP_CONTENT_DEFAULT_PADDING_RIGHT_MIN_INC 15 +#define POPUP_CONTENT_DEFAULT_PADDING_BOTTOM_MIN_INC 27 +#define POPUP_EDITFIELD_LAYOUT_MINMAX_HEIGHT_INC 96 + +#define POPUP_IMAGE_VIEW_LAYOUT_BG_MIN_INC 0 112 +#define POPUP_IMAGE_SWALLOW_CONTENT_PADDING_BOTTOM_MIN_INC 0 20 +#define POPUP_DESCRIPTION_DEFAULT_TEXT_FONT_SIZE_INC 38 +#define POPUP_CHECK_VIEW_LAYOUT_CONTENT_MIN_INC 0 162 +#define POPUP_CHECK_VIEW_LAYOUT_BOTTOM_MIN_INC 0 90 +#define POPUP_CHECK_VIEW_SWALLOW_END_MIN_INC 50 50 +#define POPUP_CHECK_VIEW_LAYOUT_MIN_INC 0 252 + +#define POPUP_TEXT_INPUTTEXT_VIEW_LAYOUT_BG_MIN_INC 480 159 + +#define POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC 15 27 +#define POPUP_PROGRESSBAR_VIEW_LAYOUT_TEXT_FONT_SIZE_INC 0 38 +#define POPUP_PROGRESSBAR_VIEW_LAYOUT_BG_INC 0 69 +#define POPUP_PROGRESSBAR_VIEW_LAYOUT_BG_MIN_INC 0 161 + +#define POPUP_PROGRESSBAR_2TEXT_VIEW_LAYOUT_BG_MIN_INC 0 193 +#define POPUP_PROGRESSBAR_VIEW_LAYOUT_SUBTEXT_FONT_SIZE_INC 0 32 + +#define POPUP_GROUP_INDEX_BG_MIN_INC 0 52 +#define POPUP_GROUP_INDEX_PROCESSING_MIN_INC 28 28 +#define POPUP_GROUP_INDEX_PROCESSING_MAX_INC 28 28 +#define POPUP_GROUP_INDEX_PADDING_BEFORE_SWALLOW_MIN_INC 15 52 +#define POPUP_GROUP_INDEX_TEXT_MIN_INC 0 52 + +#define POPUP_TEXT_SLIDER_VIEW_LAYOUT_MIN_INC 0 144 +#define POPUP_TEXT_SLIDER_PADDING_SIZE_INC 15 27 +#define POPUP_TEXT_SLIDER_TEXT_DISCRIPTION_MIN_INC 0 38 +#define POPUP_TEXT_SLIDER_BG_MIN_INC 0 42 +#define POPUP_SLIDER_PADDING_LEFT_MIN_INC 10 0 + +#define POPUP_2TEXT_SLIDER_VIEW_LAYOUT_MIN_INC 0 176 +#define POPUP_TEXT_SLIDER_SUBTEXT_DISCRIPTION_MIN_INC 0 32 + +#define POPUP_SCROLLABLE_TEXT_VIEW_BG_HEIGHT_INC 252 + +#define POPUP_PROCESSING_SWALLOW_VIEW_LAYOUT_MIN_INC 36 36 +#define POPUP_PROCESSING_SWALLOW_VIEW_LAYOUT_MAX_INC 36 36 +#define POPUP_PROCESSING_SWALLOW_VIEW_LAYOUT_PADDING_AFTER_INC 15 90 +#define POPUP_PROCESSING_SWALLOW_VIEW_LAYOUT_TEXT_MIN_INC 0 90 +#define POPUP_PROCESSING_VIEW_LAYOUT_BG_MIN_INC 0 90 + +#define POPUP_TEXT_FONT_SIZE1 30 +#define POPUP_TEXT_FONT_SIZE2 24 +#define POPUP_TEXT_FONT_SIZE3 27 + +group { name: "popup_image_list_layout"; + styles { + style { name: "popup_content_style"; + base: "font=Tizen:style=Regular align=left font_size="POPUP_TEXT_FONT_SIZE1" color=#000000 wrap=mixed ellipsis=1.0 text_class=tizen"; + tag: "br" "\n"; + tag: "tab" "\t"; + } + } + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_IMAGE_VIEW_LAYOUT_BG_MIN_INC; + fixed: 1 0; + } + } + part { name: "pad_l"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 0.0 0.0; + rel2.relative: 0.0 1.0; + align: 0.0 0.0; + } + } + part { name: "pad_r"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 1.0 0.0; + rel2.relative: 1.0 1.0; + align: 1.0 0.0; + } + } + part { name: "pad_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + align: 0.0 0.0; + min: 0 POPUP_CONTENT_DEFAULT_PADDING_TOP_MIN_INC; + fixed: 0 1; + rel1 { + relative: 1.0 0.0;to_x: "pad_l"; + } + rel2 { + relative: 0.0 0.0;to_x: "pad_r"; + } + } + } + part { name: "content_bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + fixed: 1 0; + rel1 { + relative: 1.0 1.0; + to_x: "pad_l"; + to_y: "pad_t"; + } + rel2 { + relative: 0.0 0.0; + to_x: "pad_r"; + to_y: "pad_b"; + } + align: 0.5 0.5; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 0; + rel1.to: "content_bg"; + rel2.to: "content_bg"; + } + } + part { name: "pad_b"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_IMAGE_SWALLOW_CONTENT_PADDING_BOTTOM_MIN_INC; + fixed: 0 1; + rel1 { + relative: 1.0 0.0; + to_x: "pad_l"; + to_y: "elm.text"; + } + rel2 { + relative: 0.0 0.0; + to_x: "pad_r"; + to_y: "elm.text"; + } + align: 0.0 1.0; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + min: 0 POPUP_DESCRIPTION_DEFAULT_TEXT_FONT_SIZE_INC; + fixed: 0 1; + align: 0.0 1.0; + rel1 { + relative: 1.0 0.0; + to_x: "pad_l"; + to_y: "pad_bottom"; + } + rel2 { + relative: 0.0 0.0; + to_x: "pad_r"; + to_y: "pad_bottom"; + } + text { + style: "popup_content_style"; + min: 0 1; + } + color: 0 0 0 255; + } + } + part { name: "pad_bottom"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + align: 0.0 1.0; + min: 0 POPUP_CONTENT_DEFAULT_PADDING_BOTTOM_MIN_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to_x: "pad_l"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r"; + } + } + } + } +} + +group { name: "popup_checkview_layout"; + parts { + part { name: "bg"; + scale: 1; + type: SPACER; + description { state: "default" 0.0; + min: POPUP_CHECK_VIEW_LAYOUT_MIN_INC; + fixed: 1 0; + } + } + part { name: "pad_l"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 0.0 0.0; + rel2.relative: 0.0 1.0; + align: 0.0 0.0; + } + } + part { name: "pad_r"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_RIGHT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 1.0 0.0; + rel2.relative: 1.0 1.0; + align: 1.0 0.0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + min: POPUP_CHECK_VIEW_LAYOUT_CONTENT_MIN_INC; + align: 0.5 0.0; + rel2 { + relative: 1.0 0.0; + to: "pad_b"; + } + } + } + part { name: "pad_b"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + align: 0.0 1.0; + min: POPUP_CHECK_VIEW_LAYOUT_BOTTOM_MIN_INC; + fixed: 0 1; + rel1.relative: 0.0 1.0; + } + } + part { name: "elm.swallow.end"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + align: 0.0 0.5; + min: POPUP_CHECK_VIEW_SWALLOW_END_MIN_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + to_x: "pad_l"; + to_y: "pad_b"; + } + rel2 { + relative: 0.0 0.0; + to_x: "pad_r"; + to_y: "pad_b"; + } + } + } + } +} + +group { name: "processing_view_layout"; + styles { + style { name: "popup_processing_style"; + base: "font=Tizen:style=Regular align=left font_size="POPUP_TEXT_FONT_SIZE1" color=#000000 wrap=mixed ellipsis=1.0 text_class=tizen"; + tag: "br" "\n"; + tag: "tab" "\t"; + } + } + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROCESSING_VIEW_LAYOUT_BG_MIN_INC; + fixed: 1 0; + } + } + part { name: "pad_l"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 0.0 0.0; + rel2.relative: 0.0 1.0; + align: 0.0 0.0; + } + } + part { name: "pad_r"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 1.0 0.0; + rel2.relative: 1.0 1.0; + align: 1.0 0.0; + } + } + part { name: "processing"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + min: POPUP_PROCESSING_SWALLOW_VIEW_LAYOUT_MIN_INC; + max: POPUP_PROCESSING_SWALLOW_VIEW_LAYOUT_MAX_INC; + rel1 { + relative: 1.0 0.0; + to_x: "pad_l"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r"; + } + align: 0.0 0.5; + } + } + part { name: "pad_after_processing"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + min: POPUP_PROCESSING_SWALLOW_VIEW_LAYOUT_PADDING_AFTER_INC; + rel1 { + relative: 1.0 0.0; + to: "processing"; + } + rel2.to: "processing"; + align: 0.0 0.5; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROCESSING_SWALLOW_VIEW_LAYOUT_TEXT_MIN_INC; + fixed: 0 1; + rel1 { + relative: 1.0 0.0; + to: "pad_after_processing"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r"; + } + align: 0.0 0.5; + text { + style: "popup_processing_style"; + min: 0 1; + } + } + } + } +} + +group { name: "popup_text_progressbar_view_layout"; + styles { + style { name: "popup_progress_style"; + base: "font=Tizen:style=Regular align=right font_size="14" color=#000000 wrap=mixed ellipsis=1.0 text_class=tizen"; + tag: "br" "\n"; + tag: "tab" "\t"; + } + } + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_BG_MIN_INC; + fixed: 1 0; + } + } + part { name: "pad_l_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC; + max: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC; + fixed: 1 1; + rel2.relative: 0.0 0.0; + align: 0.0 0.0; + } + } + part { name: "pad_r_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC; + max: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC; + fixed: 1 1; + rel1.relative: 1.0 1.0; + align: 1.0 1.0; + } + } + part { name: "elm.text.description"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_TEXT_FONT_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "pad_l_t"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r_t"; + to_y: "pad_l_t"; + } + text { + style: "popup_processing_style"; + min: 0 1; + } + align: 0.0 0.0; + } + } + part { name: "progressbar_bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_BG_INC; + rel1 { + relative: 1.0 1.0; + to_x: "pad_l_t"; + to_y: "elm.text.description"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r_t"; + to_y: "elm.text.description"; + } + align: 0.0 0.0; + } + } + part { name: "progressbar"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1.to: "progressbar_bg"; + rel2.to: "progressbar_bg"; + } + } + } +} + +group { name: "popup_2text_progressbar_view_layout"; + styles { + style { name: "popup_subtext_style"; + base: "font=Tizen:style=Regular align=left font_size="POPUP_TEXT_FONT_SIZE2" color=#000000 wrap=mixed ellipsis=1.0 text_class=tizen"; + tag: "br" "\n"; + tag: "tab" "\t"; + } + } + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROGRESSBAR_2TEXT_VIEW_LAYOUT_BG_MIN_INC; + fixed: 1 0; + } + } + part { name: "pad_l_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC; + max: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC; + fixed: 1 1; + rel2.relative: 0.0 0.0; + align: 0.0 0.0; + } + } + part { name: "pad_r_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC; + max: POPUP_PROGRESSBAR_VIEW_LAYOUT_PADDING_INC; + fixed: 1 1; + rel1.relative: 1.0 1.0; + align: 1.0 1.0; + } + } + part { name: "elm.text.description"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_TEXT_FONT_SIZE_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to: "pad_l_t"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r_t"; + to_y: "pad_l_t"; + } + text { + style: "popup_processing_style"; + min: 0 1; + } + align: 0.0 0.0; + } + } + part { name: "elm.subtext.description"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_SUBTEXT_FONT_SIZE_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to_x: "pad_l_t"; + to_y: "elm.text.description"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r_t"; + to_y: "elm.text.description"; + } + text { + style: "popup_subtext_style"; + min: 0 1; + } + align: 0.0 0.0; + } + } + part { name: "progressbar_bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + min: POPUP_PROGRESSBAR_VIEW_LAYOUT_BG_INC; + rel1 { + relative: 1.0 1.0; + to_x: "pad_l_t"; + to_y: "elm.subtext.description"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r_t"; + to_y: "elm.subtext.description"; + } + align: 0.0 0.0; + } + } + part { name: "progressbar"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1.to: "progressbar_bg"; + rel2.to: "progressbar_bg"; + } + } + } +} + +group { name: "popup_groupindex_view_layout"; + styles { + style { name: "popup_groupindex_style"; + base: "font=Tizen:style=Regular align=right font_size="POPUP_TEXT_FONT_SIZE3" color=#000000 wrap=mixed ellipsis=1.0 text_class=tizen"; + tag: "br" "\n"; + tag: "tab" "\t"; + } + } + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + } + } + part { name: "pad_l"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 0.0 0.0; + rel2.relative: 0.0 1.0; + align: 0.0 0.0; + } + } + part { name: "pad_r"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_RIGHT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 1.0 0.0; + rel2.relative: 1.0 1.0; + align: 1.0 0.0; + } + } + part { name: "index_bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_GROUP_INDEX_BG_MIN_INC; + fixed: 0 1; + rel1 { + relative: 1.0 0.0; + to: "pad_l"; + } + rel2 { + relative: 0.0 0.0; + to: "pad_r"; + } + align: 0.5 0.0; + } + } + part { name: "processing"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: POPUP_GROUP_INDEX_PROCESSING_MIN_INC; + max: POPUP_GROUP_INDEX_PROCESSING_MAX_INC; + rel1 { + relative: 1.0 0.0; + to: "index_bg"; + } + rel2.to: "index_bg"; + align: 1.0 0.5; + } + } + part { name: "pad_before_swallow"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_GROUP_INDEX_PADDING_BEFORE_SWALLOW_MIN_INC; + rel1 { + relative: 0.0 0.0; + to: "processing"; + } + rel2 { + relative: 0.0 1.0; + to: "processing"; + } + align: 1.0 0.5; + } + } + part { name: "elm.text"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + min: POPUP_GROUP_INDEX_TEXT_MIN_INC; + fixed: 0 1; + rel1 { + relative: 0.0 0.0; + to: "index_bg"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_before_swallow"; + to_y: "index_bg"; + } + align: 0.5 0.0; + text { + style: "popup_groupindex_style"; + min: 0 1; + } + } + } + part { name: "genlist"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + rel1 { + relative: 0.0 1.0; + to_y: "index_bg"; + } + align: 0.5 0.0; + } + } + } +} + +group { name: "popup_text_slider_view_layout"; + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_TEXT_SLIDER_VIEW_LAYOUT_MIN_INC; + fixed: 1 0; + } + } + part { name: "pad_l_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_TEXT_SLIDER_PADDING_SIZE_INC; + max: POPUP_TEXT_SLIDER_PADDING_SIZE_INC; + fixed: 1 1; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 0.0 0.0; + } + align: 0.0 0.0; + } + } + part { name: "pad_r_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_TEXT_SLIDER_PADDING_SIZE_INC; + max: POPUP_TEXT_SLIDER_PADDING_SIZE_INC; + fixed: 1 1; + rel1.relative: 1.0 1.0; + rel2.relative: 1.0 1.0; + align: 1.0 1.0; + } + } + part { name: "elm.text.description"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + min: POPUP_TEXT_SLIDER_TEXT_DISCRIPTION_MIN_INC; + rel1 { + relative: 1.0 1.0; + to: "pad_l_t"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r_t"; + to_y: "pad_l_t"; + } + text { + style: "popup_processing_style"; + min: 0 1; + } + align: 0.0 0.0; + } + } + part { name: "slider"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + min: POPUP_TEXT_SLIDER_BG_MIN_INC; + rel1 { + relative: 1.0 0.0; + to_y: "pad_r_t"; + to_x: "pad_l_t"; + } + rel2 { + relative: 0.0 0.0; + to: "pad_r_t"; + } + align: 0.0 1.0; + } + } + } +} + +group { name: "popup_2text_slider_view_layout"; + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_2TEXT_SLIDER_VIEW_LAYOUT_MIN_INC; + fixed: 1 0; + } + } + part { name: "pad_l_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_TEXT_SLIDER_PADDING_SIZE_INC; + max: POPUP_TEXT_SLIDER_PADDING_SIZE_INC; + fixed: 1 1; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 0.0 0.0; + } + align: 0.0 0.0; + } + } + part { name: "pad_r_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_TEXT_SLIDER_PADDING_SIZE_INC; + max: POPUP_TEXT_SLIDER_PADDING_SIZE_INC; + fixed: 1 1; + rel1.relative: 1.0 1.0; + rel2.relative: 1.0 1.0; + align: 1.0 1.0; + } + } + part { name: "elm.text.description"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + min: POPUP_TEXT_SLIDER_TEXT_DISCRIPTION_MIN_INC; + rel1 { + relative: 1.0 1.0; + to: "pad_l_t"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r_t"; + to_y: "pad_l_t"; + } + text { + style: "popup_processing_style"; + min: 0 1; + } + align: 0.0 0.0; + } + } + part { name: "elm.subtext.description"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + min: POPUP_TEXT_SLIDER_SUBTEXT_DISCRIPTION_MIN_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to_x: "pad_l_t"; + to_y: "elm.text.description"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r_t"; + to_y: "elm.text.description"; + } + text { + style: "popup_subtext_style"; + min: 0 1; + } + align: 0.0 0.0; + } + } + part { name: "slider"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + min: POPUP_TEXT_SLIDER_BG_MIN_INC; + rel1 { + relative: 1.0 0.0; + to_y: "pad_r_t"; + to_x: "pad_l_t"; + } + rel2 { + relative: 0.0 0.0; + to: "pad_r_t"; + } + align: 0.0 1.0; + } + } + } +} + +group { name: "popup_scrollable_text"; + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 0 POPUP_SCROLLABLE_TEXT_VIEW_BG_HEIGHT_INC; + max: -1 POPUP_SCROLLABLE_TEXT_VIEW_BG_HEIGHT_INC; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + } + } + } +} + +group { name: "popup_input_text"; + parts { + part { name: "pad_l"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 0.0 0.0; + rel2.relative: 0.0 1.0; + align: 0.0 0.0; + } + } + part { name: "pad_r"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC 0; + fixed: 1 0; + rel1.relative: 1.0 0.0; + rel2.relative: 1.0 1.0; + align: 1.0 0.0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: 0 POPUP_EDITFIELD_LAYOUT_MINMAX_HEIGHT_INC; + max: -1 POPUP_EDITFIELD_LAYOUT_MINMAX_HEIGHT_INC; + align: 0.5 0.5; + rel1{ + relative: 1.0 0.0 ; + to_x: "pad_l"; + } + rel2{ + relative: 0.0 1.0; + to_x: "pad_r"; + } + } + } + } +} + +group { name: "popup_text_input_text"; + styles { + style { name: "popup_input_style"; + base: "font=Tizen:style=Regular align=left font_size="POPUP_TEXT_FONT_SIZE1" color=#000000 wrap=mixed text_class=tizen"; + tag: "br" "\n"; + tag: "tab" "\t"; + } + } + parts { + part { name: "bg"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_TEXT_INPUTTEXT_VIEW_LAYOUT_BG_MIN_INC; + } + } + part { name: "pad_l_t"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC POPUP_CONTENT_DEFAULT_PADDING_TOP_MIN_INC; + max: POPUP_CONTENT_DEFAULT_PADDING_LEFT_MIN_INC POPUP_CONTENT_DEFAULT_PADDING_TOP_MIN_INC; + fixed: 1 1; + rel1.to: "bg"; + rel2 { + relative: 0.0 0.0; + to: "bg"; + } + align: 0.0 0.0; + } + } + part { name: "pad_r_b"; + type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: POPUP_CONTENT_DEFAULT_PADDING_RIGHT_MIN_INC POPUP_CONTENT_DEFAULT_PADDING_TOP_MIN_INC; + max: POPUP_CONTENT_DEFAULT_PADDING_RIGHT_MIN_INC POPUP_CONTENT_DEFAULT_PADDING_TOP_MIN_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + to: "bg"; + } + rel2.to: "bg"; + align: 1.0 1.0; + } + } + part { name: "elm.text.description"; + type: TEXTBLOCK; + scale: 1; + description { state: "default" 0.0; + min: 0 POPUP_DESCRIPTION_DEFAULT_TEXT_FONT_SIZE_INC; + rel1 { + relative: 1.0 1.0; + to: "pad_l_t"; + } + rel2 { + relative: 0.0 0.0; + to_x: "pad_r_b"; + to_y: "elm.swallow.content"; + } + text { + style: "popup_input_style"; + min: 0 1; + } + align: 0.5 0.0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: 0 POPUP_EDITFIELD_LAYOUT_MINMAX_HEIGHT_INC; + max: -1 POPUP_EDITFIELD_LAYOUT_MINMAX_HEIGHT_INC; + fixed: 0 1; + align: 0.0 1.0; + rel1{ + relative: 1.0 0.0 ; + to_x: "pad_l_t"; + to_y: "pad_r_b"; + } + rel2{ + relative: 0.0 0.0; + to: "pad_r_b"; + } + } + } + } +} diff --git a/test/RADemoTV/progressbar.edc b/test/RADemoTV/progressbar.edc new file mode 100644 index 0000000..d3b5428 --- /dev/null +++ b/test/RADemoTV/progressbar.edc @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +group { name: "progessbar_layout"; + parts { + part { name: "bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "top_padding"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: 0 30; + max: -1 30; + fixed: 0 1; + rel1 { + relative: 0.5 0.0; + to_y: "bg"; + } + rel2 { + relative: 0.5 0.0; + to_y: "bg"; + } + align: 0.5 0.0; + } + } + part { name: "left_padding"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 10 0; + fixed: 1 0; + rel1.relative: 0.0 0.0; + rel1.to_x: "bg"; + rel2.relative: 0.0 1.0; + align: 0.0 0.5; + color: 0 0 0 0; + } + } + part { name: "right_padding"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 10 0; + fixed: 1 0; + rel1.relative: 1.0 0.0; + rel2.to_x: "bg"; + rel2.relative: 1.0 1.0; + align: 1.0 0.5; + color: 0 0 0 0; + } + } + part { name: "list_progress"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 1.0 1.0; to_x: "left_padding"; to_y: "top_padding"; } + rel2 { relative: 0.0 1.0; to_x: "right_padding"; to_y: "top_padding"; } + align: 0.5 0; + } + } + part { name: "top_padding1"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: 10 30; + max: 10 30; + fixed: 1 1; + rel1.relative: 0.5 1.0; + rel2.relative: 0.5 1.0; + rel1.to_y:"list_progress"; + rel2.to_y:"list_progress"; + align: 0.5 0.0; + } + } + part { name: "pending_list"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 1.0 1.0; to_x: "left_padding"; to_y: "top_padding1"; } + rel2 { relative: 0.0 1.0; to_x: "right_padding"; to_y: "top_padding1"; } + align: 0.5 0; + } + } + part { name: "top_padding2"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: 10 30; + max: 10 30; + fixed: 1 1; + rel1.relative: 0.5 1.0; + rel2.relative: 0.5 1.0; + rel1.to_y:"pending_list"; + rel2.to_y:"pending_list"; + align: 0.5 0.0; + } + } + part { name: "process_large"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 1.0 1.0; to_x: "left_padding"; to_y: "top_padding2"; } + rel2 { relative: 0.0 1.0; to_x: "right_padding"; to_y: "top_padding2"; } + align: 0.5 0; + } + } + part { name: "top_padding3"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: 10 30; + max: 10 30; + fixed: 1 1; + rel1.relative: 0.5 1.0; + rel2.relative: 0.5 1.0; + rel1.to_y:"process_large"; + rel2.to_y:"process_large"; + align: 0.5 0.0; + } + } + part { name: "process_medium"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 1.0 1.0; to_x: "left_padding"; to_y: "top_padding3"; } + rel2 { relative: 0.0 1.0; to_x: "right_padding"; to_y: "top_padding3"; } + align: 0.5 0; + } + } + part { name: "top_padding4"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: 10 30; + max: 10 30; + fixed: 1 1; + rel1.relative: 0.5 1.0; + rel2.relative: 0.5 1.0; + rel1.to_y:"process_medium"; + rel2.to_y:"process_medium"; + align: 0.5 0.0; + } + } + part { name: "process_small"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 0 1; + rel1 { relative: 1.0 1.0; to_x: "left_padding"; to_y: "top_padding4"; } + rel2 { relative: 0.0 1.0; to_x: "right_padding"; to_y: "top_padding4"; } + align: 0.5 0; + } + } + } + } + diff --git a/test/RADemoTV/project_def.prop b/test/RADemoTV/project_def.prop new file mode 100644 index 0000000..662384c --- /dev/null +++ b/test/RADemoTV/project_def.prop @@ -0,0 +1,11 @@ +APPNAME = rademotv + +type = app +profile = mobile-3.0 + +USER_SRCS = src/rademotv.c +USER_DEFS = +USER_INC_DIRS = inc +USER_OBJS = +USER_LIBS = +USER_EDCS = diff --git a/test/RADemoTV/res/images/Clock_tabs_icon_alarm.png b/test/RADemoTV/res/images/Clock_tabs_icon_alarm.png new file mode 100644 index 0000000000000000000000000000000000000000..3c532d10ddcd03fac44bb31bbddc7dabc239ebf0 GIT binary patch literal 3608 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

V|WmY+;Xtp^p;D&?6 zUwZTpv-OSru^%gcjdM#3rGEUXh8Sh-KT9mq?<6wTCWI1Wd*~lTKSM-sJk*{GGYW#5B(ARKGcfipt zGQp&Wj3kAChl;fJ2Tw>I!GY>}Xf3{OROB)3h)^;)?3D~8~V!~H^nF0 zTZS(`3u#1TsP5y~DqmGT{L;Qk&};4m*Qw9I*J@R`ZSS;VzPY-rP(2jobftN!NQtAC zi!a0&M`RMI6EM%gwi)9LsYIoBWlCAA5+Exzh{v2Gsd=2)@`dFQSfJBC%r)ERf7nQO zaEkGe;odg4p(cMfl+!0wfSmYuNzFNSv2lOtJT4*XQbX7$*g0;EitFPi=Wa&*G#f4& z@p(!UFXGZX$!u|ZVQpRTjVeU6&iKHx2_)z|Ii~wA zl!_;owFPsQl_?>D@mKZM;vUPO-UEkXg>j_$^U@4ioGbB#wN^$+CJF4AHLP%cZdt63HxpznU{VFjH1x$Wyub3O!Ht_miANK)<%H8UQ& z!|>ISsZ7BW8}l8p%nhBJOiNnysIRdIKa=TwqS(>){qV=D8r)+|OWs#?&KNvjY0!BD zbT4avWCaB3#*Ur>CF)@N=AO!Q^5hj*lIO>Sh8m_5>ceXnBG~>x7>-zGpmAeIYtDst z2k1APtse~-k-AWH|65g-L!!{@6PX?7BdGz;Ml3dLK8zEyO)Dc4pO?!vX5RWWTp4@1FV@-+Rn&*^c^NytS{;gD+tf(U zqzM%?zKA$8d}d<-%lPouw0eob1)>FMYv&ZEZCvo1{D7J#^(UjFz`8(p;}l*?g?BPS z*g@>8Y}>$R6A_ppzC<0Fnc+f)bis_J&*etWnf4WeCkAJ$)2+>|MAPOH_V;p+S1U@N zA1z$@a@L(QelrnFsmPFrA*DBUvdL|Xafk8bdYwmJfk9z}{je2hWHiUk*ZQzU)?W&; zt@DUN>F+6Yv$>pQe0E2(33bLgawNW7!|k{A=T#}j7zh33Nu7kj2NUr`7YGD8zebkx z&aQen1wLKyX@5@j{GT$B)9rr-E(?*mXx2;r$YA=v`~%-OkO^7{Uts-!qbK^dz$0ty zz`afbJL4Z53}~PE`L>>n#2>ot5fr6gi?ZpJTf_EI9aadEOh&Ej?c@xw4~uH;2DIJ=?uqu zc~a?9^(^9KcJ-(yb<}b-U#Gg8BO=ZxH>3L7*8-DAjB90s%roq_3^I!Nwjp=xck_bA zq9PrR1twbwV@gHsJ)zuJaL!EZrwRL1MXA7aWPOe0avGx}-J+Z$D0ZgI7Dw;`CZ^}9 zy=mVXZKbBX1;(1^KZe)RBDAJIr7%>921OAsmpI1S`6L3>?>Vi0bVvgH+Y@u6EC|s& zf~TVDY?rGR=0KASCU73?YXAei*F(&phEh8+wzp)oje<0sZm3LWe!t2VqDB@qq||e+ zC5NMNuBvumcOCGmma1BxhF*a=E$5x_a0)h}NS}|iT%KddIccpw*w+Aoy7)sU!ZwrS z=-}vMsaVi7JiJ}Zl0M=nPB@V>p7j7w}c2>6Kocjj?rtA4dJ5%we% z%SgLr3Zs@9*I>1NE$!$I%xi<-dI(SZzed(|gJ%XoZAQdD5@t3FnF;|*qev1*17nWF z7|&CC3Oqqa%u^3h$Ke>3*LkOHZ^36gVKrJso?Z6+`IWN-Lh-bn5%p_En5_^MRtX`V zCggG41jg9ohnCN?DQ%OF#t(5M4s!+`8>R^kb5CrzXgVvGNd3e(B9zPPUyqRNI6vyC zBe`0>VA1uHqtuvZzMkXh>%RW&7(0yZLo|4?@?^obi~EK_jZANWc}7BWuj|`)KbrE$X|#(LMp4F#mMV*vyVI@51nA2IAqGsVFa)v3q*-p>8yg8 z{gF=A91ZTQyA$)eN2kgjf8NQqNL6zf?*yR{-E2oS3E37>9|DWfVLj?&*qlM7GW@&x zaf;C#1yXE=Kz&*n`1cydQpzsEz(&e(rNPmGSfrkF&PRF1%bv5cy02F^-ATNY?c=F* Qe(gWl7XA|fO!1cSju09PUj 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 A`~Uy| literal 0 HcmV?d00001 diff --git a/test/RADemoTV/res/images/btn_style_nor.png b/test/RADemoTV/res/images/btn_style_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..fc4e2df8f232d04ba3d7d2faa077ed5131299582 GIT binary patch literal 1686 zcmeAS@N?(olHy`uVBq!ia0vp^nn0|_!3HF^rW*JGDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49rTIArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XRMoSU}&gdW~OIo zVrph)sH0$HU}&Uo07PcGh9*{~W>!Y#3Q(W~w5=#5%__*n4QdyVXRDM^Qc_^0uU}qX zu2*iXmtT~wZ)j<02{OaTNEfI=x41H|B(Xv_uUHvof=g;~a#3bMNoIbY0?5R~r2Ntn zTP2`NAzsKWfE$}v3=Jk=fazBx7U&!58GyV5Q|Rl9UukYGTy=3tP%6T`SPd=?sVqp< z4@xc0FD*(2MqHXQ$f^P>=c3falKi5O{QMkPC*0*Gqx~xH8gZJa&$9yb22kEG&VM} zFgGwah3R$4PcF?(%`1WFO@Zq*G{C7BloWCcfHu3N7G;*DrnnX5=PH1`Y?X=IEiO3C zgX&Ge=@tW5oO<7?Few$Oj(8gqj#8how^Rr9zzv+EGU7uEdThej)neTr&>d$WU-?;pSFW0%4 zZ$iJhelHR@l&#wl+^~7ydhxRIZ5jFNUHXDm&wpl8?r~8{i7fO|3pSY{r>6KsnC+~* zGt-6A*WB;#>rT!MU$Otc)zPV0`y{3~PFR&2yz|f8DP9+jJmHy{_C~W=k88;c(V8uP z)b5AmtIR&geW+A=(shsDQ86Y9L@uREv~^{P9lNiQw`o<^vh-&jUO#U*@G2b*_;Af* z+N-a-O6Eiz*(Te3b!yb_BlEeLMOA7v86_@zMY2!3`g&u)uhVW5y>>@WkvnyUsff$8 zL&VvUVU}Tb&7X5;YD}`C9GC9CSTOhNp;yMo3+<%Z9vb)a>$S~cdJ?cT>Y>T~B~fpe zw=^+`Jc-QPD-_}Dl^L;k=fgGr46J*i8YinYk_r z@D~co%RIOkm3-3RoXv^ZET$DDYJuuJA8(tl&Z&Q)WPWn~jmnRzrH!SmOFl;5v<{gZ zyEL|ea9kP>u%kOC-G}C1!4z%CK{i&oZOdL+Y=*RccJG$sYf?VM_hZWBP12ZkW$zQnXVOcv>{G zXy@&U6xInpuRQqB9F#fRtjksEWSXhe>le}Gc`iXJOCKGHi8!~t&9``6bo~t}GhQAZ zlXl-AwsNP1_I)Dn-@i9!R9AaHk7u@DU8j8C+cJY~zqfgBohAF@#=7m{fuD{kEag95 z=Idbfd3sMD`-1N`mfxH#@`s_M|F7=v*O!?u#53_QOxj=XcIk_;BB-YDboFyt=akR{ E0Bfp`;{X5v literal 0 HcmV?d00001 diff --git a/test/RADemoTV/res/images/contacts_ic_circle_btn_call.png b/test/RADemoTV/res/images/contacts_ic_circle_btn_call.png new file mode 100644 index 0000000000000000000000000000000000000000..9700f45e30ce574a3291cdcd022f72dad0134305 GIT binary patch literal 1536 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf1|-9GYMTQo$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y2=9ZF3nBND}m`vLFjeGsTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6qsIL(9V zO~LIJXPkQVfsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8te4(gSkJ(~1PlSkkcwMx zX8L-B1d1GgZn?;@v5VXNSAe;mSKEZB7NL$S%TD;Jg?Tdqw)h!PQ&wKy35;x9knZx<*(=mtS)@Fap9*Q%pXMW*nIh` zX>j1`U`O@5A==)oYZE^^SD-aFm>Yjo09iVTbP@lt z+Tfq=ipg{8*_IqMlh7;+3V0)W|MCo`HH`(0#o~Oj-&sq3rCJ!SGTirrm(B5L{dv!A z2MV9GL<)R5T<~b)+U2eVp?4V71Ap+mZs`~IuW%`@aPi8LTh1fD{!*~~i5vH{n?x#5X$xUt-I^ocS~11v#*`g{CCHUELU5zKVJj0M7J;6_+?A?!bv`_A2ew^si~YQ zBy9gf_zPmU&QE>8`qs68 zyQJBBfz+C=i6^E=6jxvJ*bw}aHTPzL?^|vIhIUq_H4gXXI6-Byr>mdKI;Vst06)q? Am;e9( literal 0 HcmV?d00001 diff --git a/test/RADemoTV/res/images/contacts_ic_circle_btn_email.png b/test/RADemoTV/res/images/contacts_ic_circle_btn_email.png new file mode 100644 index 0000000000000000000000000000000000000000..8de9dd495b107b700966034622d376cd4bdaa5f6 GIT binary patch literal 1589 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf1|-9GYMTQo$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y`T*>2=9ZF3nBND}m`vLFhHXsTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6rPIL(9V zO~LIJBb<8mfsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8tXFu-oMm8OTIuQH7*cWT z%}ig9P)CvD_b1!&9J;rR$yDov*wN_dl^zeAG;Xovs&FwGY6{$8Nt*EX&kdKRK*4v} zx;wZon;bIJy|v?n-4c-_9qH5dl>e5u@NYYOr}}x_%UUD$y4mK>=ls0Cv-tU$GpDWk zCa-i^eJW%{$c~dYR9u%^K%8#~)L7Hpn#X`j4J;iK)#=j^`Y-`jnETA1)d{#O2rtpAQF{E&Zf?aBLY zXN#NM0lGD_5A<^^s&5jTIN9y*PIsS#hbiwJ_I_CZ_gh3??FtvRSlb-(Ra!Rd ze#gq*?0ffEH>3ziM^#kDm1RDA8oS}8pnIZB#`TP%BK3MWBbN;e@YO?>4MH5-~AI-@<)y@dLvft3NI`|J_l0%57ur9PJ&g zGaheInI}~Eed;&O0+%z-uY3J&=vW#PKlz`vsGISIoPo z(K<&J|IACXTX$@S`1M-zy>*9tuYH`e>CHvY3@_W?M^n5Pghop7XK_V8DE%|5=-F%^ z2a`zM83BB+!kfd+EjoQzXTt~P+XWH-jy?A~e`;s;I`z0^KX!eXdSCPokHuu8i}Mdu zuGijSS|;)A?MuIZo1boI6V!|{fAp>H4%hZWYYVjZYl3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y|zVbTKeDG;}qwFm`luF)=eTa&~n# zFf%rV>2=9ZF3nBND}m`vLFl!_sTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6q^IL(9V zO~LIJbDVnhfsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8taU_cRx&U!vU$2VhE&{2 z`t$$4{ow!>A0B5Bp6d4XERX&(H}F3w5>TF)`A1RUG;hEIqrMYMii$Q^&MBNA+Fo=a z#d20i+myrnmlp2$&3@$Wm9ibObGxj%FD@~9^&zmmKcIa-a}slgrvo3`O;HwIwwJFy zI6Kr#WZLb(7sr2O{foB+>I&OflhTadK4N&Jq9C@o?Qo<=z-e~guNTi)zWQ+SQNb1q z8C^d2?!$rY{MqgM8Ixj_y6wUg^yGE;*uVZ-FR=0(zkt7#4qrKAlC)B{vz)@Zg-Z{6 zYV!ST{P7{^XO78+XLkaVe%V2pK{2)VK3D?F)KbvX0DKY esYM}!!U2W_eW|xJBCNSVrG%%epUXO@geCy0t%Udh literal 0 HcmV?d00001 diff --git a/test/RADemoTV/res/images/core_floating_icon_01.png b/test/RADemoTV/res/images/core_floating_icon_01.png new file mode 100644 index 0000000000000000000000000000000000000000..7f487f9b586afaa35c8a415167f0e3c696d7afb2 GIT binary patch literal 2963 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 JPDHLkV1nMwfkyxU literal 0 HcmV?d00001 diff --git a/test/RADemoTV/res/images/core_floating_icon_02.png b/test/RADemoTV/res/images/core_floating_icon_02.png new file mode 100644 index 0000000000000000000000000000000000000000..bede808dc84783b937cfb4ba8051986b13467a31 GIT binary patch literal 3612 zcmV+%4&(8OP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0009=NklNt)%;sez~;mle966Q+k`E5zE;zN!KJT zP0>b~qy`u0Zb|Vl0T)Z^v7GFcv^`A+PP@#MMoA080{qZ&u3yr+44pV6Y0|QLE)2kx zmQ&-B_Il*V1@Q;Ipl&01i@!+@~|XmRN8fQq1U z=>t|8de386fL5U0p_c>eg95I!^rt?h1y3x!Dk$L1&RhlP@Cn$qyCo=KXZqL=jQRxp z!P1L^0xopikNcSEPFQ+DP{2cu`$awi+qQ>;0{-H-UuG^pWP_!D4hr~}b#x z6mXNJANK(^$FlnyXbx&UTp(%4S`M!AIPE)PrIt;8q?W0U@F-C4(DQ&g5Bq%~aNT-# zC+LbtsY{XWq(?n}%d-1kQY;MX;X0Q}M@@!KTz08^91cqXAYW3a3-sAEUY;lEwhL^1 z*lJp(l0LaO+AOImh4#6UPMP}EOf~DBVJp*?1J8ifE}ylT)l?hM15BFThcdJJIg!G$ zZxE>QWs#CWZ>^EkDsQC0jI2GU{5|^QjMFcH-Ptz6)AGt?q{-$Ho|dh^O;hna54_HH;H-?p5pVIQ;5WZ~qYgU~m5bVRJZKI3UR1%jb?K0AbTOdkoTkjaQd4w+FLK z!ale3x8q?Dwu7Z$xichXMHo3Ol0-_Tcn}@ujg4sp`-+pO)6%f1JP3J~$4ry-%OWq+ zVqYaa?mt|JeC0ddO8GH(@_s^ZwPqLBI7ClmV97R9MW|z0Dq)w-e~<0$?pat?G>Bmm z4*(ntjUFPw$6{3AAQ}pl6D88O1FEo5W(GjCE+8shOgv>@hvnU%!p2b%Lo%*dGGMuZ zK|~s?3>cVDVR5;V_Mn&sxD2?vErF{Fz(wlek5Pcd9ppt)0jK98JXFOQK$y!j$q0Ds zfSRFekBtFZ32=K^c58u21)yY(@-hSUO@K(^U~T{mEIDzmt~| zTQuIcn2YaGQoI`24c>#|wQ1CDz`t&cOP&&@rdF1hCoQ^RPOkl^s1r=5GZA%s=T9{B zh_e5^eNj9{NH;xdVm>_*8Wrs}cO#%>xt9=}foVqh zskY%T2@^aTo&1JV#2u@1in77UzE1%ziq+4!m*;ZLg$&QV(9QH-)^>|1bJRP{W`3+ z1aJ2Skyyc{b}wIRFqYTcvb6SP)~J9tpEt$l&CihL^Rro(Y;wM$Mh4bQf9Cw8-V0@6 zP2h>`O~Od?7hIsffZ-3l@Fv%)jDIwRzZa>bsl1W9n#Z2!?|_!Y%Rb=A=x55Z$db$w zl!YKGtIDe8s+b*i9R`r;mACAp>P#F|?UyPUzhzfDRN<~}*bCZYDs?Int1uP*Nd4E* zj>pM#j$Kw=w(!@8;a|GUTa&<1=fc}o|6YuO93zkY{+92XvY_c2S;XncETjw2PwIjGP$5V!`5y%Q zW|slH)HTaBXCW?wFbsV)X7a>@J=Le@#*+AwUyonUD@i&@5lKtyb?dEsJ8MFjOqq_A zj#cmAm%*2V<9X@@y2=wOs|BkC69w~4F4x1Z%i}BXA3V()mamsNZsA++#$VTREJZt9 zzu9O~i>s9wZ>eo5KVMF;$+W318pm|i|AYUGuWaJ4UzwyM*Wvx}QLY#_K1|c6x~{Fv zw#=yJs3*s|^sI?fY}G>7g`$Js1#xR%)1J#G6>jNAecH=jgJ94@97B_;OL(pUnQkAP zeZii5wah6b0K16A6L*=(79PbezT>q<+GJI z^Wuxz3z;HE)!?sPeemyym0^A67gK*woiFVB6(i1&fce>Y5R8m1N#40#OGAJslu>8KU)?)&w$R)n&eOUfYmu*F}E{yF}Y-t~uT zN>?WE~{6icpEyc*{s&A z-=pZ|_+<=@Lz~~Ryr`upTc>gNPW$}P=5FF5ZjpH@k}nt1cQYWogw(kgU(Q>p$SJR# zZD5sTbLIK}3^`;gcvB^IxI!h;n8G`SIx(VS;?2J=?5Cou-KHG-EaPb)tV+Z>6OUQP{P4OzP~#cjaPsMH zN)zN#7X4@6#-}y3jtWe8SlLhHb?FIN`UZ?A%Io7`a=%t~b&=fQ=9k8P@>9*i?H8w; zoSmEt&+w%QmM8@w^pCch+gc6Kz;H6t5)Z9h!Zo@Y=!eI6S-&yc>P=KmU38mdgtc$X zt&aXj9q*}pH<%rmR^p>JW+pao+M*$j^Y2~%Cg241c#oKn} z&qMRWMv8u2a@E>F_MzX+S{uK>&0gve>SKB_Hv9zP+nCUZF48W2TyDdZt@m>K32r-7 zfmMUm;Ynf7qF8`Y`0^Tsah`ICReSn=YGlm<{pjWULKq>)ZCL(JzDa?7{-KkbQ?u~Pxjy!3$t)`X3sD|%X5i~2#wYe(hq zA&()+BEFNCCj)hSypZUFv5g7RaPDwP&Q4C|N52Q9$Lqum{x{^F&Ynx{pTks@Z|z+> z-0TRQ2^HFYHP3Fl{6P4j^r`osxBK>A%MUa8Gc!+VsB?FZ+*K9GXMa=J-OSD!fCvcy zu(1IAIX&w&0PZOPu^>t6%kbD;n)z>OBwYsX;3x4XeSit z;#uE8CwS*S(0ck^&gER;Nia@BiB{1UXJa?pTdn6SQ@Pu#PUrbiyzQHob5h*pfnc^7 zfKxaeirHwm?9#r$s41cQvl?&y_vN!1@mb6MjY0@b7*}(FfFNh;>mGrSZTdTi@ZX9w z8fphkKV9YTu>6ln_b_3roY-^DAC@lOhN^o4cbCX8J`ygXZX!f6e7#I~Qg O2Ij^#Ms+ZkNB;-8L9Y$~ literal 0 HcmV?d00001 diff --git a/test/RADemoTV/res/images/core_icon_expand_open.png b/test/RADemoTV/res/images/core_icon_expand_open.png new file mode 100644 index 0000000000000000000000000000000000000000..7927ef22d77e244037005d68ab1b8c96c68a73d8 GIT binary patch literal 3054 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 literal 0 HcmV?d00001 diff --git a/test/RADemoTV/res/images/custom_highlight2.png b/test/RADemoTV/res/images/custom_highlight2.png new file mode 100644 index 0000000000000000000000000000000000000000..5dc70a904ff92201404ffe5711a1653a33960dad GIT binary patch literal 367 zcmeAS@N?(olHy`uVBq!ia0vp^@*vE?1|rvqSpq4>;vjb?hIQv;UIIBR>5jgR3=A9l zx&I`x0{NT;9+AZi417mGm~pB$pEOXAEy>&6h2cL4F4((#GEjuQ#M9T6{XQ!zw~5&b z_fOM-Liasg977`9-%h*8*Q~(fI`M7n|Nq)I*=Oj6&PvdncF|1b^f_*~iO%{SF_(7j zJFJqFxBSC&|A*h7c;~75Jk>awA3m$4bB>qbO9sP<{qur+E8p+R%s938+?`D;9_O@6 z@7-j&v?lcPt!*``%;y#tdA`}m@}S3-xmwrpi`0x}v0GnPMjrL!7JaHv)@{38Coain z(@*K8g7^1E+a+sX54)qx7O~UKhf&e#_}V9_>D=$QRzA6Kvx;fT-$JQ7$^RydWL=3m+u@sSRAJi@E&1p8vU)z^}Dj1Mn~AWGSx!K+e|z z!iyGQdmGjHd>pt7;A3NB<6z_C;NX+s;o^~y6XD|%kyDY9l9Q5Bk>FpHUzeYa{|F%j zcz6Va1jK}d#AJkogk&f{NcOV}$^S&bc>_R#4LAcY(ICtKlmvoC0y&=q&;i`@7Kk)x zB?jc8fCi%qxYkf~3`{I+99%ree`G=cDB5o(F#th_ph3~07+9Ft7-;x{Ad>_Q{qiLk zhU`siQf7}Z0Zg*kSH*HHtmHb4HiAN);a}vj*y40IXSU#8!W6Gd?yxJw>)9$cWq6BF z_UX?ewoC6e_xsH4C~-W^y!Sq#Wng~yO@kY%4Wy1g70*=2;I3EM>(Jsa$0i=Ol&C-GEpT2ksj9H(h zjh&>O178f!kTDi+njzOo#3|KBm~)i-yg#PTm(>{R?hRjo?{fO3yNxN$%+i{dhc31i z2jp^BuQFICl{mla51hMewHox!1lE$k?fx3D#p{w-RM`29y!;0pUmy%`t4{2oC7b< zfnDE%cjH!lDlA=vf}KR<73`_5ElFXcgOZ0UFQg^M*Ui%hdkQUYHWEx$ccd`Ivz9JZ z9P6JF9V11Q)d(%cJ8lP$L=p8|3k?|b)$g8Z^$Hk@SeRFOKB0P$YAE-Ol2`W~R&dUj zlM1vSIRRa7=!1&4x1v(MC(-86@Suy8HCJ+F6c*}nGQ4+l->>?ha1NLey{@9!N*TtI zOvmsnQDux3WN@5A$5gMaWta6cYqzZ#3Od!8Qf$7-_|Zg6?_n-SO(FxuO3%tC(vROm zcubQ=xr5}*M8twS+WBac=%Ugo3fvX^l{=?Lp2oB03nz~v_1E?ohFtk4TX3$cw!K!$ zXmKhHEL0cQa#b`LYg-#%*saUuiT?EFYu~r@`8e``9n4G2+Pi0u?_A@@X`$-1cv;7( z#=$7a@3gq?uo#lDq0q7N(vVzfR;q_4>{L$~2E`dL^bR7e{(LBX{@HSlD2FaDrf6Wf zy`c!U=`AW=;8S`IkbloQn>6bo84ztXc|ZCr>gf;q;cGR_?demKt74(%XM2WthW>s} zMZT;Yy1?nsv6f=mcOT`-t2)5meLe>;oXXYUKeVRrD0mzb4<_o)n+2ByT`YW z2XgJkG1u&456DbLXoMHk1-&xeeQ>XGb9f^&%Ow?V>szEIu7?eA`JKKE*rSmQbd_|= zJu5p0GQXR0XL+f93k~mDHTqgl+ljTj6_an79Mf-jT73>|Jg88%$n)iJPke2nwsOQp zGyGosz84)@%1k4cL6w)3UE9*_>1I5I!PjlgKq6UHm%NBR-KiuDb+VI1<6G!6qO3t&qcXw>n?)RZpU-r26R8rWH z;j)OgjUvzO*94WLB6VZ#Q$SINU1v% z%kY}JuYX2z=Zxd9_t*!z*Ca#irpnyz5;k2p{JvuD)xo}=2RD3#u3xgugglINNyarQy-h@zr3TrbK^a}QSZC>VSCAyuiDGzmLdh5!9*o*_n%zceaqKybtwk}V z_iUP-1KKMJM4APm*Y4>uvL*qVbq};4w*p|7TlroF-icdu{wU{jFH7S_mg1OmdpL|K zGL^{v5lIWPQ)+#D>Pp4;4FQ>y-X}-;=K#Vo6z^&K$5MtFt0NyVF@MIBjirL@M1isA zNIPS=pXjulX+*l<{ct(?g``ss@n#*;xdFx}jU&|3kacyf%3LvmA5v$~>-MJ|R88}w zf;X>go%hx3Jzx2X991s#u0Aysf~3obJTH$~%ynBli#coymexHJXkkc7Y%eR!4DVx= zY(JW+IaOQ|`;H_lFHcn}@Ou=~=h?b4rC+qe9b!OQ-4zE$O~(ePy`e~2V4rkB&AWFaevyZFg#^CBqaS*?aPtI)N6PxI{CGu zirtCCD3!d*P}`&QAA<>fB{mg8Y1lDgY+6K5{aFdGkc`ybOBj6i_-g4+rJrxjj#<^? zb3hkkBc~Vn_*$sncBqf*jBU5Z@F~JB7|HYTV-|g;$hW~7k2BNgw%W6eVs&BoLdNB! z@l#U!<61s`H}+2)%AODV8|k=@2@*_J)*RvE87ZNh!j${RwM}uU*7Woz+)>^59zO_i zYs`z8&bS!qj%BgZh<@a1R92ES-#=<{bnYdOn<^et84^3=;d*uS!K31B#LlwRU`*H} z+H)YC^2&IHBfl6^D#xMPtD}OYW!&0%nt|3xdFyyvvBhSt3>T~qi+Xm3`3#FudOYH@rY=j;ToUvsv)Bd zO0jj%+nvg4m=I=L#mLNT(AsC4%g0s4|!&$sz544 zXC>fGnc?GM*_uiF6H~1(=RkqcYqk>D4PC&&&5ui9oU5jvW3-b&h>)>H)a!NRCzd%?i zS7?1fx%lS2It$Wgc8Wai6YX`cnp-oE$IomQc;1{!O0(d!A4x@9UFX5_(K?&df+sG@ zb?ymrxJ&Q%dQQnE`8Z9e zuW5Z{&Fd+9N@VegP(n!W%O-j0*@=EgdJ1){5r?wG_09BEUYrHOn7Y-7*-jzkMWC0HtI}Wa2TMhP9*s_*|nsO~omiL#&8_p_uPE^LC;LqWTd6%1nz0@NQ*<2m& zzIO6pK7JT_KG1hGnd01-K};p?+u0uF9iuhN&eJdnVR zOM+W<&cyzmY`WkD#Vf_nh@H~XS6ZhE#M>i=Hrkz~A1)PE5FT-7uuN)na~IbuHy>&o zxtPVMioivhHcb}gtqz?Eq_4IpWU|@_VW*LZ6HGCp>X@oho@6h_KP`~6KT)vM@wmo zV!!(f42LzZ1||v!KzF4~FFj=y!`buR@^v|?xo5XHJ8@zkGIPozUCLHoadJ#yfiO1b z>Due0<4%o+f0NlLYVCI0C;PC7Z56ieK?8Z4D}iYtUm{@U64aC7SC+BkY`;yFj^Iyp zND-Kg*(-A?u@@>PkN(Aw>?YbzH5Q(R{qI3V7sQj9r(%(OP|i--FEP4zkh3AOeNedCOPzc zFgN*1S5|+$jN?T69gK+U@u3^5bnp+pU;Kr8qQ~ST&oa+}sf5~RyIOto9weuQ^Eusz z;PbPQ%Lcsqi+D~rmqTKCk84=UVqL1Vk15if0-?eH~Hy?PyFpWkXbSbf3cyWrip!iS16p<*L{m(QRA z8I+P=g$fMU*rM8y1`tC9av%T^2L#{;`~fi#@&mkp)5VBrYZqOJFVumr*}tzBBeGxc z2!AOBFVeSv*-3CgL(RbdLX!HgHUp}SwsXtQp=3CIhJbJ{;y)+` z^rGk9g^UWoXJ-d;TtJA5Goe)cq`Z2T@)rdayMh2FAp9*Od_m#)n{uJ^0Bi$*I~bPx zFALfdiv3@*&i|kAP-CNGqjUqPxuU{fGC%9DRb&9E02n0#%Y`fr3PaNc!O!`ingALT zC{hF>M1UTk1XfFM`(Pl10Rk6W`Fl$*MnLuWM*&CuT~Jz3+WuMo5crGn%Uo33)yKsJ zyr7&3)5gum)z(YP#t9C#e)ZFVd&9ui#U%8=Xrqgpt3BAhDC!71??2me-fqaB?Vo1o z*gO2|%%U6gjM3mVuau=eqGQ%1NVJgvPEwjcq}3vfsL62|>0jG~}8sz`e#@bdrm z{Ly?oUGx-<^uVEhEiP*D|4GsCvPb-bf@$sIt!Hij4;mpH0ro@qd#ie>=xM0ixVgEY z6k`7-|3etZ!Ob&J*2U5O_ev4{oV?0!GT0N#7GY=Yx7X3+PDyiHdLI<_$X3f1=}o zTkP;3#Vj}qE&dHu{~M_OH&Fd=p!(lH^}m7Ye*@M32CDxJRR0^O{x?wlZ=m|$K=r?Y z>VE^(|DOv~|BQxQ2ICz7pbu6ED*QnN$O5*28(;$<046{iZ~$>{uzFo!?w|zee1dn%Pf7J z>6*WUKhhnE@U~|1N4mIrN%%`KUnrLVaTJ-4ndw5r+gXbFBBhYYNJE=R-pv!iB*Y8j zf%6NBFbRq93W$n`3h;9?X}GyEDIsi_z}!gzetuCV0RagiFqu+}=~rO}hxD|ylh9F6 z`ZXZfl4AZfGe18+UOz!zH&1&$n7Ft&AHM*ffB+9D!Q&O+>TT`MQg2jS)B;|WKA;w;QesHKtsqrsrb)~JP+Vut-98lePT ze0~zaod*ja3_0ZCy2Q6+H&L17^gF(Gkr0hp}3ynvv*sJN)StRm>w;FQ5NlF)Fob+ijm z00ZHmU0{YV55E8pOkD4GhA^!mA>;NJboGya1o_804) z+af3;CL+Ww#4j$we*wV-7ljG@gaQ|opHL8_3&VcO2yvr&iC#c(bHIfMDIf$XLSn-F z7ZBVS5C^vfgy2Ss3WD2=f}lJI#ZgcUlmsDaEJ1M7Q4lqXAm|Jz2=)cxMPJYrgkVA- z7X?9ULHLs*dV!0fpg3qJ2rp#Bg+W|Y07VxC-3El9a|yx3L7gaw>MJgW>MJgWk`Wg} z$%uPM=#L911@g2s2h=ls;if`wJRK< zsvyPeyr9U1?}Hr`+~7W_TjJjx z75l^a=?=P``um7&Vzbo+X3jDhQ|E|ElEAaoL z75Mud8{rDRSo?u*(C4%GM&M(UrM8ZilB&AmMK}OoMcvWW4GJa*Azi&aQO{9E#wJWy zJz#gnHOQ;lBzPQrI8*ncvdSqoU2k^qcWNypq7( zJ;6K_h&CuMXbZk5gZNz#ck%OfN6}Gv9b`7nC>;E)A&7f|27)*h3b+4>b6?2(#AQ&p zEz%WC0fM4zcDF^^qVN_FkM#9Hr3Rs?gLs6mBf<~F2SA+F#RusK;;6hbG9?DmHS6#CPzL4-8( z3?Q@Q1&Dje0JOC(0G$*MKr>4NIgr2hO&!Mo3;_awA>-mtzXx%Ue*ymipfO+*>g9Nm zI0wk<=rO^4JbizPprbAr04^9>Bm<}c27m>)0`P#@jG}-fAOk1@Hvla#&(RpL0N`Md z5efbR+7Gw|gaHx2Bj5>;0HgrvKqin46aXba1yBn#0&PGi_*>{fU>ukR7JyY?6W9li z!Jph>K?oqE5NZe`gbl(45rBw6u0s?d>JS}>F~kaD4{?R~KyE?qKpsKjASsYnkZedX zqzcjq`2_g_8HLP1mLc1aBPbdaA4&$Lhq6QYpkh#2s2WrcY7VuBdO!oAccIbHWaw*X z9<&_V2z~sOb#ZgTvi53Zx$0d#--*uOpwPK%-!%P^EC8h@mK< z7@|0$q^FdnL{L7UETHV8{6R%aB}0XvdPr4BHAr>obQl7cx(> z;IfFZ*s(liX=2%AWn|T0y~Uc#I>v^>CdTH#mc-W1_Jf^+-H`o0djwK(yCVa7c?R;na!u&4$nf&9hORyWTa9A~LTYysl zF7RAnK#)LCNibBfQgBO%O9&y9CNv^UDy$)VU${y5R76z7Q=~v-S(H`OO7w;3uo#(` zw%B8_kK!2Oa^j)lwc>{oA`;#bB@!EwJd)0mIg(4)IIbbCWnP<;VwSR&dL=b|o$0#O z^_SPDr7ufcOTU($m0^*wm3b?(D0@}bNj6V*U5;PQQ?5+zhrEP*uzZ68nu4;zLxmp2 zON#o6DT-f}n3e36a+Nlfg_VPp8&oh<)Kp?shE?fR;i}oHn>R#n1m9>;!&lQ)OHrFu z=T!GpuhxKS+|Y>En9yX?bk(fT0<=`M;b03`ab$i21EvC2H6Hb3>6IH45y9wjDn3ijcJS>jVn#CObkrkn(Ub> znkJYomt}Sj1ZvJjx+_~H%+^0PxJQ6%MJ=HwldO^I*y(+!Qz=x?WpDRB1 zd}e&F`#$$Q@H6l$^(XOn_3sMc40sT*7^oEZCI~$U9@KQ}@~yC2Gr_XKuRta zylcr8&CbrD%ZbT_=KAC==b7bw&R58 z_Wnf~Y1zYaNO?f{W`#q=bft0Sm#Q08P1TasWi`AtS+$pIpVyJs#nj{0->pCY5cpxQ z!M)*oqkZFClV#I*vr+Rv%gvUaR<+iTZAxv;?XvA3K1zM8{Uq_Jsza=!qEn=^yi2&N ztXsIdtVg7$yjQfh^0WBo>Mz&6)b~mEHTEm?w+*NcbPj3`ei_mq8W}blo*uCsSsHa2 z-5T>9J08D1fidxLl6W%lE8W-EQ&*=7r$wggW)x<+W_4%B=iqaz^Ir2O3wOT}d`nzp zT+Ch)SgKuCTK>FZy0Wn9zIyyUVvS_&#rl=?_Zu=BU7JRm3tOIB=i85WsCTkuR=Pmy!fAs%Q<=tXD{@YIXH5AjGmZvp1Orx{QsI0owB z1ywLG(Xl`RHV%L~#N#LLFD4pzWCsAbIN^gBb$|wF0(jyF6b%CkrGM>DUNjd6I|A zvtok^Uzaq&z1S%FX76mrXOt>)GBF=J@A98>irpyQa>8p%?H|?~Lnl7`Z;Z zTf5+|C;bY|)wI8HaT#BZ?*B}fmAw&%rH;S2DbbM-*^qD$OxR@g`brZmQUlFyq)uHTNBt zWnx{$^Fy_UURL+_CB6QJE|+BQK2GagWt^Ah08c#Fx_^+gB*f}g6ESPCC#LIswS3Bs zRow@8@{H^fU%`Gk$FB5Q_w^L1(k08>kcvr2Vco_#phYAyzUFdIw&$yVY)M(SchJJq zmv{Dq;<+#B9rCTyO9(XOq**Y>(CTy!W&28hMt&97Qk=jMA5L;X_)fX%YClM9UAFG8&!~*VvBDh*xP8p+T(llVcAD#6?VXq=(i@L2RlBS< zXVy^Xd~asC>|Wx1#xBcjJC$4S*~(fC5*wP5BR3ZYLiw^8VOY)|o>OA0)RUfyCWt*iQ%%JZ!GY8VpObnu4E?aKUhkgKHo8o)H~iw%NThSLhE=EL#+=91 z%kHfvV{Xy6Lhl)yDW3yO0rvA^goJJhp3($0!ox*FNeK^~PLe|_t7gNx{0TOYZzg@; zarH~w;r1jTbZvY0X0USXZC~)xSYs7S=9@FK5RVu_y;HR({#9CWhujnKY2W;vPVUL` zIBmK)zKP0+t~0sRHMrW)j^48{8v4fDz=I%hpDkE?(5l_B?3uOo`v_GQR$~2Xjc8Vq zs63%`bFVHB(Pa+4MkU)iO~h4Cq)J zFtT0z_&L`^0mo;ii#zU8BS+{oS_n@eR1Mjd*qPF?c%pmbB<%=B-!>JMLNq z>TL+!*XDLSEm)zlrmZ5?I|tqs(bYO(VOfjyzVM*n@i=j*HS7>`IH11zx|?7iE+dAL zHB!Bs;3|m+uPr)Z)$X9u;kD_QH~R4mesdjpS@!W|RCm|B-S|bh;Lf`Cv_9e6CmvPK z5z_~|HQFA-bPNhDqp9DUog@k#5Zt@9W`iyM!}$`^DxTv?oqlhb?h*B?n4XCwi@f?B zy`!C5=BinxbVb|x(3H;~Ti>Kva8h4ul4t}7ty3pzf*uj3rBo{*IOR?8bBiRUx;|si zYsdN9gsf!NhwgAHKbs5qw8G~6LK%j>Wq$XXk8L;1!w$)`l+p)e z`8`;SQGQbz`=fJX?;Qontz8rk0+)s%JJ$s=q;enGwT8%;24aT!z*>deY_O3^anuIF ziX3d7LEb&_LwJs`5wztw`SsvLb67hGri@~*1Sv=N5QCEP9B-#acEcJ{=l%9zdQ5Ui z`jW~6frE;WP!{_opKRJ25nSn6-Adqj8;+!(CgtjN=J{^YE^rzIZui<4ANHGbz43p> z*&in{{akBKay&qh_7mDLjbg@t2NE-n(u#b)8~?ga8@JnFA%6FoQ{X{+FE~xSYlIW& zq>f_ap98x34B)9FKjA)sYz)kryPNiT4L7}4=W0L9>r$SSY5Sv+V$LM8J3&umhc zG%VK<+^yVe9|^jDG^vmx0|+7#E+<}nrtA+nV z`@Cb({*MiENlH|{cRcv`ag|mDM!5CfhZ`H~dJ4g=@Y+3N)sjbE6;WjjwYKpy0d*h?e!`df<#<_@(b!&xEyV1YD zzmu~vjPUiUO(=10?!6nj76k)v;;mATjD+;Zd3i-G98J%1m3dW;UymEvTG0!}TZtJm z)((^Da-9P!~oDV z3&~q3NCrY>IK=l?{m>~$Heb3--(Hi99t*&&y)?p8NlP(z5QY|&uR*7uJGA(0#UikF zKyRq5>HS<8eu+V>2BBKYRak7dpP17937N~Y*6;G>=V7~BIj3`qmy{Rf2q&Tw>p8`Y z;0eMbAA+7mx3>j^u+xN3UhQRY`Y^FoTi4_vbmGl$V@F{tETLel&1ip2nBA)L)HkOk zTJcXs$-|Rx&8j*G|XY=roduPVJ9`Z38_|v&24sSW81_s*gZCZ zN~R_Ey()vCGVh=_&%Q|J(DSz~b>+Byv*IN*Xj^1a;<7mF@?Tfl|MUmN5R*aWv`3IEl9HGj-+Qz1r5kuZb_!pzCc*N_^G2i^#BsXdXt| zi7Cc=@E&){Gs9+$tuarX(yq-y;jg@;{PzL^BiC#d%^yK+Dva?}C16(t3ge`8BLt?y zlJk+rcWDV)f_s#?%G_yg@y%Cs=!Hs#D{EUJ<&b{4qD>W(P)4H+enZ)8ia> zQ{{U<*d9DOoT<@Jy~?CR2#c;7NR%T9qZb}`C3Y<*m1TWd`Y0D)7K>PK3+tXQ(cDQP zt=p4quX(f2SsEE}y#&6zy6aB*?^zrW(|ktn%evu0vEK+H*d?ned&(Z+U59<0J~+E< z#=GMv&~}VWn?yu{Ki^j^Zk~@5j4_0{RM}e?hNe%=PD;?ZgwBhu&FjCKs|tD}?S96i zNhT^rsA)`Z_02lGB$9~I-swT+NHm*ECF_RmHzc?D)8|0@;QGN6m^NUq*Sha~eBEj^ z?=kJl8*sF`Yk5q4JlAsT9GJUh*m0es(;z$mo$fS*V}tF1zw3?aTr*dJz^T0xX&!CT zZ;vH2qI0m(9Ru_=r*ou+Q*SNo+4t2HjB?iy&H*I%zgY3+lYErMBCt3+2Ofql*fLfw zn@%$d&v%EW%PV&_7?;2c(z)keS<(!V-c=1Fed<~D|`>P%x)SI|HLn%kmT zTHcZpm3QNE#uH7-%0fJ3RA)`X)fAHGH)3~Osb|F&6(~L@$jeJ2JD$+UR;Is`9cS#7 zhzb*Xh=!~#dZ4nXK>5U$)_B$`S+Ym}feRwZ(O1%AZ>aeSD`ub6F2(4m+S9VSvbq3g zCN#PlS$dVH;YQIJ&KXx|rd}+`DA)0@_lQWz^Xjup$BzBTQM=5Ux&9;@E4xjC_pxX{ zEk)HkK9{fu*;lup-;i;~X2`ePp$ix2%=-Z)8r)Ib2Erf$^j zAC{te9QL|ko8`_WPOOS`J}>HQw6rdc4SzeWon&Wk>AFkAW}?kvgYh;!^a%WTYB#E$b61>(2!$6Lpy0R}~84 z*u#+5R*9Do?ye1AYj2zb>|$CKbsl8cZz2M|%=W1Hzwz&IJB!$QJhxi-ETm?vINlRj z8gO3K+S;EN3c{0Ge;G)#)3%_jDZ{Kt)3Q*(FaAX0al}{P`n2%QhR1{29si@;ufBc= zeY)j`Va~OPoKZK{px3dHW6|WYW<*2hJcxSw zZo8Eh!V2Z=n)zWPH`4hwp8!siZ0+PDh5Rx`w{f$zkHB z$&TapF%xTy%P#~9&|Q?!vnFs@ql{&v@?0A9eb(_5X##t_T+NEZ6~Qg=JtsJKiQKbMFv{G8ZMzdKYNcL97Ac!Q<0_OC)KTd_?tCAf$_IH z0sOgiMb89?WF(4K3uV{nk5oplW%F2x4HHb%2zfrE(5pM)s{BwkHP3jt?V8@Yrklri zeRY9|iAbf-pF0+};alK?);>{INO726R7=-lCvQ`U-BNm>=?q$i_5^-Zni0Z~)R6luEG+d{=1OH|t6W?RA67yy z$*`PZ85^6ytv31#HM^H2g1y-_^G%BKzgFQ3hK*B8Kj@u#U2(%%+`#dgv#Hpb)Tz6a z#GUna4F%dqW0}M+R+Z+?0bc1euM-J^8@tHs!evG=uCm{i)#pz`32@~)t#Whjc80vt zUYiKd!Zg%o(J5Mv9>m*bgf9xyLSCw1(p} zgC|R+D5234A=W(#wCeosjx`F_ag@8ao25!8&^0?;wZ_fA_B$XF=?#h)(sE#1AvioL0jBRRv6&wyiwrZ} zZ+ZYt>Np1oypG-3;xq;-9d~z|(kItxh>pBj% z0DT@ny_(^g^~kwQ(!6BkMK(|Mr|R^*OH-dL=s1-rp<4snv(wKM`Vjrrq2BJwwmw27D_d>8rZ(1Uf4*B?mRGD#1x{z8Uc= zEtR=`?c`g6J^0hYxe>%B@pB@SCrw5kC%^Ch#%8?-1|G64lQu-1S3a z+2={|Qo*NNCK<>(FJ*6w5H?AT{t$g9Rkj=2ckBae(^vAX^WO+gRgINxh~L*AwcwVK zsw=m`_om08T6;ks*wgi%i8S?t+j^mR0(g8TT2JQNK`h*nwY14llHr0BUmjnVB_3a~ zqB_@gfk4Krt&@=Cfq*n&{32>Y40&ReGbza<@QW@lKZ1#vz>{A}`u@y05MA=#)qj|# zqhs+U=w>$ZGs4RH*!X-6|2gP zh8np@66jSp4nkFTkDNsOMCw-9$mq0a4wFkTJ{o*i9!RU?S*~<4Y?Zxv&x(Te8&^0h z_2n>n_Zpcqdavcz#eK;Jjk--`iJVgTx3RQbC(=fLP;k)Pf947uEP^yV*05

XpG+ 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

7&tJuVZUPY6}Q+fRZ5x(;4ZK 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

bjaxHYtty;V32)eqxISHDR)GQYLo4htJ7vs> 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

1n=H7^lyN#~m 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

+D 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%0DI``qmuw?VxIdcViLjDEfCPe00=$5Sm*u&e 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⊀SKFv@$}hkf+=osq=84Zj|I&&mcXTOOOM|EC+ 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%0AM`{$Gg*88D(mS(zua< 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 NnlfKitw10e|Jfw{P}cwe literal 0 HcmV?d00001 diff --git a/test/RADemoTV/res/images/grid_image/2_raw.png b/test/RADemoTV/res/images/grid_image/2_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..42d701cf249826c52b480151ac66cdd63a423912 GIT binary patch literal 274246 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�gZrD*0#s2|=IPxy}L)u;d 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

L0TW`>=)l` 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

ND~^n-%@#&vHI^%N*)(x~ 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

UuiO1V3)cp*Cv2Aa%!}9 zf1%mN4nm{x`4gTAB+v%kT_Xcy`@XIUTTJLS9*a~UBZ{s}a&EOAHrW}Hb1g^XCYkA< z5v)9!C4jdImSL$SS@SgI!Et6PEAdh1PDv=^1WV?xF^;pQWV&5eK6SB-=Sh6~wc&x1p{VhM71VSk zTao;lpMy<(mh!P8-^q!#i%{gVu_IlD(*i?@O_UA1gcIV{IeUG{qkDIs5l)vZ?_R^1 zb*u{JB)M0@a@Wd%z7UoaKpT(%SeO{)IT;|rj36iR$s@oeL eDBrbW9^#}F;fzLN4cw&vX<+KZ)C>Q9ss94HXB{vA literal 0 HcmV?d00001 diff --git a/test/org.example.rademotv-1.0.0-arm.tpk b/test/org.example.rademotv-1.0.0-arm.tpk new file mode 100644 index 0000000000000000000000000000000000000000..ff7e221a86aa9b812aed22ee574a5cf97fc4a67e GIT binary patch literal 1288492 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%0DtWsV+b*f0BzZ{~B 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


-!)6X@H9Nv8w7lXSOoEyr){_d#67|r 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

P?uE?GY)%TVm=vwxAMWuZz9(k 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μ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 &M>lOay$I=V*3dhB^>OTr?so2io0L^SO{5OLfm$ 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 literal 0 HcmV?d00001 diff --git a/test/shell_tc/CMakeLists.txt b/test/shell_tc/CMakeLists.txt new file mode 100644 index 0000000..68f221a --- /dev/null +++ b/test/shell_tc/CMakeLists.txt @@ -0,0 +1,77 @@ +SET(FIDO_ASM_SHELL_TC fido-asm-shell-tc) + +INCLUDE(FindPkgConfig) +pkg_check_modules(FIDO_ASM_SHELL_TC_PKGS REQUIRED + dlog + db-util + glib-2.0 + capi-base-common + pkgmgr-info + gio-2.0 + gio-unix-2.0 + gmodule-2.0 + vconf + cynara-client + cynara-session + cynara-creds-gdbus + capi-network-connection + openssl + sqlite3 + json-glib-1.0 + capi-base-common + capi-appfw-application + capi-appfw-app-manager + aul +) + +FOREACH(flag ${FIDO_ASM_SHELL_TC_PKGS_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/test/shell_tc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/server/inc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/server/states/inc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/server/ops/inc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/datatypes/inc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/jsonutil/inc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/uafv1tlvutil/inc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/cryptoutil/inc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/datatypes/auth/) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/silent_auth) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/uiutil/inc) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/datatypes/auth/) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/silent_auth) + +FILE( GLOB FIDO_ASM_SHELL_TC_SRCS_CC + ../../server/ops/src/*.cpp + ../../server/states/src/*.cpp + ../../common/datatypes/src/*.cpp + ../../common/jsonutil/src/*.cpp + ../../common/uafv1tlvutil/src/*.cpp + ../../common/cryptoutil/src/*.cpp + ../../silent_auth/*.cpp + ../../common/uiutil/src/*.cpp + ../../silent_auth/*.cpp + *.cpp +) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -Wall -Werror -Wno-unused-result") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -Wno-unused-result") +SET(CMAKE_LDFLAGS "-Wl,-zdefs") + +MESSAGE( STATUS "CMAKE_C_FLAGS: " ${CMAKE_C_FLAGS} ) +MESSAGE( STATUS "CMAKE_CXX_FLAGS: " ${CMAKE_CXX_FLAGS} ) +MESSAGE( STATUS "CMAKE_LDFLAGS: " ${CMAKE_LDFLAGS} ) +MESSAGE( STATUS "FIDO_ASM_SHELL_TC_PKGS_LDFLAGS: " ${FIDO_ASM_SHELL_TC_PKGS_LDFLAGS} ) + +ADD_EXECUTABLE(${FIDO_ASM_SHELL_TC} + ${FIDO_ASM_SHELL_TC_SRCS_CC} + ../../server/src/AuthenrManager.cpp + ../../server/src/AuthenrStub.cpp + ../../server/src/AsmStorage.cpp + ) + +TARGET_LINK_LIBRARIES(${FIDO_ASM_SHELL_TC} ${FIDO_ASM_SHELL_TC_PKGS_LDFLAGS}) + +INSTALL(TARGETS ${FIDO_ASM_SHELL_TC} DESTINATION /opt/usr/devel/fido_asm/tc) diff --git a/test/shell_tc/fido_asm_shell_tc.cpp b/test/shell_tc/fido_asm_shell_tc.cpp new file mode 100644 index 0000000..3902b26 --- /dev/null +++ b/test/shell_tc/fido_asm_shell_tc.cpp @@ -0,0 +1,2175 @@ + +#include "fido_asm_shell_tc_util.h" + +#include +#include +#include +#include +#include "AuthenrManager.h" +#include "AuthenrStub.h" +#include "TlvData.h" +#include "AuthnrTypes.h" +#include "AsmStorage.h" +#include "AsmHelper.h" +#include "JsonUtil.h" +#include "AsmRegRequest.h" +#include "AsmAuthRequest.h" +#include "AsmDeregRequest.h" +#include "AsmGetRegsRequest.h" +#include "../../silent_auth/silent_auth_entry.h" +#include "asmcrypto.h" +#include "JsonUtil.h" +#include "AsmOp.h" +#include "AsmOpFactory.h" + +#include +#include +#include +#include "TCUiAdaptor.h" + +#define SAFE_DELETE(x) do {\ + if (x != NULL) {\ + free(x); \ + x = NULL;\ + }\ +} while(0) + +/* A 256 bit key */ +const unsigned char *key_test = (unsigned char *)"01234567890123456789012345678901"; + +/* A 128 bit IV */ +const unsigned char *iv_test = (unsigned char *)"01234567890123456"; + +void get_user_choice(void); + +int +b64UrlDecode(const unsigned char *in, int inlen, + unsigned char *out, int *outlen) +{ + + int npadChars = (inlen %4) == 0 ? 0 : (4 - (inlen%4)); + unsigned char *base64 = (unsigned char *) malloc(inlen + npadChars); + if(base64 == NULL) { + return -1; + } + + memcpy(base64, in, inlen); + + int i; + for(i =0; i < inlen ; i++) { + if(base64[i] == '-') + base64[i] = '+'; + + else if(base64[i] == '_') + base64[i] = '/'; + + } + + if(npadChars != 0) + memset(base64 + inlen, '=', npadChars); + + BIO * b64 = NULL; + BIO * bmem = NULL; + b64 = BIO_new(BIO_f_base64()); + if(b64 == NULL) { + + SAFE_DELETE(base64); + return -1; + } + BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL); + bmem = BIO_new_mem_buf(base64, inlen); + if(bmem == NULL) { + + SAFE_DELETE(base64); + return -1; + } + + bmem = BIO_push(b64, bmem); + *outlen = BIO_read(bmem, out, inlen); + if(*outlen <= 0) { + + SAFE_DELETE(base64); + return -1; + } + + if(bmem) + BIO_free_all(bmem); + + return 0; +} + +static void +print_hex(Buffer *buffer) +{ + printf("\nBuffer START\n"); + if (buffer == NULL) + return; + + int len = buffer->len; + for (int i = 0; i < len; i++) { + printf("%02x", buffer->data[i]); + } + printf("\nBuffer END\n"); +} + +void +testTLV_getInfo(void) +{ + + //int i = 0; + printf("==============testTLV GETINFO start============== \n"); + + /*1) Create GetAuthInfoResp*/ + GetAuthInfoResp *getInfoResp = NULL; + GetAuthInfoResp *getInfoRespOrig = (GetAuthInfoResp*)calloc(1, sizeof(GetAuthInfoResp)); + getInfoRespOrig->apiVersion = 0x01; + getInfoRespOrig->statusCode = 0x0000; + + AuthenticatorInfo *auth = (AuthenticatorInfo*)calloc(1, sizeof(AuthenticatorInfo)); + auth->__aaid = (char*)calloc(1, 128); + snprintf(auth->__aaid, 127, "%s", "0011#0701"); + auth->__authenticatorIndex = 0; + + auth->__meta = ALLOC(AuthenticatorMetaData); + auth->__meta->authenticatorType = 0x0020; + auth->__meta->maxKeyHandles = 0x20; + auth->__meta->userVerification = 0x00000040; + auth->__meta->keyProtection = 0x0006; + auth->__meta->matcherProtection = 0x0002; + auth->__meta->transactionConfirmationDisplay = 0x0000; + auth->__meta->authenticationAlg = 0x0001; + + auth->__tcDispConType = (char*)calloc(1,128); + snprintf(auth->__tcDispConType, 127, "%s", "text/plain"); + + + GList *tcDispList = NULL; + DisplayTc *disp = ALLOC(DisplayTc); + disp->width = 0x00000002; + disp->height = 0x00000004; + disp->bitDepth = 0x06; + disp->colorType = 0x08; + disp->compression = 0x0A; + disp->filter = 0x0C; + disp->interlace = 0x0F; + disp->plte = (char*)calloc(1, 128); + snprintf(disp->plte, 127, "%s", "rgb"); + tcDispList = g_list_append(tcDispList, disp); + auth->__tcDisplayPNGCharacteristics = g_list_first(tcDispList); + + + auth->__assertionScheme = (char*)calloc(1,128); + snprintf(auth->__assertionScheme, 127, "%s", "UAFVITLV"); + + GList *attTypes = NULL; + int atTyp = 0x3e07; + attTypes = g_list_append(attTypes, GINT_TO_POINTER(atTyp)); + auth->__attestationTypes = g_list_first(attTypes); + + GList *authList = NULL; + authList = g_list_append(authList, auth); + + getInfoRespOrig->authList = g_list_first(authList); + + + + Buffer *getInfoRespBuff = NULL; + TlvEncodable encodableResp(getInfoRespOrig); + AuthenticatorInfo *authInfo = NULL; + DisplayTc *tcDisp = NULL; + GList *authinfoList = NULL; + + int ret = encodableResp.setEncoder(EID_UAFV1_GETINFO_RESP); + if (ret == 0) { + printf("setEncoder EID_UAFV1_GETINFO_RESP PASS \n"); + } + else { + printf("setEncoder EID_UAFV1_GETINFO_RESP FAIL \n"); + goto ERR; + } + + /*2) Create TLV encoded buffer*/ + getInfoRespBuff = encodableResp.encode(); + if (getInfoRespBuff != 0) { + printf("encode EID_UAFV1_GETINFO_RESP PASS \n"); + print_hex(getInfoRespBuff); + } + else { + printf("encode EID_UAFV1_GETINFO_RESP FAIL \n"); + goto ERR; + } + + + /*3) Decode the TLV encoded buffer*/ + getInfoResp = encodableResp.decode(getInfoRespBuff->data); + if (getInfoResp != NULL) { + printf("decode GetAuthInfoResp value PASS \n"); + } + else { + printf("decode GetAuthInfoResp value FAIL \n"); + goto ERR; + } + + /*3) Compare (3) with (1)*/ + if (getInfoResp->statusCode == getInfoRespOrig->statusCode) + printf("GetAuthInfoResp Status Code TLV decode PASS \n"); + else + printf("GetAuthInfoResp Status Code TLV decode FAIL \n"); + + if (getInfoResp->apiVersion == getInfoRespOrig->apiVersion) + printf("GetAuthInfoResp API Version TLV decode PASS \n"); + else + printf("GetAuthInfoResp API Version TLV decode FAIL \n"); + + authinfoList = getInfoResp->authList; + if (authinfoList != NULL) { + printf("Non NULL authinfoList value PASS \n"); + } + else { + printf("Non NULL authinfoList value FAIL \n"); + goto ERR; + } + authInfo = (AuthenticatorInfo*)(g_list_first(authinfoList)->data); + if (authInfo != NULL) { + printf("Non NULL authInfo value PASS \n"); + } + else { + printf("Non NULL authInfo value FAIL \n"); + goto ERR; + } + + if (strcmp(authInfo->__aaid, auth->__aaid) == 0) { + printf("AAID PASS \n"); + } + else { + printf("AAID FAIL \n"); + goto ERR; + } + + if (authInfo->__authenticatorIndex == auth->__authenticatorIndex) { + printf("Authenticator Index PASS \n"); + } + else { + printf("Authenticator Index FAIL \n"); + goto ERR; + } + + //=========================================Meta Data========================================// + if (authInfo->__meta != NULL) { + printf("Authenticator Metadata NOT NULL PASS \n"); + } + else { + printf("Authenticator Metadata NOT NULL FAIL \n"); + goto ERR; + } + + if (authInfo->__meta->authenticatorType == auth->__meta->authenticatorType) { + printf("Authenticator Metadata authenticatorType PASS \n"); + } + else { + printf("Authenticator Metadata authenticatorType FAIL \n"); + //goto ERR; + } + + if (authInfo->__meta->authenticationAlg == auth->__meta->authenticationAlg) { + printf("Authenticator Metadata authenticationAlg PASS \n"); + } + else { + printf("Authenticator Metadata authenticationAlg FAIL \n"); + //goto ERR; + } + + if (authInfo->__meta->keyProtection == auth->__meta->keyProtection) { + printf("Authenticator Metadata keyProtection PASS \n"); + } + else { + printf("Authenticator Metadata keyProtection FAIL \n"); + //goto ERR; + } + + if (authInfo->__meta->matcherProtection == auth->__meta->matcherProtection) { + printf("Authenticator Metadata matcherProtection PASS \n"); + } + else { + printf("Authenticator Metadata matcherProtection FAIL \n"); + //goto ERR; + } + + if (authInfo->__meta->maxKeyHandles == auth->__meta->maxKeyHandles) { + printf("Authenticator Metadata maxKeyHandles PASS \n"); + } + else { + printf("Authenticator Metadata maxKeyHandles FAIL \n"); + //goto ERR; + } + + if (authInfo->__meta->transactionConfirmationDisplay == auth->__meta->transactionConfirmationDisplay) { + printf("Authenticator Metadata transactionConfirmationDisplay PASS \n"); + } + else { + printf("Authenticator Metadata transactionConfirmationDisplay FAIL \n"); + //goto ERR; + } + + if (authInfo->__meta->userVerification == auth->__meta->userVerification) { + printf("Authenticator Metadata userVerification PASS \n"); + } + else { + printf("Authenticator Metadata userVerification FAIL \n"); + //goto ERR; + } + //=========================================Meta Data========================================// + + if (authInfo->__tcDisplayPNGCharacteristics != NULL) { + printf("Non NULL tcDisplayPNGCharacteristics value PASS \n"); + } + else { + printf("Non NULL tcDisplayPNGCharacteristics value FAIL \n"); + goto ERR; + } + + + tcDisp = (DisplayTc*)(g_list_first(authInfo->__tcDisplayPNGCharacteristics)->data); + + if(tcDisp->width == disp->width) { + printf("Authenticator tcDisplayPNGCharacteristics width PASS \n"); + } + else { + printf("Authenticator tcDisplayPNGCharacteristics width FAIL \n"); + } + + + if(tcDisp->height == disp->height) { + printf("Authenticator tcDisplayPNGCharacteristics height PASS \n"); + } + else { + printf("Authenticator tcDisplayPNGCharacteristics height FAIL \n"); + } + + + if(tcDisp->bitDepth == disp->bitDepth) { + printf("Authenticator tcDisplayPNGCharacteristics bitDepth PASS \n"); + } + else { + printf("Authenticator tcDisplayPNGCharacteristics bitDepth FAIL \n"); + } + + if(tcDisp->colorType == disp->colorType) { + printf("Authenticator tcDisplayPNGCharacteristics colorType PASS \n"); + } + else { + printf("Authenticator tcDisplayPNGCharacteristics colorType FAIL \n"); + } + + if(tcDisp->compression == disp->compression) { + printf("Authenticator tcDisplayPNGCharacteristics compression PASS \n"); + } + else { + printf("Authenticator tcDisplayPNGCharacteristics compression FAIL \n"); + } + + if(tcDisp->filter == disp->filter) { + printf("Authenticator tcDisplayPNGCharacteristics filter PASS \n"); + } + else { + printf("Authenticator tcDisplayPNGCharacteristics filter FAIL \n"); + } + + if(tcDisp->interlace == disp->interlace) { + printf("Authenticator tcDisplayPNGCharacteristics interlace PASS \n"); + } + else { + printf("Authenticator tcDisplayPNGCharacteristics interlace FAIL \n"); + } + + if (strcmp(tcDisp->plte, disp->plte) == 0) { + printf("plte PASS \n"); + } + else { + printf("plte FAIL \n"); + } + +ERR: + printf("==============testTLV GETINFO end============== \n"); + get_user_choice(); +} + +void +testTLV_RegisterReq(void) +{ + //int i = 0; + printf("==============testTLV REGISTER REQUEST start============== \n"); + + /*1) Create GetRegiterReq*/ + + RegisterReq *getRegReqInfo = NULL; + RegisterReq *getRegReq = (RegisterReq*)calloc(1, sizeof(RegisterReq)); + + getRegReq->authIdx = 0x04; + + getRegReq->appId = (char*)calloc(1, 512); + snprintf(getRegReq->appId, 511, "%s", "dummy_app_id"); + + const char *fc = "dummy_final_challenge"; + getRegReq->fch = ALLOC(Buffer); + getRegReq->fch->data = NALLOC(5000, uint8_t); + memcpy(getRegReq->fch->data, fc, strlen(fc)); + getRegReq->fch->len = strlen(fc); + + getRegReq->userName = (char*)calloc(1, 128); + snprintf(getRegReq->userName, 127, "%s", "dummy_user_name"); + + getRegReq->attType = 0x0025; + + const char *khA = "dummy_kh_access_token"; + getRegReq->khAccessToken = ALLOC(Buffer); + getRegReq->khAccessToken->data = NALLOC(5000, uint8_t); + memcpy(getRegReq->khAccessToken->data, khA, strlen(khA)); + getRegReq->khAccessToken->len = strlen(khA); + + getRegReq->userVToken = (char*)calloc(1, 128); + snprintf(getRegReq->userVToken, 127, "%s", "dummy_user_verify_token"); + + Buffer *getRegReqBuff = NULL; + TlvEncodable encodableReq(getRegReq); + + int ret = encodableReq.setEncoder(EID_UAFV1_REGISTER_REQ); + if (ret == 0) { + printf("setEncoder EID_UAFV1_REGISTER_REQ PASS \n"); + } + else { + printf("setEncoder EID_UAFV1_REGISTER_REQ FAIL \n"); + goto ERR; + } + + /*2) Create TLV encoded buffer*/ + getRegReqBuff = encodableReq.encode(); + if (getRegReqBuff != 0) { + printf("encode EID_UAFV1_REGISTER_REQ PASS \n"); + print_hex(getRegReqBuff); + } + else { + printf("encode EID_UAFV1_REGISTER_REQ FAIL \n"); + goto ERR; + } + + //===================================DECODE==============================// + + getRegReqInfo = encodableReq.decode(getRegReqBuff->data); + if (getRegReqInfo != NULL) { + printf("decode EID_UAFV1_REGISTER_REQ PASS \n"); + } + else { + printf("decode EID_UAFV1_REGISTER_REQ FAIL \n"); + goto ERR; + } + + //===================================DECODE==============================// + + //===================================COMPARE==============================// + + if(getRegReqInfo->authIdx == getRegReq->authIdx) { + printf("AUTHENTICATOR INDEX PASS \n"); + } + else { + printf("AUTHENTICATOR INDEX FAIL \n"); + goto ERR; + } + + if (strcmp(getRegReqInfo->appId, getRegReq->appId) == 0) { + printf("APPID PASS \n"); + } + else { + printf("APPID FAIL \n"); + goto ERR; + } + + + if (memcmp(getRegReqInfo->fch->data, getRegReq->fch->data, getRegReq->fch->len) == 0) { + printf("FINAL CHALLENGE PASS \n"); + } + else { + printf("FINAL CHALLENGE FAIL \n"); + goto ERR; + } + + if (strcmp(getRegReqInfo->userName, getRegReq->userName) == 0) { + printf("USERNAME PASS \n"); + } + else { + printf("USERNAME FAIL \n"); + goto ERR; + } + + if(getRegReqInfo->attType == getRegReq->attType) { + printf("ATTESTATION TYPE PASS \n"); + } + else { + printf("ATTESTATION TYPE FAIL \n"); + goto ERR; + } + + if (memcmp(getRegReqInfo->khAccessToken->data, getRegReq->khAccessToken->data, getRegReq->khAccessToken->len) == 0) { + printf("KEY HANDLE ACCESS TOKEN PASS \n"); + } + else { + printf("KEY HANDLE ACCESS TOKEN FAIL \n"); + goto ERR; + } + + if (strcmp(getRegReqInfo->userVToken, getRegReq->userVToken) == 0) { + printf("USER VERIFICATION TOKEN PASS \n"); + } + else { + printf("USER VERIFICATION TOKEN FAIL \n"); + goto ERR; + } + + //===================================COMPARE==============================// + + +ERR: + printf("==============testTLV REGISTER REQUEST end============== \n"); + get_user_choice(); +} + +void +testTLV_RegisterResp(void) +{ + printf("==============testTLV REGISTER RESPONSE start============== \n"); + + /*1) Create GetRegiterResp*/ + + RegisterResp *getRegRespInfo = NULL; + RegisterResp *getRegResp = (RegisterResp*)calloc(1, sizeof(RegisterResp)); + + getRegResp->statusCode = 0x0004; + + getRegResp->regAssertion = ALLOC(RegAssertion); + + getRegResp->regAssertion->krd = ALLOC(Krd); + + getRegResp->regAssertion->krd->aaid = (char*)calloc(1, 128); + snprintf(getRegResp->regAssertion->krd->aaid, 127, "%s", "ABCD#1234"); + + getRegResp->regAssertion->krd->assrtInfo = ALLOC(AssertionInfo); + getRegResp->regAssertion->krd->assrtInfo->authVersion = 0x0002; + getRegResp->regAssertion->krd->assrtInfo->authMode = 0x01; + getRegResp->regAssertion->krd->assrtInfo->signatureAlgAndEncoding = 0x0002; + getRegResp->regAssertion->krd->assrtInfo->publicKeyAlgAndEncoding = 0x0101; + + const char *fc = "dummy_final_challenge"; + getRegResp->regAssertion->krd->fch = ALLOC(Buffer); + getRegResp->regAssertion->krd->fch->data = NALLOC(5000, uint8_t); + memcpy(getRegResp->regAssertion->krd->fch->data, fc, strlen(fc)); + getRegResp->regAssertion->krd->fch->len = strlen(fc); + + getRegResp->regAssertion->krd->keyId = ALLOC(Buffer); + getRegResp->regAssertion->krd->keyId->data = NALLOC(128, uint8_t); + memcpy(getRegResp->regAssertion->krd->keyId->data, "dummy_key_id", 127); + getRegResp->regAssertion->krd->keyId->len = 12; + + getRegResp->regAssertion->krd->counter = ALLOC(Counters); + getRegResp->regAssertion->krd->counter->signCounter = 0x00000003; + getRegResp->regAssertion->krd->counter->regCounter = 0x00000007; + + getRegResp->regAssertion->krd->pubKey = ALLOC(Buffer); + getRegResp->regAssertion->krd->pubKey->data = NALLOC(128, uint8_t); + memcpy(getRegResp->regAssertion->krd->pubKey->data, "dummy_pub_key", 127); + getRegResp->regAssertion->krd->pubKey->len = 13; + + getRegResp->regAssertion->attFull = ALLOC(AttestationBasicFull); + getRegResp->regAssertion->attFull->sig = ALLOC(Buffer); + getRegResp->regAssertion->attFull->sig->data = NALLOC(128, uint8_t); + memcpy(getRegResp->regAssertion->attFull->sig->data, "dummy_sign", 127); + getRegResp->regAssertion->attFull->sig->len = 10; + + getRegResp->regAssertion->attFull->cert = ALLOC(Buffer); + getRegResp->regAssertion->attFull->cert->data = NALLOC(128, uint8_t); + memcpy(getRegResp->regAssertion->attFull->cert->data, "dummy_attest_cert", 127); + getRegResp->regAssertion->attFull->cert->len = 17; + + getRegResp->kh = ALLOC(Buffer); + getRegResp->kh->data = NALLOC(128, uint8_t); + memcpy(getRegResp->kh->data, "dummy_final_challenge", 127); + getRegResp->kh->len = 21; + + printf("==============testTLV REGISTER RESPONSE object formed============== \n"); + + + Buffer *getRegRespBuff = NULL; + TlvEncodable encodableRegResp(getRegResp); + + int ret = encodableRegResp.setEncoder(EID_UAFV1_REGISTER_RESP); + if (ret == 0) { + printf("setEncoder EID_UAFV1_REGISTER_RESP PASS \n"); + } + else { + printf("setEncoder EID_UAFV1_REGISTER_RESP FAIL \n"); + goto ERR; + } + + /*2) Create TLV encoded buffer*/ + getRegRespBuff = encodableRegResp.encode(); + if (getRegRespBuff != NULL) { + printf("encode EID_UAFV1_REGISTER_RESP PASS \n"); + print_hex(getRegRespBuff); + } + else { + printf("encode EID_UAFV1_REGISTER_RESP FAIL \n"); + goto ERR; + } + + //=======================================DECODE======================================// + + getRegRespInfo = encodableRegResp.decode(getRegRespBuff->data); + if (getRegRespInfo != NULL) { + printf("decode EID_UAFV1_REGISTER_RESP PASS \n"); + } + else { + printf("decode EID_UAFV1_REGISTER_RESP FAIL \n"); + goto ERR; + } + + //=======================================DECODE======================================// + + + + //=======================================COMPARE======================================// + + if (getRegRespInfo->statusCode == getRegResp->statusCode) { + printf("statusCode EID_UAFV1_REGISTER_RESP PASS \n"); + } + else { + printf("statusCode EID_UAFV1_REGISTER_RESP FAIL \n"); + goto ERR; + } + + if (strcmp(getRegRespInfo->regAssertion->krd->aaid, getRegResp->regAssertion->krd->aaid) == 0) { + printf("AAID EID_UAFV1_REGISTER_RESP PASS \n"); + } + else { + printf("AAID EID_UAFV1_REGISTER_RESP FAIL \n"); + goto ERR; + } + + if (getRegRespInfo->regAssertion->krd->assrtInfo->authVersion == getRegResp->regAssertion->krd->assrtInfo->authVersion) { + printf("AuthVersion EID_UAFV1_REGISTER_RESP PASS \n"); + } + else { + printf("AuthVersion EID_UAFV1_REGISTER_RESP FAIL \n"); + goto ERR; + } + + if (getRegRespInfo->regAssertion->krd->assrtInfo->authMode == getRegResp->regAssertion->krd->assrtInfo->authMode) { + printf("AuthMode EID_UAFV1_REGISTER_RESP PASS \n"); + } + else { + printf("AuthMode EID_UAFV1_REGISTER_RESP FAIL \n"); + goto ERR; + } + + if (getRegRespInfo->regAssertion->krd->assrtInfo->signatureAlgAndEncoding == getRegResp->regAssertion->krd->assrtInfo->signatureAlgAndEncoding) { + printf("signatureAlgAndEncoding EID_UAFV1_REGISTER_RESP PASS \n"); + } + else { + printf("signatureAlgAndEncoding EID_UAFV1_REGISTER_RESP FAIL \n"); + goto ERR; + } + + if (getRegRespInfo->regAssertion->krd->assrtInfo->publicKeyAlgAndEncoding == getRegResp->regAssertion->krd->assrtInfo->publicKeyAlgAndEncoding) { + printf("publicKeyAlgAndEncoding EID_UAFV1_REGISTER_RESP PASS \n"); + } + else { + printf("publicKeyAlgAndEncoding EID_UAFV1_REGISTER_RESP FAIL \n"); + goto ERR; + } + + if (memcmp(getRegRespInfo->regAssertion->krd->fch->data , getRegResp->regAssertion->krd->fch->data, + getRegResp->regAssertion->krd->fch->len) == 0) { + printf("fch EID_UAFV1_REGISTER_RESP PASS \n"); + } + else { + printf("fch EID_UAFV1_REGISTER_RESP FAIL \n"); + goto ERR; + } + + if (memcmp(getRegRespInfo->regAssertion->krd->keyId->data , + getRegResp->regAssertion->krd->keyId->data, getRegResp->regAssertion->krd->keyId->len) == 0) { + printf("keyId EID_UAFV1_REGISTER_RESP PASS \n"); + } + else { + printf("keyId EID_UAFV1_REGISTER_RESP FAIL \n"); + goto ERR; + } + + if (getRegRespInfo->regAssertion->krd->counter->regCounter == getRegResp->regAssertion->krd->counter->regCounter) { + printf("regCounter EID_UAFV1_REGISTER_RESP PASS \n"); + } + else { + printf("regCounter EID_UAFV1_REGISTER_RESP FAIL \n"); + goto ERR; + } + + if (getRegRespInfo->regAssertion->krd->counter->signCounter == getRegResp->regAssertion->krd->counter->signCounter) { + printf("signCounter EID_UAFV1_REGISTER_RESP PASS \n"); + } + else { + printf("signCounter EID_UAFV1_REGISTER_RESP FAIL \n"); + goto ERR; + } + + if (memcmp(getRegRespInfo->regAssertion->krd->pubKey->data , + getRegResp->regAssertion->krd->pubKey->data, getRegResp->regAssertion->krd->pubKey->len) == 0) { + printf("pubKey EID_UAFV1_REGISTER_RESP PASS \n"); + } + else { + printf("pubKey EID_UAFV1_REGISTER_RESP FAIL \n"); + goto ERR; + } + + if (memcmp(getRegRespInfo->regAssertion->attFull->sig->data , + getRegResp->regAssertion->attFull->sig->data, getRegResp->regAssertion->attFull->sig->len) == 0) { + printf("attFull->sig EID_UAFV1_REGISTER_RESP PASS \n"); + } + else { + printf("attFull->sig EID_UAFV1_REGISTER_RESP FAIL \n"); + goto ERR; + } + + if (memcmp(getRegRespInfo->regAssertion->attFull->cert->data , + getRegResp->regAssertion->attFull->cert->data, getRegResp->regAssertion->attFull->cert->len) == 0) { + printf("attFull->cert EID_UAFV1_REGISTER_RESP PASS \n"); + } + else { + printf("attFull->cert EID_UAFV1_REGISTER_RESP FAIL \n"); + goto ERR; + } + + if (memcmp(getRegRespInfo->kh->data , + getRegResp->kh->data, getRegResp->kh->len) == 0) { + printf("keyHandle EID_UAFV1_REGISTER_RESP PASS \n"); + } + else { + printf("keyHandle EID_UAFV1_REGISTER_RESP FAIL \n"); + goto ERR; + } + + + //=======================================COMPARE======================================// + +ERR: + printf("==============testTLV REGISTER RESPONSE end============== \n"); + get_user_choice(); +} + +void +testTLV_SignReq(void) +{ + printf("==============testTLV AUTHENTICATOR REQUEST start============== \n"); + + /*1) Create getAuthReqInfo*/ + + AuthenticateReq *getAuthReqInfo = NULL; + AuthenticateReq *getAuthReq = ALLOC(AuthenticateReq); + + getAuthReq->authIdx = 0x04; + + getAuthReq->appId = (char*)calloc(1, 512); + snprintf(getAuthReq->appId, 511, "%s", "dummy_app_id"); + + const char *fc = "dummy_final_challenge"; + getAuthReq->fch = ALLOC(Buffer); + getAuthReq->fch->data = NALLOC(5000, uint8_t); + memcpy(getAuthReq->fch->data, fc, strlen(fc)); + getAuthReq->fch->len = strlen(fc); + + getAuthReq->tc = (char*)calloc(1, 128); + snprintf(getAuthReq->tc, 127, "%s", "dummy_transaction_content"); + + const char *khA = "dummy_kh_access_token"; + getAuthReq->khATok = ALLOC(Buffer); + getAuthReq->khATok->data = NALLOC(5000, uint8_t); + memcpy(getAuthReq->khATok->data, khA, strlen(khA)); + getAuthReq->khATok->len = strlen(khA); + + getAuthReq->userVToken = (char*)calloc(1, 128); + snprintf(getAuthReq->userVToken, 127, "%s", "dummy_user_verify_token"); + + Buffer *getAuthReqInfoBuff = NULL; + TlvEncodable encodableSignReq(getAuthReq); + + int ret = encodableSignReq.setEncoder(EID_UAFV1_SIGN_REQ); + if (ret == 0) { + printf("setEncoder EID_UAFV1_SIGN_REQ PASS \n"); + } + else { + printf("setEncoder EID_UAFV1_SIGN_REQ FAIL \n"); + goto ERR; + } + + /*2) Create TLV encoded buffer*/ + getAuthReqInfoBuff = encodableSignReq.encode(); + if (getAuthReqInfoBuff != NULL) { + printf("encode EID_UAFV1_SIGN_REQ PASS \n"); + print_hex(getAuthReqInfoBuff); + } + else { + printf("encode EID_UAFV1_SIGN_REQ FAIL \n"); + goto ERR; + } + + //===============================DECODE=================================// + + getAuthReqInfo = encodableSignReq.decode(getAuthReqInfoBuff->data); + if (getAuthReqInfo != NULL) { + printf("decode EID_UAFV1_SIGN_REQ PASS \n"); + } + else { + printf("decode EID_UAFV1_SIGN_REQ FAIL \n"); + goto ERR; + } + + //===============================DECODE=================================// + + //===============================COMPARE=================================// + + if (getAuthReqInfo->authIdx == getAuthReq->authIdx) { + printf("authIdx EID_UAFV1_SIGN_REQ PASS \n"); + } + else { + printf("authIdx EID_UAFV1_SIGN_REQ FAIL \n"); + goto ERR; + } + + if (strcmp(getAuthReqInfo->appId, getAuthReq->appId) == 0) { + printf("appId EID_UAFV1_SIGN_REQ PASS \n"); + } + else { + printf("appId EID_UAFV1_SIGN_REQ FAIL \n"); + goto ERR; + } + + if (memcmp(getAuthReqInfo->fch->data, getAuthReq->fch->data, getAuthReq->fch->len) == 0) { + printf("fch EID_UAFV1_SIGN_REQ PASS \n"); + } + else { + printf("appId EID_UAFV1_SIGN_REQ FAIL \n"); + goto ERR; + } + + + if (strcmp(getAuthReqInfo->tc, getAuthReq->tc) == 0) { + printf("tc EID_UAFV1_SIGN_REQ PASS \n"); + } + else { + printf("tc EID_UAFV1_SIGN_REQ FAIL \n"); + goto ERR; + } + + + if (memcmp(getAuthReqInfo->khATok->data, getAuthReq->khATok->data, getAuthReq->khATok->len) == 0) { + printf("khATok EID_UAFV1_SIGN_REQ PASS \n"); + } + else { + printf("khATok EID_UAFV1_SIGN_REQ FAIL \n"); + goto ERR; + } + + + if (strcmp(getAuthReqInfo->userVToken, getAuthReq->userVToken) == 0) { + printf("userVToken EID_UAFV1_SIGN_REQ PASS \n"); + } + else { + printf("userVToken EID_UAFV1_SIGN_REQ FAIL \n"); + goto ERR; + } + + //===============================COMPARE=================================// + +ERR: + printf("==============testTLV AUTHENTICATOR REQUEST end============== \n"); + get_user_choice(); +} + +void +testTLV_SignResp(void) +{ + printf("==============testTLV AUTHENTICATOR RESPONSE start============== \n"); + + AuthenticateResp *getAuthRespInfo = NULL; + AuthenticateResp *getAuthResp = ALLOC(AuthenticateResp); + + getAuthResp->statusCode = 0x0004; + + getAuthResp->authAssertion = ALLOC(AuthAssertion); + + getAuthResp->authAssertion->sigData = ALLOC(SigData); + + getAuthResp->authAssertion->sigData->aaid = (char*)calloc(1, 128); + snprintf(getAuthResp->authAssertion->sigData->aaid, 127, "%s", "ABCD#1234"); + + getAuthResp->authAssertion->sigData->assrtInfo = ALLOC(AssertionInfo); + + getAuthResp->authAssertion->sigData->assrtInfo->authVersion = 0x0002; + getAuthResp->authAssertion->sigData->assrtInfo->authMode = 0x01; + getAuthResp->authAssertion->sigData->assrtInfo->signatureAlgAndEncoding = 0x0002; + + getAuthResp->authAssertion->sigData->authNonce = ALLOC(Buffer); + + getAuthResp->authAssertion->sigData->authNonce->len = 18; + getAuthResp->authAssertion->sigData->authNonce->data = NALLOC(128, uint8_t); + memcpy(getAuthResp->authAssertion->sigData->authNonce->data, "dummy_authnr_nonce", 127); + + const char *fc = "dummy_final_challenge"; + getAuthResp->authAssertion->sigData->fch = ALLOC(Buffer); + getAuthResp->authAssertion->sigData->fch->data = NALLOC(5000, uint8_t); + memcpy(getAuthResp->authAssertion->sigData->fch->data, fc, strlen(fc)); + getAuthResp->authAssertion->sigData->fch->len = strlen(fc); + + getAuthResp->authAssertion->sigData->tcHash = ALLOC(Buffer); + + getAuthResp->authAssertion->sigData->tcHash->len = 19; + getAuthResp->authAssertion->sigData->tcHash->data = NALLOC(128, uint8_t); + memcpy(getAuthResp->authAssertion->sigData->tcHash->data, "dummy_transact_hash", 127); + + getAuthResp->authAssertion->sigData->keyId = ALLOC(Buffer); + + getAuthResp->authAssertion->sigData->keyId->len = 12; + getAuthResp->authAssertion->sigData->keyId->data = NALLOC(128, uint8_t); + memcpy(getAuthResp->authAssertion->sigData->keyId->data, "dummy_key_id", 127); + + getAuthResp->authAssertion->sigData->counter = ALLOC(Counters); + + getAuthResp->authAssertion->sigData->counter->signCounter = 0x00000003; + + getAuthResp->authAssertion->sig = ALLOC(Buffer); + + getAuthResp->authAssertion->sig->len = 10; + getAuthResp->authAssertion->sig->data = NALLOC(128, uint8_t); + memcpy(getAuthResp->authAssertion->sig->data, "dummy_sign", 127); + + + Buffer *getAuthRespInfoBuff = NULL; + TlvEncodable encodableSignResp(getAuthResp); + + int ret = encodableSignResp.setEncoder(EID_UAFV1_SIGN_RESP); + if (ret == 0) { + printf("setEncoder EID_UAFV1_SIGN_RESP PASS \n"); + } + else { + printf("setEncoder EID_UAFV1_SIGN_RESP FAIL \n"); + goto ERR; + } + + /*2) Create TLV encoded buffer*/ + getAuthRespInfoBuff = encodableSignResp.encode(); + if (getAuthRespInfoBuff != NULL) { + printf("encode EID_UAFV1_SIGN_RESP PASS \n"); + print_hex(getAuthRespInfoBuff); + } + else { + printf("encode EID_UAFV1_SIGN_RESP FAIL \n"); + goto ERR; + } + + //=======================================DECODE=======================================// + + getAuthRespInfo = encodableSignResp.decode(getAuthRespInfoBuff->data); + if (getAuthRespInfo != NULL) { + printf("decode EID_UAFV1_SIGN_RESP PASS \n"); + } + else { + printf("decode EID_UAFV1_SIGN_RESP FAIL \n"); + goto ERR; + } + //=======================================DECODE=======================================// + + //=======================================COMPARE=======================================// + + if (getAuthRespInfo->statusCode == getAuthResp->statusCode) { + printf("statusCode EID_UAFV1_SIGN_RESP PASS \n"); + } + else { + printf("statusCode EID_UAFV1_SIGN_RESP FAIL \n"); + goto ERR; + } + + if (strcmp(getAuthRespInfo->authAssertion->sigData->aaid, getAuthResp->authAssertion->sigData->aaid) == 0) { + printf("aaid EID_UAFV1_SIGN_RESP PASS \n"); + } + else { + printf("aaid EID_UAFV1_SIGN_RESP FAIL \n"); + goto ERR; + } + + if (getAuthRespInfo->authAssertion->sigData->assrtInfo->authVersion == getAuthResp->authAssertion->sigData->assrtInfo->authVersion) { + printf("authVersion EID_UAFV1_SIGN_RESP PASS \n"); + } + else { + printf("authVersion EID_UAFV1_SIGN_RESP FAIL \n"); + goto ERR; + } + + if (getAuthRespInfo->authAssertion->sigData->assrtInfo->authMode == getAuthResp->authAssertion->sigData->assrtInfo->authMode) { + printf("authMode EID_UAFV1_SIGN_RESP PASS \n"); + } + else { + printf("authMode EID_UAFV1_SIGN_RESP FAIL \n"); + goto ERR; + } + + if (getAuthRespInfo->authAssertion->sigData->assrtInfo->signatureAlgAndEncoding == getAuthResp->authAssertion->sigData->assrtInfo->signatureAlgAndEncoding) { + printf("signatureAlgAndEncoding EID_UAFV1_SIGN_RESP PASS \n"); + } + else { + printf("signatureAlgAndEncoding EID_UAFV1_SIGN_RESP FAIL \n"); + goto ERR; + } + + if (memcmp(getAuthRespInfo->authAssertion->sigData->authNonce->data, + getAuthResp->authAssertion->sigData->authNonce->data, getAuthResp->authAssertion->sigData->authNonce->len) == 0) { + printf("authNonce EID_UAFV1_SIGN_RESP PASS \n"); + } + else { + printf("authNonce EID_UAFV1_SIGN_RESP FAIL \n"); + goto ERR; + } + + if (memcmp(getAuthRespInfo->authAssertion->sigData->fch->data, getAuthResp->authAssertion->sigData->fch->data, + getAuthResp->authAssertion->sigData->fch->len) == 0) { + printf("fch EID_UAFV1_SIGN_RESP PASS \n"); + } + else { + printf("fch EID_UAFV1_SIGN_RESP FAIL \n"); + goto ERR; + } + + if (memcmp(getAuthRespInfo->authAssertion->sigData->tcHash->data, + getAuthResp->authAssertion->sigData->tcHash->data, getAuthResp->authAssertion->sigData->tcHash->len) == 0) { + printf("tcHash EID_UAFV1_SIGN_RESP PASS \n"); + } + else { + printf("tcHash EID_UAFV1_SIGN_RESP FAIL \n"); + goto ERR; + } + + if (memcmp(getAuthRespInfo->authAssertion->sigData->keyId->data, + getAuthResp->authAssertion->sigData->keyId->data, getAuthResp->authAssertion->sigData->keyId->len) == 0) { + printf("keyId EID_UAFV1_SIGN_RESP PASS \n"); + } + else { + printf("keyId EID_UAFV1_SIGN_RESP FAIL \n"); + goto ERR; + } + + if (getAuthRespInfo->authAssertion->sigData->counter->signCounter == getAuthResp->authAssertion->sigData->counter->signCounter) { + printf("signCounter EID_UAFV1_SIGN_RESP PASS \n"); + } + else { + printf("signCounter EID_UAFV1_SIGN_RESP FAIL \n"); + goto ERR; + } + + if (memcmp(getAuthRespInfo->authAssertion->sig->data, + getAuthResp->authAssertion->sig->data, getAuthResp->authAssertion->sig->len) == 0) { + printf("signature EID_UAFV1_SIGN_RESP PASS \n"); + } + else { + printf("signature EID_UAFV1_SIGN_RESP FAIL \n"); + goto ERR; + } + + //=======================================COMPARE=======================================// + +ERR: + printf("==============testTLV AUTHENTICATOR RESPONSE end============== \n"); + get_user_choice(); +} + +void +testTLV_DeRegReq(void) +{ + printf("==============testTLV DEREGISTER REQUEST start============== \n"); + + DeregReq *getDeRegReqInfo = NULL; + DeregReq *getDeRegReq = ALLOC(DeregReq); + + getDeRegReq->authIdx = 0x01; + + getDeRegReq->appId = (char*)calloc(1, 512); + snprintf(getDeRegReq->appId, 511, "%s", "dummy_app_id"); + + getDeRegReq->keyId = (char*)calloc(1, 128); + snprintf(getDeRegReq->keyId, 127, "%s", "dummy_key_id"); + + const char *khA = "dummy_kh_access_token"; + getDeRegReq->khATok = ALLOC(Buffer); + getDeRegReq->khATok->data = NALLOC(5000, uint8_t); + memcpy(getDeRegReq->khATok->data, khA, strlen(khA)); + getDeRegReq->khATok->len = strlen(khA); + + Buffer *getDeRegReqInfoBuff = NULL; + TlvEncodable encodableDeRegReq(getDeRegReq); + + int ret = encodableDeRegReq.setEncoder(EID_UAFV1_DEREG_REQ); + if (ret == 0) { + printf("setEncoder EID_UAFV1_DEREG_REQ PASS \n"); + } + else { + printf("setEncoder EID_UAFV1_DEREG_REQ FAIL \n"); + goto ERR; + } + + /*2) Create TLV encoded buffer*/ + getDeRegReqInfoBuff = encodableDeRegReq.encode(); + if (getDeRegReqInfoBuff != NULL) { + printf("encode EID_UAFV1_DEREG_REQ PASS \n"); + print_hex(getDeRegReqInfoBuff); + } + else { + printf("encode EID_UAFV1_DEREG_REQ FAIL \n"); + goto ERR; + } + + //================================DECODE==================================// + + getDeRegReqInfo = encodableDeRegReq.decode(getDeRegReqInfoBuff->data); + if (getDeRegReqInfo != NULL) { + printf("decode EID_UAFV1_DEREG_REQ PASS \n"); + } + else { + printf("decode EID_UAFV1_DEREG_REQ FAIL \n"); + goto ERR; + } + //================================DECODE==================================// + + //================================COMPARE==================================// + + if (getDeRegReq->authIdx == getDeRegReqInfo->authIdx) { + printf("authIdx EID_UAFV1_DEREG_REQ PASS \n"); + } + else { + printf("authIdx EID_UAFV1_DEREG_REQ FAIL \n"); + goto ERR; + } + + if (strcmp(getDeRegReq->appId, getDeRegReqInfo->appId) == 0) { + printf("appId EID_UAFV1_DEREG_REQ PASS \n"); + } + else { + printf("appId EID_UAFV1_DEREG_REQ FAIL \n"); + goto ERR; + } + + if (strcmp(getDeRegReq->keyId, getDeRegReqInfo->keyId) == 0) { + printf("keyId EID_UAFV1_DEREG_REQ PASS \n"); + } + else { + printf("keyId EID_UAFV1_DEREG_REQ FAIL \n"); + goto ERR; + } + + if (memcmp(getDeRegReq->khATok->data, getDeRegReqInfo->khATok->data, getDeRegReqInfo->khATok->len) == 0) { + printf("khATok EID_UAFV1_DEREG_REQ PASS \n"); + } + else { + printf("khATok EID_UAFV1_DEREG_REQ FAIL \n"); + goto ERR; + } + //================================COMPARE==================================// + +ERR: + printf("==============testTLV DEREGISTER REQUEST end============== \n"); + get_user_choice(); + +} + +void +testTLV_DeRegResp(void) +{ + printf("==============testTLV DEREGISTER RESPONSE start============== \n"); + + DeregResp *getDeRegRespInfo = NULL; + DeregResp *getDeRegResp = ALLOC(DeregResp); + + getDeRegResp->statusCode = 0x0004; + + Buffer *getDeRegRespInfoBuff = NULL; + TlvEncodable encodableDeRegResp(getDeRegResp); + + int ret = encodableDeRegResp.setEncoder(EID_UAFV1_DEREG_RESP); + if (ret == 0) { + printf("setEncoder EID_UAFV1_DEREG_RESP PASS \n"); + } + else { + printf("setEncoder EID_UAFV1_DEREG_RESP FAIL \n"); + goto ERR; + } + + /*2) Create TLV encoded buffer*/ + getDeRegRespInfoBuff = encodableDeRegResp.encode(); + if (getDeRegRespInfoBuff != NULL) { + printf("encode EID_UAFV1_DEREG_RESP PASS \n"); + print_hex(getDeRegRespInfoBuff); + } + else { + printf("encode EID_UAFV1_DEREG_REQ FAIL \n"); + goto ERR; + } + + //===================================DECODE=====================================// + + getDeRegRespInfo = encodableDeRegResp.decode(getDeRegRespInfoBuff->data); + if (getDeRegRespInfo != NULL) { + printf("decode EID_UAFV1_DEREG_RESP PASS \n"); + } + else { + printf("decode EID_UAFV1_DEREG_REQ FAIL \n"); + goto ERR; + } + + //===================================DECODE=====================================// + + //===================================COMPARE=====================================// + + if (getDeRegRespInfo->statusCode == getDeRegResp->statusCode) { + printf("statusCode EID_UAFV1_DEREG_RESP PASS \n"); + } + else { + printf("statusCode EID_UAFV1_DEREG_REQ FAIL \n"); + goto ERR; + } + //===================================COMPARE=====================================// + +ERR: + printf("==============testTLV DEREGISTER RESPONSE end============== \n"); + get_user_choice(); +} + +void +testAuthnrManager(void) +{ + AuthenrManager* mgr = AuthenrManager::getInstance(); + if (mgr == NULL) { + printf("AuthenrManager::getInstance FAILED\n"); + return; + } + + printf("AuthenrManager::getInstance PASS\n"); + + std::vector* authList = mgr->getAllAuthenticators(); + if (authList == NULL) { + printf("AuthenrManager::getAllAuthenticators FAILED\n"); + return; + } + + std::vector::iterator it; + for (it = authList->begin(); it < authList->end(); it++) { + AuthenrStub *authStub = *it; + if (authStub == NULL) { + printf("authStub FAILED\n"); + } + else { + int ret = authStub->connect(); + if (ret != 0) { + printf("AuthenrStub::connect FAILED\n"); + } + else { + printf("AuthenrStub::connect PASS\n"); + } + } + } + + get_user_choice(); +} + +void +testAuthDb(AsmStorage* obj) +{ + printf("Enter Auth Test Function \n"); + //SEARCH DATA + IStorageParcel *parcel = new AuthStorageParcel(); + + parcel->setInt(INT_PROP_AUTH_ID, -1); + parcel->setString(STR_PROP_AUTH_NAME, "face_recog"); + + std::vector *searchData = obj->searchData(parcel); + unsigned int records_no = searchData->size(); + printf("No of records found : %d\n", records_no); + + //DELETE DATA + int ret = obj->deleteData(parcel); + if(ret == 0) { + printf("Records successfully deleted\n"); + } + else if(ret == 1) { + printf("Records not deleted/ does not exists\n"); + } +} + +void searchByKeyId(AsmStorage* obj, const char *keyId) +{ + IStorageParcel *parcel = new AsmStorageParcel(); + + parcel->setInt(INT_PROP_ID, -1); + parcel->setInt(INT_PROP_AUTH_IDX, -1); + + parcel->setString(STR_PROP_CALLER_ID, ""); + parcel->setString(STR_PROP_APP_ID, ""); + parcel->setString(STR_PROP_KEY_HANDLE, ""); + parcel->setString(STR_PROP_KEY_ID, keyId); + + std::vector *searchData = obj->searchData(parcel); + unsigned int records_no = searchData->size(); + printf("No of records found : %d\n", records_no); +} + +void +searchByKeyHandle(AsmStorage* obj, const char *keyHandle) +{ + IStorageParcel *parcel = new AsmStorageParcel(); + + parcel->setInt(INT_PROP_ID, -1); + parcel->setInt(INT_PROP_AUTH_IDX, -1); + + parcel->setString(STR_PROP_CALLER_ID, ""); + parcel->setString(STR_PROP_APP_ID, ""); + parcel->setString(STR_PROP_KEY_HANDLE, keyHandle); + parcel->setString(STR_PROP_KEY_ID, ""); + + std::vector *searchData = obj->searchData(parcel); + unsigned int records_no = searchData->size(); + printf("No of records found : %d\n", records_no); +} + +void deleteByKeyId(AsmStorage* obj, const char *keyId) +{ + IStorageParcel *parcel = new AsmStorageParcel(); + + parcel->setInt(INT_PROP_ID, -1); + parcel->setInt(INT_PROP_AUTH_IDX, -1); + + parcel->setString(STR_PROP_CALLER_ID, ""); + parcel->setString(STR_PROP_APP_ID, ""); + parcel->setString(STR_PROP_KEY_HANDLE, ""); + parcel->setString(STR_PROP_KEY_ID, keyId); + + int ret = obj->deleteData(parcel); + if(ret == 0) { + printf("Records successfully deleted\n"); + } + else if(ret == 1) { + printf("Records not deleted/ does not exists\n"); + } +} + +void +testAsmDb(AsmStorage* obj) +{ + printf("Enter Asm Test Function \n"); + //SEARCH DATA + const char *keyId = NULL; + const char *keyHandle = NULL; + + keyId = "45678"; + searchByKeyId(obj, keyId); //positive + keyHandle = "fido"; + searchByKeyHandle(obj, keyHandle); //positive + keyId = "09876"; + searchByKeyId(obj, keyId); //negative + keyHandle = "asm"; + searchByKeyHandle(obj, keyHandle); //negative + + //DELETE DATA + keyId = "45678"; + deleteByKeyId(obj, keyId); +} + +void +testDb(void) +{ + //INITIALIZE DATABASES + AsmStorage* obj = AsmStorage::getInstance(); + if (obj == NULL) { + printf("AsmStorage::getInstance FAILED\n"); + return; + } + + printf("AsmStorage::getInstance PASS\n"); + printf("Asm and Auth databases initialized \n"); + + //INSERT DATA INTO BOTH AUTH AND ASM DATABASE + std::vector bulkData; + + IStorageParcel *parcel = new AsmStorageParcel(); + + parcel->setInt(INT_PROP_AUTH_IDX, 2); + + parcel->setString(STR_PROP_CALLER_ID, "12345"); + parcel->setString(STR_PROP_APP_ID, "98765"); + parcel->setString(STR_PROP_KEY_HANDLE, "fido"); + parcel->setString(STR_PROP_KEY_ID, "45678"); + + bulkData.push_back(parcel); + + + + IStorageParcel *parcel1 = new AuthStorageParcel(); + + parcel1->setInt(INT_PROP_AUTH_ID, 1); + + parcel1->setString(STR_PROP_AUTH_NAME, "face_recog"); + + bulkData.push_back(parcel1); + + int ret = obj->insertBulkData(&bulkData); + if(ret == 0) { + printf("Records successfully inserted\n"); + } + else if(ret == 1) { + printf("Records not inserted/ already exists\n"); + } + + //SEARCH AND DELETE TESTING FOR ASM AND AUTH DATABASE + testAsmDb(obj); + testAuthDb(obj); + + get_user_choice(); +} + +AsmRequest* +testJsonReqCommon(const char *json, const char *expReqType) +{ + AsmVersion *ver = NULL; + + AsmRequest *asmReq = JsonUtil::parseAsmRequestJson(json); + if (asmReq == NULL) { + printf("JsonUtil::parseAsmRequestJson FAILED\n"); + goto CATCH; + } + + printf("JsonUtil::parseAsmRequestJson PASSED \n"); + + ver = asmReq->getAsmVersion(); + if (ver == NULL) { + printf("getAsmVersion FAILED\n"); + goto CATCH; + } + + printf("getAsmVersion PASSED \n"); + + if (ver->getMajor() == 1) { + printf("getMajor PASSED \n"); + } + else { + printf("getMajor FAILED \n"); + } + + if (ver->getMinor() == 0) { + printf("getMinor PASSED \n"); + } + else { + printf("getMinor FAILED \n"); + } + + if (asmReq->getRequesttype() == expReqType) { + printf("getRequesttype PASSED \n"); + } + else { + printf("getRequesttype FAILED \n"); + } + + return asmReq; + +CATCH: + delete asmReq; + return NULL; +} + +void +testJsonGetInfoReq(void) +{ + printf("GetInfo Request \n"); + + const char *getInfoJson = "{\"asmVersion\":{\"major\":1,\"minor\":0},\"requestType\":\"GetInfo\"}"; + + AsmRequest *asmReqGetInfo = testJsonReqCommon(getInfoJson, "GetInfo"); + + delete asmReqGetInfo; +} + +void +testJsonRegReq(void) +{ + printf("Registration Request \n"); + + const char *regReqJson = "{\"args\":{\"appID\":\"https://qa-egypt.noknoktest.com:443/UAFSampleProxy/uaf/facets.uaf\",\"username\":\"user1\",\"finalChallenge\":\"eyJhcHBJRCI6Imh0dHBzOi8vcWEtZWd5cHQubm9rbm9rdGVzdC5jb206NDQzL1VBRlNhbXBsZVByb3h5L3VhZi9mYWNldHMudWFmIiwiY2hhbGxlbmdlIjoidVlCdUdRZjdyLUxORDE2UTBHVXBQUmkxMTJVakN0Y3ltM2F3am0tTW1tSSIsImNoYW5uZWxCaW5kaW5nIjp7fSwiZmFjZXRJRCI6ImNvbS5ub2tub2suYW5kcm9pZC5zYW1wbGVhcHAifQ\",\"attestationType\":15879},\"asmVersion\":{\"major\":1,\"minor\":0},\"authenticatorIndex\":1,\"requestType\":\"Register\"}"; + + AsmRegRequest *regArg = NULL; + + AsmRequest *asmReqReg = testJsonReqCommon(regReqJson, "Register"); + if (asmReqReg == NULL) { + goto CATCH; + } + + if (asmReqReg->getAuthIndex() == 1) { + printf("getAuthIndex PASSED \n"); + } + else { + printf("getAuthIndex FAILED \n"); + } + + if (asmReqReg->getArgs() == NULL) { + printf("getArgs FAILED \n"); + goto CATCH; + } + + printf("getArgs PASSED \n"); + + regArg = static_cast(asmReqReg->getArgs()); + + if (regArg->getAppId() == "https://qa-egypt.noknoktest.com:443/UAFSampleProxy/uaf/facets.uaf") { + printf("getAppId PASSED \n"); + } + else { + printf("getAppId FAILED \n"); + } + + if (regArg->getUserName() == "user1") { + printf("getUserName PASSED \n"); + } + else { + printf("getUserName FAILED \n"); + } + + if (regArg->getFinalChallenge() == "eyJhcHBJRCI6Imh0dHBzOi8vcWEtZWd5cHQubm9rbm9rdGVzdC5jb206NDQzL1VBRlNhbXBsZVByb3h5L3VhZi9mYWNldHMudWFmIiwiY2hhbGxlbmdlIjoidVlCdUdRZjdyLUxORDE2UTBHVXBQUmkxMTJVakN0Y3ltM2F3am0tTW1tSSIsImNoYW5uZWxCaW5kaW5nIjp7fSwiZmFjZXRJRCI6ImNvbS5ub2tub2suYW5kcm9pZC5zYW1wbGVhcHAifQ") { + printf("getFinalChallenge PASSED \n"); + } + else { + printf("getFinalChallenge FAILED \n"); + } + + if (regArg->getAttestationType() == 15879) { + printf("getAttestationType PASSED \n"); + } + else { + printf("getAttestationType FAILED \n"); + } + +CATCH: + delete asmReqReg; +} + +void +testJsonAuthReq(void) +{ + printf("Authenticate Request \n"); + + const char *authReqJson = "{\"args\":{\"appID\":\"https://qa-egypt.noknoktest.com:443/UAFSampleProxy/uaf/facets.uaf\",\"finalChallenge\":\"eyJhcHBJRCI6Imh0dHBzOi8vcWEtZWd5cHQubm9rbm9rdGVzdC5jb206NDQzL1VBRlNhbXBsZVByb3h5L3VhZi9mYWNldHMudWFmIiwiY2hhbGxlbmdlIjoiM3otaVN2TndENFFLd01kV1NCS0hGT2hNNDN4M1dGOHI1eU9yd0pmVzljSSIsImNoYW5uZWxCaW5kaW5nIjp7fSwiZmFjZXRJRCI6ImNvbS5ub2tub2suYW5kcm9pZC5zYW1wbGVhcHAifQ\"},\"asmVersion\":{\"major\":1,\"minor\":0},\"authenticatorIndex\":1,\"requestType\":\"Authenticate\"}"; + + AsmAuthRequest *authArg = NULL; + + AsmRequest *asmReqAuth = testJsonReqCommon(authReqJson, "Authenticate"); + if (asmReqAuth == NULL) { + goto CATCH; + } + + if (asmReqAuth->getAuthIndex() == 1) { + printf("getAuthIndex PASSED \n"); + } + else { + printf("getAuthIndex FAILED \n"); + } + + if (asmReqAuth->getArgs() == NULL) { + printf("getArgs FAILED \n"); + goto CATCH; + } + + printf("getArgs PASSED \n"); + + authArg = static_cast(asmReqAuth->getArgs()); + + if (authArg->getAppId() == "https://qa-egypt.noknoktest.com:443/UAFSampleProxy/uaf/facets.uaf") { + printf("getAppId PASSED \n"); + } + else { + printf("getAppId FAILED \n"); + } + + if (authArg->getFCH() == "eyJhcHBJRCI6Imh0dHBzOi8vcWEtZWd5cHQubm9rbm9rdGVzdC5jb206NDQzL1VBRlNhbXBsZVByb3h5L3VhZi9mYWNldHMudWFmIiwiY2hhbGxlbmdlIjoiM3otaVN2TndENFFLd01kV1NCS0hGT2hNNDN4M1dGOHI1eU9yd0pmVzljSSIsImNoYW5uZWxCaW5kaW5nIjp7fSwiZmFjZXRJRCI6ImNvbS5ub2tub2suYW5kcm9pZC5zYW1wbGVhcHAifQ") { + printf("getFCH PASSED \n"); + } + else { + printf("getFCH FAILED \n"); + } + +CATCH: + delete asmReqAuth; +} + +void +testJsonDeRegReq(void) +{ + printf("Deregister Request \n"); + + const char *deregReqJson = "{\"args\":{\"appID\":\"https://qa-egypt.noknoktest.com:443/UAFSampleProxy/uaf/facets.uaf\",\"keyID\":\"1eVp7JIQlwm6YF0YEmGZdNCA27qZoIcZGC0Uaw71bR8\"},\"asmVersion\":{\"major\":1,\"minor\":0},\"authenticatorIndex\":1,\"requestType\":\"Deregister\"}"; + + AsmDeregRequest *deregArg = NULL; + + AsmRequest *asmReqDereg = testJsonReqCommon(deregReqJson, "Deregister"); + if (asmReqDereg == NULL) { + goto CATCH; + } + + if (asmReqDereg->getAuthIndex() == 1) { + printf("getAuthIndex PASSED \n"); + } + else { + printf("getAuthIndex FAILED \n"); + } + + if (asmReqDereg->getArgs() == NULL) { + printf("getArgs FAILED \n"); + goto CATCH; + } + + printf("getArgs PASSED \n"); + + deregArg = static_cast(asmReqDereg->getArgs()); + + if (deregArg->getAppId() == "https://qa-egypt.noknoktest.com:443/UAFSampleProxy/uaf/facets.uaf") { + printf("getAppId PASSED \n"); + } + else { + printf("getAppId FAILED \n"); + } + + if (deregArg->getKeyId() == "1eVp7JIQlwm6YF0YEmGZdNCA27qZoIcZGC0Uaw71bR8") { + printf("getKeyId PASSED \n"); + } + else { + printf("getKeyId FAILED \n"); + } + +CATCH: + delete asmReqDereg; +} + +void +testJsonGetRegsReq(void) +{ + printf("GetRegistrations Request \n"); + + const char *getRegsJson = "{\"asmVersion\":{\"major\":1,\"minor\":0},\"authenticatorIndex\":1,\"requestType\":\"GetRegistrations\"}"; + + AsmRequest *asmReqGetRegs = testJsonReqCommon(getRegsJson, "GetRegistrations"); + + delete asmReqGetRegs; +} + +#define GET_INFO_RESP_NEG "{\"statusCode\":1}" +void +testJsonGetInfoResp(void) +{ + char *getInfoNegResp = JsonUtil::composeAsmGetInfoResponse(1, NULL); + if (strcmp(getInfoNegResp, GET_INFO_RESP_NEG) == 0) + printf("Negative test for composeAsmGetInfoResponse PASSED \n"); + else + printf("Negative test for composeAsmGetInfoResponse FAILED \n"); + + /*TODO: Rest of the test cases will be added once TLV is up for all auth DS*/ +} + +void +testJson(void) +{ + testJsonGetInfoReq(); + testJsonRegReq(); + testJsonAuthReq(); + testJsonDeRegReq(); + testJsonGetRegsReq(); + testJsonGetInfoResp(); + + get_user_choice(); +} + +void +testOpGetReg() +{ + printf("==============testOp GETREGS start============== \n"); + + const char *asmReqJson = "{\"asmVersion\":{\"major\":1,\"minor\":0},\"authenticatorIndex\":1,\"requestType\":\"GetRegistrations\"}"; + + const std::string callerId = "caller_id"; + + AsmRequest *req = JsonUtil::parseAsmRequestJson(asmReqJson); + + req->setCallerId(callerId); + + AsmOp *operation = AsmOpFactory::createOperation(req); + + + char *asmResp = operation->execute(); + + printf("ASM GETREGS RESPOMSE : [%s]\n\n", asmResp); + + printf("==============testOp GETREGS end============== \n\n\n"); +} + +char * +compose_asm_dereg_request(char *appId, char *keyId, int authIdx) +{ + + JsonBuilder *builder = json_builder_new(); + + json_builder_begin_object(builder); + + json_builder_set_member_name(builder, "args"); + json_builder_begin_object(builder); + + json_builder_set_member_name(builder, "appID"); + json_builder_add_string_value(builder, appId); + + json_builder_set_member_name(builder, "keyID"); + json_builder_add_string_value(builder, keyId); + + json_builder_end_object(builder); + + json_builder_set_member_name(builder, "asmVersion"); + json_builder_begin_object(builder); + + json_builder_set_member_name(builder, "major"); + json_builder_add_int_value(builder, 1); + + json_builder_set_member_name(builder, "minor"); + json_builder_add_int_value(builder, 0); + + json_builder_end_object(builder); + + json_builder_set_member_name(builder, "authenticatorIndex"); + json_builder_add_int_value(builder, authIdx); + + json_builder_set_member_name(builder, "requestType"); + json_builder_add_string_value(builder, "Deregister"); + + json_builder_end_object(builder); + + JsonNode *root_builder = json_builder_get_root(builder); + + JsonGenerator *gen = json_generator_new(); + json_generator_set_root(gen, root_builder); + + json_node_free(root_builder); + g_object_unref(builder); + + gsize len = 0; + char *json = json_generator_to_data(gen, &len); + if (json != NULL) { + printf("compose_asm_dereg_request success\n"); + + if (gen != NULL) + g_object_unref(gen); + + printf("asmDeRegReqJson = %s\n", json); + return json; + } + + printf("compose_asm_dereg_request failed\n"); + g_object_unref(gen); + + return NULL; +} + +int +testOpDeReg(Buffer *keyId) +{ + printf("==============testOp DEREGISTER start============== \n"); + + char *kId = (char*)calloc(1, 5000); + memcpy(kId, keyId->data, keyId->len); + + char *appId = (char*)calloc(1, 5000);; + strcpy(appId, "https://qa-egypt.noknoktest.com:443/UAFSampleProxy/uaf/facets.uaf"); + + const char *asmReqJson = compose_asm_dereg_request(appId, kId, 1); + + if(asmReqJson != NULL) { + const std::string callerId = "caller_id"; + + AsmRequest *req = JsonUtil::parseAsmRequestJson(asmReqJson); + + req->setCallerId(callerId); + + AsmOp *operation = AsmOpFactory::createOperation(req); + + + char *asmResp = operation->execute(); + + printf("\n\nASM DEREGISTER RESPONSE : [%s]\n\n", asmResp); + } + else { + printf("ERROR : ASM DEREGISTER REQ JSON IS NULL"); + return 1; + } + + printf("==============testOp DEREGISTER end============== \n\n\n"); + return 0; +} + +char * +compose_asm_auth_req_json(char *appId, char *keyId, char *fc, int authIdx) +{ + JsonBuilder *builder = json_builder_new(); + + json_builder_begin_object(builder); + + json_builder_set_member_name(builder, "args"); + json_builder_begin_object(builder); + + json_builder_set_member_name(builder, "appID"); + json_builder_add_string_value(builder, appId); + + json_builder_set_member_name(builder, "keyIDs"); + json_builder_begin_array(builder); + json_builder_add_string_value(builder, keyId); + json_builder_end_array(builder); + + json_builder_set_member_name(builder, "finalChallenge"); + json_builder_add_string_value(builder, fc); + + json_builder_end_object(builder); + + json_builder_set_member_name(builder, "asmVersion"); + json_builder_begin_object(builder); + + json_builder_set_member_name(builder, "major"); + json_builder_add_int_value(builder, 1); + + json_builder_set_member_name(builder, "minor"); + json_builder_add_int_value(builder, 0); + + json_builder_end_object(builder); + + json_builder_set_member_name(builder, "authenticatorIndex"); + json_builder_add_int_value(builder, authIdx); + + json_builder_set_member_name(builder, "requestType"); + json_builder_add_string_value(builder, "Authenticate"); + + json_builder_end_object(builder); + + JsonNode *root_builder = json_builder_get_root(builder); + + JsonGenerator *gen = json_generator_new(); + json_generator_set_root(gen, root_builder); + + json_node_free(root_builder); + g_object_unref(builder); + + gsize len = 0; + char *json = json_generator_to_data(gen, &len); + if (json != NULL) { + printf("compose_asm_auth_req_json success\n"); + + if (gen != NULL) + g_object_unref(gen); + + printf("asmAuthReqJson = %s\n", json); + return json; + } + + printf("compose_asm_auth_req_json failed\n"); + g_object_unref(gen); + + return NULL; +} + +int +testOpAuth(Buffer *keyId) +{ + printf("==============testOp AUTHENTICATE start============== \n"); + + char *kId = (char*)calloc(1, 5000); + memcpy(kId, keyId->data, keyId->len); + + char *appId = (char*)calloc(1, 5000);; + strcpy(appId, "https://qa-egypt.noknoktest.com:443/UAFSampleProxy/uaf/facets.uaf"); + + char *fc = (char*)calloc(1, 5000); + strcpy(fc,"eyJhcHBJRCI6Imh0dHBzOi8vcWEtZWd5cHQubm9rbm9rdGVzdC5jb206NDQzL1VBRlNhbXBsZVByb3h5L3VhZi9mYWNldHMudWFmIiwiY2hhbGxlbmdlIjoiM3otaVN2TndENFFLd01kV1NCS0hGT2hNNDN4M1dGOHI1eU9yd0pmVzljSSIsImNoYW5uZWxCaW5kaW5nIjp7fSwiZmFjZXRJRCI6ImNvbS5ub2tub2suYW5kcm9pZC5zYW1wbGVhcHAifQ"); + + const char *asmReqJson = compose_asm_auth_req_json(appId, kId, fc, 1); + + if(asmReqJson != NULL) { + const std::string callerId = "caller_id"; + + AsmRequest *req = JsonUtil::parseAsmRequestJson(asmReqJson); + + req->setCallerId(callerId); + + AsmOp *operation = AsmOpFactory::createOperation(req); + + + char *asmResp = operation->execute(); + + printf("\n\nASM AUTHENTICATE RESPONSE : [%s]\n\n", asmResp); + } + else { + printf("ERROR : ASM AUTH REQ JSON IS NULL"); + return 1; + } + + printf("==============testOp AUTHENTICATE end============== \n\n\n"); + return 0; +} + +static int +__parse_asm_reg_response_json(const unsigned char *asmRegResp, char **regAssrtn) +{ + printf("Asm Register Response len=[%d] \n", strlen((char*)asmRegResp)); + + /*TODO*/ + JsonParser *parser = json_parser_new(); + + GError *err = NULL; + json_parser_load_from_data(parser, (char*)asmRegResp, -1, &err); + if (err != NULL) + { + _ERR("Parsing failed=[%s]", err->message); + return -1; + } + + JsonNode *root = json_parser_get_root(parser); + + JsonObject *root_obj = json_node_get_object(root); + JsonObject *resDataObj = NULL; + + resDataObj = json_object_get_object_member(root_obj, "responseData"); + + if(resDataObj != NULL) + { + const char *regAssrtn_temp = json_object_get_string_member(resDataObj, "assertion"); + + if (regAssrtn_temp != NULL) + { + *regAssrtn = strdup(regAssrtn_temp); + } + } + + if (parser != NULL) + g_object_unref(parser); + + return 0; +} + +Buffer* +testOpReg() +{ + printf("==============testOp REGISTER start============== \n"); + + const char *asmReqJson = "{\"args\":{\"appID\":\"https://qa-egypt.noknoktest.com:443/UAFSampleProxy/uaf/facets.uaf\",\"username\":\"user1\",\"finalChallenge\":\"eyJhcHBJRCI6Imh0dHBzOi8vcWEtZWd5cHQubm9rbm9rdGVzdC5jb206NDQzL1VBRlNhbXBsZVByb3h5L3VhZi9mYWNldHMudWFmIiwiY2hhbGxlbmdlIjoidVlCdUdRZjdyLUxORDE2UTBHVXBQUmkxMTJVakN0Y3ltM2F3am0tTW1tSSIsImNoYW5uZWxCaW5kaW5nIjp7fSwiZmFjZXRJRCI6ImNvbS5ub2tub2suYW5kcm9pZC5zYW1wbGVhcHAifQ\",\"attestationType\":15879},\"asmVersion\":{\"major\":1,\"minor\":0},\"authenticatorIndex\":1,\"requestType\":\"Register\"}"; + + const std::string callerId = "caller_id"; + + AsmRequest *req = JsonUtil::parseAsmRequestJson(asmReqJson); + + req->setCallerId(callerId); + + AsmOp *operation = AsmOpFactory::createOperation(req); + + + char *asmResp = operation->execute(); + printf("\n\nASM REGISTER RESPONSE : [%s]\n\n", asmResp); + + char *regAssrtn = NULL; + __parse_asm_reg_response_json((unsigned char*)asmResp, ®Assrtn); + + printf("\n\nASM REGISTER ASSERTION : [%s]\n\n", regAssrtn); + + int inputSz = strlen(regAssrtn); + unsigned char* regAssrtn_b64_dec = NULL; + + regAssrtn_b64_dec = (unsigned char*)calloc(1, inputSz*1.5); + int outputSz = 0; + + if (0 != AsmCrypto::genB64Decodes((unsigned char*)regAssrtn, + inputSz, + regAssrtn_b64_dec, + &outputSz)) + { + printf("Failed to decode base64.\n"); + free(regAssrtn_b64_dec); + printf("==============testOp REGISTER end============== \n\n\n"); + return NULL; + } + + Buffer *testBuff = ALLOC(Buffer); + testBuff->data = NALLOC(5000, uint8_t); + memcpy(testBuff->data, regAssrtn_b64_dec, outputSz); + testBuff->len = outputSz; + printf("b64 Decoded Register Assertion : \n"); + print_hex(testBuff); + + RegAssertion *getRegAssrtnInfo = NULL; + TlvEncodable encodableRegAssrtn; + + int ret = encodableRegAssrtn.setEncoder(EID_UAFV1_REG_ASSERTION_RESP); + if (ret == 0) { + printf("setEncoder EID_UAFV1_REG_ASSERTION_RESP PASS \n"); + } + else { + printf("setEncoder EID_UAFV1_REG_ASSERTION_RESP FAIL \n"); + return NULL; + } + + getRegAssrtnInfo = encodableRegAssrtn.decode(testBuff->data); + if (getRegAssrtnInfo != NULL) { + printf("decode EID_UAFV1_REG_ASSERTION_RESP PASS \n"); + } + else { + printf("decode EID_UAFV1_REG_ASSERTION_RESP FAIL \n"); + return NULL; + } + + printf("KEY ID obtained is [%s] \n", getRegAssrtnInfo->krd->keyId->data); + printf("KEY ID(hex) obtained is : \n"); + print_hex(getRegAssrtnInfo->krd->keyId); + + printf("==============testOp REGISTER end============== \n\n\n"); + return getRegAssrtnInfo->krd->keyId; +} + +void + +testOpGetInfo(void) +{ + printf("==============testOp GETINFO start============== \n"); + + const char *asmReqJson = "{\"asmVersion\":{\"major\":1,\"minor\":0},\"requestType\":\"GetInfo\"}"; + + const std::string callerId = "caller_id"; + + AsmRequest *req = JsonUtil::parseAsmRequestJson(asmReqJson); + + req->setCallerId(callerId); + + AsmOp *operation = AsmOpFactory::createOperation(req); + + + char *asmResp = operation->execute(); + + printf("ASM GETINFO RESPOMSE : [%s]\n\n", asmResp); + + printf("==============testOp GETINFO end============== \n\n\n"); + +} + +void +testSilentAuth(void) +{ + int ret = 0; + + testOpGetInfo(); + + Buffer *keyId = NULL; + keyId = testOpReg(); + + if(keyId != NULL) { + ret = testOpAuth(keyId); + } + else { + printf("Key Id obtaibed from Registeration process is NULL\n"); + } + + if(ret == 0) { + printf("User Authenticated :: SUCCESS\n"); + testOpDeReg(keyId); + } + else { + printf("User Authenticated :: FAIL\n"); + } + + get_user_choice(); +} + +void +testSilentAuthGetRegs(void) +{ + testOpGetReg(); + get_user_choice(); +} + +void +get_user_choice(void) +{ + int sel_opt = 0; + const int options[13] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; + const char *names[13] = { "AuthenticatorManager Test", + "TLV Test - GETINFO", + "TLV Test - REGISTER_REQ", + "TLV Test - REGISTER_RESP", + "TLV Test - SIGN_REQ", + "TLV Test - SIGN_RESP", + "TLV Test - DEREG_REQ", + "TLV Test - DEREG_RESP", + "Database Testing", + "JSON Test", + "Silent Auth Test(GetInfo, Register, Authenticate)", + "Silent Auth GetRegistrations", + "Exit"}; + + sel_opt = show_menu("Select action:", options, names, 13); + switch (sel_opt) { + case 1: + testAuthnrManager(); + break; + case 2: + testTLV_getInfo(); + break; + case 3: + testTLV_RegisterReq(); + break; + case 4: + testTLV_RegisterResp(); + break; + case 5: + testTLV_SignReq(); + break; + case 6: + testTLV_SignResp(); + break; + case 7: + testTLV_DeRegReq(); + break; + case 8: + testTLV_DeRegResp(); + break; + case 9: + testDb(); + break; + case 10: + testJson(); + case 11: + testSilentAuth(); + case 12: + testSilentAuthGetRegs(); + default: + exit(1); + } +} + +int +main(void) +{ + GMainLoop *mainloop = NULL; + + mainloop = g_main_loop_new(NULL, FALSE); + + get_user_choice(); + + g_main_loop_run(mainloop); + + return 0; +} diff --git a/test/shell_tc/fido_asm_shell_tc_util.cpp b/test/shell_tc/fido_asm_shell_tc_util.cpp new file mode 100644 index 0000000..803cde9 --- /dev/null +++ b/test/shell_tc/fido_asm_shell_tc_util.cpp @@ -0,0 +1,110 @@ +/** + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "fido_asm_shell_tc_util.h" + +#include +#include + +bool +show_confirm_dialog(const char *title) +{ + const int options[2] = {1, 2}; + const char *names[2] = { "No", "Yes" }; + + bool answer = false; + + int sel = -1; + while (sel == -1) { + sel = show_menu(title, options, names, 2); + switch (sel) { + case 1: + answer = false; + break; + case 2: + answer = true; + break; + default: + sel = -1; + printf("ERROR: Incorrect input.\n"); + continue; + } + } + + return answer; +} + +int +show_menu( + const char *title, + const int *options, + const char **names, + int number_of_option) +{ + if (NULL == title || NULL == options || NULL == names || 0 >= number_of_option) + return -1; + + int number_size = 1; + + int tn_counter = number_of_option; + while (tn_counter /= 10) + ++number_size; + + int max_len = strlen(title) - number_size - 2; + + int i = 0; + for (i = 0; i < number_of_option; ++i) { + const int temp_len = strlen(names[i]); + if (max_len < temp_len) + max_len = temp_len; + } + + const int full_size = number_size + 2 + max_len; + + printf("\n**"); + for (i = 0; i < full_size; ++i) + printf("*"); + printf("**\n"); + + printf("* %-*s *\n", full_size, title); + + printf("*-"); + for (i = 0; i < full_size; ++i) + printf("-"); + printf("-*\n"); + + for (i = 0; i < number_of_option; ++i) + printf("* %0*i. %-*s *\n", number_size, options[i], max_len, names[i]); + + printf("**"); + for (i = 0; i < full_size; ++i) + printf("*"); + printf("**\n\n"); + + int selection = 0; + printf("Your choice: "); + if (scanf("%25i", &selection) == 0) { + if (scanf("%*[^\n]%*c") != 0) + printf("ERROR: Reading the input line error.\n"); + + printf("ERROR: Incorrect input.\n"); + return -1; + } + scanf("%*[^\n]%*c"); + + return selection; +} + diff --git a/test/shell_tc/fido_asm_shell_tc_util.h b/test/shell_tc/fido_asm_shell_tc_util.h new file mode 100644 index 0000000..d289cf7 --- /dev/null +++ b/test/shell_tc/fido_asm_shell_tc_util.h @@ -0,0 +1,38 @@ + +#ifndef __FIDO_SHELL_TC_UTIL_H_ +#define __FIDO_SHELL_TC_UTIL_H_ + +#include +#include + +/** + * @brief Shows confirm dialog in console and gets answer (Yes/No). + * + * @since_tizen 3.0 + * @param [in] title The title for confirm dialog which will be printed + * before input of the answer + * @return false if answer is "No" and true if answer is "Yes" + */ +bool show_confirm_dialog(const char *title); + +/** + * @brief Shows menu in console and allows to get item from the array of options. + * + * @since_tizen 3.0 + * @param [in] title The title for show menu which will be printed + * before options + * @param [in] options The array with integer numbers of options + * which will be shown + * @param [in] names The array with names of options which will + * be shown + * @param [in] number_of_option The number of options which will be shown + * @return The selected item positive number from options array on success, + * otherwise a negative error value + */ +int show_menu( + const char *title, + const int *options, + const char **names, + int number_of_option); + +#endif /* __FIDO_SHELL_TC_UTIL_H_ */ diff --git a/ui/CMakeLists.txt b/ui/CMakeLists.txt new file mode 100644 index 0000000..b4870d6 --- /dev/null +++ b/ui/CMakeLists.txt @@ -0,0 +1,61 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +SET(ASM_UI asmui) + +SET(SRCS + ${CMAKE_SOURCE_DIR}/ui/src/asm_ui.c + ${CMAKE_SOURCE_DIR}/ui/src/asm_ui_ipc.c +) + +SET(PREFIX ${CMAKE_INSTALL_PREFIX}) + +INCLUDE_DIRECTORIES( + ${CMAKE_SOURCE_DIR} + ${CMAKE_SOURCE_DIR}/ui/ + ${CMAKE_SOURCE_DIR}/common/ + ${CMAKE_SOURCE_DIR}/common/uiutil/inc +) + +INCLUDE(FindPkgConfig) +pkg_check_modules(pkgs REQUIRED + capi-appfw-application + bundle + dlog + ecore + pkgmgr-info + ecore-input + ecore-imf + edje + elementary + evas + gobject-2.0 + gio-2.0 + gio-unix-2.0 + gmodule-2.0 + aul + vconf + efl-extension + openssl +) + +FOREACH(flag ${pkgs_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag} -Wall -g") +ENDFOREACH(flag) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC -Wall") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS}") +SET(CMAKE_C_FLAGS_DEBUG "-O0 -g ") +SET(CMAKE_C_FLAGS_RELEASE "-O2") + +ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") + +SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie") + +ADD_EXECUTABLE(${ASM_UI} ${SRCS}) +TARGET_LINK_LIBRARIES(${ASM_UI} ${pkgs_LDFLAGS} fido-asm-dbus) + +INSTALL(TARGETS ${ASM_UI} DESTINATION /usr/apps/org.tizen.asmui/bin) + +# install desktop file & icon +##SET(PREFIX ${CMAKE_INSTALL_PREFIX}) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/org.tizen.asmui.xml DESTINATION /usr/share/packages/) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/org.tizen.asmui.png DESTINATION /usr/share/icons/default/small) diff --git a/ui/data/org.tizen.asmui.png b/ui/data/org.tizen.asmui.png new file mode 100644 index 0000000000000000000000000000000000000000..9765b1bda7e5bddf0925555ab204b887a873bf24 GIT binary patch literal 57662 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 kZ}gYfNaCF}xV$|1>H6z0+kD + + + Manasij Sur Roy + ASM UI + + org.tizen.asmui.png + + + + + http://tizen.org/privilege/account.read + http://tizen.org/privilege/account.write + + + diff --git a/ui/org.tizen.asmui.png b/ui/org.tizen.asmui.png new file mode 100644 index 0000000000000000000000000000000000000000..9765b1bda7e5bddf0925555ab204b887a873bf24 GIT binary patch literal 57662 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 kZ}gYfNaCF}xV$|1>H6z0+kD + + + Manasij Sur Roy + ASM UI + + org.tizen.asmui.png + + + + + http://tizen.org/privilege/account.read + http://tizen.org/privilege/account.write + + + diff --git a/ui/src/asm_ui.c b/ui/src/asm_ui.c new file mode 100644 index 0000000..77eebd3 --- /dev/null +++ b/ui/src/asm_ui.c @@ -0,0 +1,761 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#if !GLIB_CHECK_VERSION(2, 31, 0) +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "asm_ui_ipc.h" +#include "AsmUiCommonTypes.h" +#include "AsmHelper.h" + +#define DIGEST_LEN 32 + +typedef struct appdata { + /*UI*/ + Evas_Object *win; + Evas_Object *conform; + Evas_Object *nf; + Evas_Object *genlist; + Evas_Object *label; + Evas_Object *layout; + Evas_Object *entry; + + /*Data coming from fido-asm*/ + char *mode; + char *nonce; + char *app_id_in; + char *text_in; + char **text_list_in; + int text_list_in_len; + char *token_in; +} appdata_s; +static appdata_s *__ad = NULL; + +static void +allow_clicked(void *data, Evas_Object *obj, void *event_info) +{ + asm_ui_ipc_send_tc_result(__ad->nonce, TC_UI_RESULT_USER_ALLOWED); +} + +static void +deny_clicked(void *data, Evas_Object *obj, void *event_info) +{ + asm_ui_ipc_send_tc_result(__ad->nonce, TC_UI_RESULT_USER_DENIED); +} + +static Eina_Bool +naviframe_pop_cb_tc(void *data, Elm_Object_Item *it) +{ + asm_ui_ipc_send_tc_result(__ad->nonce, TC_UI_RESULT_USER_DENIED); + return EINA_FALSE; +} + +Evas_Object * +ui_utils_toolbar_add_tc(Evas_Object *parent) +{ + Evas_Object *toolbar = elm_toolbar_add(parent); + + evas_object_size_hint_weight_set(toolbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(toolbar, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(toolbar); + + elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE); + elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND); + elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE); + + return toolbar; +} + +static void +create_list_view_tc(void) +{ + Evas_Object *list; + Evas_Object *btn; + Evas_Object *nf = __ad->nf; + Elm_Object_Item *nf_it; + + char content[1024] = {0, }; + snprintf(content, 1023, "%s", __ad->text_in); + + char title[128] = {0, }; + snprintf(title, 127, "%s Requested", __ad->app_id_in); + + /* List */ + list = elm_list_add(nf); + elm_list_mode_set(list, ELM_LIST_COMPRESS); + //evas_object_smart_callback_add(list, "selected", list_selected_cb, NULL); + + /* Main Menu Items Here */ + elm_list_item_append(list, content, NULL, NULL, NULL, NULL); + + elm_list_go(list); + + /* This button is set for devices which doesn't have H/W back key. */ + btn = elm_button_add(nf); + elm_object_style_set(btn, "naviframe/end_btn/default"); + nf_it = elm_naviframe_item_push(nf, title, btn, NULL, list, NULL); + elm_naviframe_item_pop_cb_set(nf_it, naviframe_pop_cb_tc, __ad->win); + + /*Toolbar*/ + Evas_Object *toolbar = ui_utils_toolbar_add_tc(__ad->nf); + if(toolbar) { + evas_object_show(toolbar); + + elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE); + + elm_toolbar_item_append(toolbar, NULL, "Allow", allow_clicked, NULL); + elm_toolbar_item_append(toolbar, NULL, "Deny", deny_clicked, NULL); + + elm_object_item_part_content_set(nf_it, "toolbar", toolbar); + + //evas_object_color_set(bg, 200, 170, 100, 255); + evas_object_show(toolbar); + } +} + +static void +create_base_gui_tc(void) +{ + elm_app_base_scale_set(1.8); + + /* Window */ + __ad->win = elm_win_util_standard_add("org.tizen.asmui", "org.tizen.asmui"); + elm_win_conformant_set(__ad->win, EINA_TRUE); + elm_win_autodel_set(__ad->win, EINA_TRUE); + + if (elm_win_wm_rotation_supported_get(__ad->win)) { + int rots[4] = { 0, 90, 180, 270 }; + elm_win_wm_rotation_available_rotations_set(__ad->win, (const int *)(&rots), 4); + } + + evas_object_smart_callback_add(__ad->win, "delete,request", deny_clicked, NULL); + eext_object_event_callback_add(__ad->win, EEXT_CALLBACK_BACK, deny_clicked, NULL); + + /* Conformant */ + __ad->conform = elm_conformant_add(__ad->win); + evas_object_size_hint_weight_set(__ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(__ad->win, __ad->conform); + evas_object_show(__ad->conform); + + /* Base Layout */ + __ad->layout = elm_layout_add(__ad->conform); + evas_object_size_hint_weight_set(__ad->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_layout_theme_set(__ad->layout, "layout", "application", "default"); + evas_object_show(__ad->layout); + + elm_object_content_set(__ad->conform, __ad->layout); + + /* Naviframe */ + __ad->nf = elm_naviframe_add(__ad->layout); + + create_list_view_tc(); + + elm_object_part_content_set(__ad->layout, "elm.swallow.content", __ad->nf); + eext_object_event_callback_add(__ad->nf, EEXT_CALLBACK_BACK, deny_clicked, NULL); + eext_object_event_callback_add(__ad->nf, EEXT_CALLBACK_MORE, deny_clicked, NULL); + + /* Show window after base gui is set up */ + evas_object_show(__ad->win); +} + + +void +show_tc_ui(void) +{ + create_base_gui_tc(); + return; +} + +static void +account_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + asm_ui_ipc_send_account_result(__ad->nonce, AC_UI_RESULT_USER_SELCTED, data); +} + +static void +cancel_clicked(void *data, Evas_Object *obj, void *event_info) +{ + char *dummy = "dummy"; + asm_ui_ipc_send_account_result(__ad->nonce, AC_UI_RESULT_USER_DENIED, dummy); +} + +static Eina_Bool +naviframe_pop_cb_account(void *data, Elm_Object_Item *it) +{ + char *dummy = "dummy"; + asm_ui_ipc_send_account_result(__ad->nonce, AC_UI_RESULT_USER_DENIED, dummy); + + return EINA_FALSE; +} + +Evas_Object * +ui_utils_toolbar_add_account(Evas_Object *parent) +{ + Evas_Object *toolbar = elm_toolbar_add(parent); + + evas_object_size_hint_weight_set(toolbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(toolbar, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(toolbar); + + elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE); + elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND); + elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE); + + return toolbar; +} + +static void +list_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + dlog_print(DLOG_INFO, "org.tizen.asmui", "fido asm ui list_selected_cb"); + + Elm_Object_Item *it = event_info; + elm_list_item_selected_set(it, EINA_FALSE); +} + +static void +create_list_view_account(void) +{ + Evas_Object *list; + Evas_Object *btn; + Evas_Object *nf = __ad->nf; + Elm_Object_Item *nf_it; + + char title[128] = {0, }; + snprintf(title, 127, "Select Account for %s", __ad->app_id_in); + + /* List */ + list = elm_list_add(nf); + elm_list_mode_set(list, ELM_LIST_COMPRESS); + evas_object_smart_callback_add(list, "selected", list_selected_cb, NULL); + + dlog_print(DLOG_INFO, "org.tizen.asmui", "fido asm ui account count %d", __ad->text_list_in_len); + int i = 0; + for (i = 0; i < __ad->text_list_in_len; i++) { + dlog_print(DLOG_INFO, "org.tizen.asmui", "fido asm ui account %s", __ad->text_list_in[i]); + elm_list_item_append(list, __ad->text_list_in[i], NULL, NULL, + account_selected_cb, strdup(__ad->text_list_in[i])); + } + + + elm_list_go(list); + Evas_Object *rect = evas_object_rectangle_add(evas_object_evas_get(__ad->layout)); + evas_object_size_hint_min_set(rect, 100, 100); + evas_object_color_set(rect, 200, 170, 100, 255); + evas_object_show(rect); + + /* This button is set for devices which doesn't have H/W back key. */ + btn = elm_button_add(nf); + elm_object_style_set(btn, "naviframe/end_btn/default"); + nf_it = elm_naviframe_item_push(nf, title, btn, NULL, list, NULL); + elm_naviframe_item_pop_cb_set(nf_it, naviframe_pop_cb_account, __ad->win); + + /*Toolbar*/ + Evas_Object *toolbar = ui_utils_toolbar_add_account(__ad->nf); + if(toolbar) { + evas_object_show(toolbar); + + elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE); + + elm_toolbar_item_append(toolbar, NULL, "Cancel", cancel_clicked, NULL); + + elm_object_item_part_content_set(nf_it, "toolbar", toolbar); + + //evas_object_color_set(bg, 200, 170, 100, 255); + evas_object_show(toolbar); + } +} + +static void +create_base_gui_account(void) +{ + elm_app_base_scale_set(1.8); + + /* Window */ + __ad->win = elm_win_util_standard_add("org.tizen.asmui", "org.tizen.asmui"); + elm_win_conformant_set(__ad->win, EINA_TRUE); + elm_win_autodel_set(__ad->win, EINA_TRUE); + + if (elm_win_wm_rotation_supported_get(__ad->win)) { + int rots[4] = { 0, 90, 180, 270 }; + elm_win_wm_rotation_available_rotations_set(__ad->win, (const int *)(&rots), 4); + } + + evas_object_smart_callback_add(__ad->win, "delete,request", cancel_clicked, NULL); + eext_object_event_callback_add(__ad->win, EEXT_CALLBACK_BACK, cancel_clicked, NULL); + + /* Conformant */ + __ad->conform = elm_conformant_add(__ad->win); + evas_object_size_hint_weight_set(__ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(__ad->win, __ad->conform); + evas_object_show(__ad->conform); + + /* Base Layout */ + __ad->layout = elm_layout_add(__ad->conform); + evas_object_size_hint_weight_set(__ad->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_layout_theme_set(__ad->layout, "layout", "application", "default"); + evas_object_show(__ad->layout); + + elm_object_content_set(__ad->conform, __ad->layout); + + /* Naviframe */ + __ad->nf = elm_naviframe_add(__ad->layout); + + create_list_view_account(); + + elm_object_part_content_set(__ad->layout, "elm.swallow.content", __ad->nf); + eext_object_event_callback_add(__ad->nf, EEXT_CALLBACK_BACK, cancel_clicked, NULL); + eext_object_event_callback_add(__ad->nf, EEXT_CALLBACK_MORE, cancel_clicked, NULL); + + /* Show window after base gui is set up */ + evas_object_show(__ad->win); +} + + +void +show_account_ui(void) +{ + create_base_gui_account(); + return; +} + +static void +timeout_cb(void *data, Evas_Object *obj, void *event_info) +{ + evas_object_hide(obj); +} + +static void +toast_popup(char *text) +{ + Evas_Object* popup = elm_popup_add(__ad->nf); + elm_object_style_set(popup, "toast"); + elm_object_text_set(popup, text); + evas_object_show(popup); + + evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_popup_timeout_set(popup, 2.0); + evas_object_smart_callback_add(popup, "timeout", timeout_cb, NULL); + +} + +int +genB64Encode(const unsigned char *input, int inlen, unsigned char * output, int *outlen) +{ +#if 0 + EVP_ENCODE_CTX ctx; + int t = 0; + EVP_EncodeInit(&ctx); + EVP_EncodeUpdate(&ctx, output,outlen,input,inlen); + EVP_EncodeFinal(&ctx,output + *outlen, &t); + *outlen += t -1; +#else + BIO * bmem = NULL; + BIO * b64 = NULL; + BUF_MEM * bptr = NULL; + b64 = BIO_new(BIO_f_base64()); + if(b64 == NULL) + { + _ERR("BIO_new failed \n"); + return -1; + } + BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL); + + bmem = BIO_new(BIO_s_mem()); + b64 = BIO_push(b64, bmem); + BIO_write(b64, input, inlen); + BIO_flush(b64); + BIO_get_mem_ptr(b64, &bptr); + + memcpy(output, bptr->data, bptr->length); + output[bptr->length] = 0; + *outlen = bptr->length; + if(b64) + { + BIO_free_all(b64); + } + //printf("outlen is %d, out is %s\n",*outlen, output); +#endif + int i; + for(i =0; i < *outlen ; i++) + { + if(output[i] == '+') + { + output[i] = '-'; + } + else if(output[i] == '/') + { + output[i] = '_'; + } + else if(output[i] == '=') + { + *outlen = i ; + output[i] = '\0'; + break; + } + } + + _INFO("AsmCrypto::genB64Encode:: outlen = [%d]", *outlen); + return 0; +} + +unsigned char* +ToBase64Url(const unsigned char *input, int inputLen) +{ + _BEGIN; + + int inputSz = inputLen; //input.size(); + + _INFO("AsmCrypto::ToBase64Url::input size = [%d]", inputSz); + + unsigned char* output = NULL; + //MALLOC(output, unsigned char, inputSz*1.5); + + output = (unsigned char*)calloc(1, inputSz*1.5); + + int outputSz = 0; + + if (0 != genB64Encode(input, + inputSz, + output, + &outputSz)) + { + _ERR("Failed to encode base64."); + free(output); + return (unsigned char*)""; + } + + _INFO("AsmCrypto::ToBase64Url::output size = [%d]", outputSz); + _INFO("AsmCrypto::ToBase64Url::output = [%s]", output); + + _END; + return output; +} + +bool +genHash256(const void* input, unsigned long length, unsigned char* md) +{ + SHA256_CTX context; + if(!SHA256_Init(&context)) + return false; + + if(!SHA256_Update(&context, (unsigned char*)input, length)) + return false; + + if(!SHA256_Final(md, &context)) + return false; + + return true; +} + +static void +pin_save_clicked(void *data, Evas_Object *obj, void *event_info) +{ + if(elm_entry_is_empty(__ad->entry) == EINA_TRUE){ + toast_popup("Enter PIN"); + return; + } + + const char *pin = elm_entry_entry_get(__ad->entry); + + if (__ad->token_in == NULL) { + asm_ui_ipc_send_auth_result(0, __ad->nonce, 0, pin); + return; + } + + unsigned char digest[DIGEST_LEN]; + genHash256(pin, strlen(pin), digest); + char *pin_b64 = (char*)ToBase64Url(digest, DIGEST_LEN); + + if (strcmp(pin_b64, __ad->token_in) == 0) { + asm_ui_ipc_send_auth_result(0, __ad->nonce, 0, pin); + } + else { + dlog_print(DLOG_INFO, "org.tizen.asmui", "fido asm ui [%s][%s][%s]", pin, pin_b64, __ad->token_in); + toast_popup("Incorrect PIN"); + return; + } + + +} + +static void +pin_cancel_clicked(void *data, Evas_Object *obj, void *event_info) +{ + asm_ui_ipc_send_auth_result(0, __ad->nonce, -1, "dummy"); + return; +} + + +static void +create_base_gui_pin(int type) +{ + elm_app_base_scale_set(1.8); + + /* Window */ + __ad->win = elm_win_util_standard_add("org.tizen.asmui", "org.tizen.asmui"); + elm_win_conformant_set(__ad->win, EINA_TRUE); + elm_win_autodel_set(__ad->win, EINA_TRUE); + + if (elm_win_wm_rotation_supported_get(__ad->win)) { + int rots[4] = { 0, 90, 180, 270 }; + elm_win_wm_rotation_available_rotations_set(__ad->win, (const int *)(&rots), 4); + } + + evas_object_smart_callback_add(__ad->win, "delete,request", pin_cancel_clicked, NULL); + eext_object_event_callback_add(__ad->win, EEXT_CALLBACK_BACK, pin_cancel_clicked, NULL); + + /* Conformant */ + __ad->conform = elm_conformant_add(__ad->win); + evas_object_size_hint_weight_set(__ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(__ad->win, __ad->conform); + evas_object_show(__ad->conform); + + /* Base Layout */ + __ad->layout = elm_layout_add(__ad->conform); + evas_object_size_hint_weight_set(__ad->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_layout_theme_set(__ad->layout, "layout", "application", "default"); + evas_object_show(__ad->layout); + + elm_object_content_set(__ad->conform, __ad->layout); + + /* Naviframe */ + __ad->nf = elm_naviframe_add(__ad->layout); + + __ad->entry = elm_entry_add(__ad->nf); + elm_object_part_text_set(__ad->entry, "elm.guide", "Enter Numeric PIN Here"); + elm_entry_password_set(__ad->entry, EINA_TRUE); + elm_entry_input_panel_layout_set(__ad->entry, ELM_INPUT_PANEL_LAYOUT_NUMBERONLY); + elm_entry_scrollable_set(__ad->entry, EINA_FALSE); + evas_object_size_hint_weight_set(__ad->entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(__ad->entry, EVAS_HINT_FILL, EVAS_HINT_FILL); + + /* This button is set for devices which doesn't have H/W back key. */ + Evas_Object *btn = elm_button_add(__ad->nf); + elm_object_style_set(btn, "naviframe/end_btn/default"); + + char title[128] = {0, }; + if (type == 0) + snprintf(title, 127, "Setup a New PIN"); + else + snprintf(title, 127, "Verify PIN"); + + Evas_Object *nf_it = elm_naviframe_item_push(__ad->nf, title, btn, NULL, __ad->entry, NULL); + + //elm_naviframe_item_pop_cb_set(nf_it, naviframe_pop_cb_account, __ad->win); + + /*Toolbar*/ + Evas_Object *toolbar = ui_utils_toolbar_add_account(__ad->nf); + if(toolbar) { + evas_object_show(toolbar); + + elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE); + + elm_toolbar_item_append(toolbar, NULL, "Save", pin_save_clicked, NULL); + + elm_toolbar_item_append(toolbar, NULL, "Cancel", pin_cancel_clicked, NULL); + + elm_object_item_part_content_set(nf_it, "toolbar", toolbar); + + //evas_object_color_set(bg, 200, 170, 100, 255); + evas_object_show(toolbar); + } + + + elm_object_part_content_set(__ad->layout, "elm.swallow.content", __ad->nf); + eext_object_event_callback_add(__ad->nf, EEXT_CALLBACK_BACK, pin_cancel_clicked, NULL); + eext_object_event_callback_add(__ad->nf, EEXT_CALLBACK_MORE, pin_cancel_clicked, NULL); + + /* Show window after base gui is set up */ + evas_object_show(__ad->win); +} + +void +show_pin_ui_enroll(void) +{ + create_base_gui_pin(0); + return; +} + +void +show_pin_ui_verify(void) +{ + create_base_gui_pin(1); + return; +} + +static void +app_control(app_control_h app_control, void *data) +{ + dlog_print(DLOG_INFO, "org.tizen.asmui", "fido asm ui app_control"); + + __ad->mode = NULL; + app_control_get_extra_data(app_control, TC_UI_KEY_MODE, &(__ad->mode)); + + __ad->nonce = NULL; + app_control_get_extra_data(app_control, TC_UI_KEY_NONCE, &(__ad->nonce)); + + if (strcmp(__ad->mode, TC_UI_VAL_MODE_TC) == 0) { + __ad->app_id_in = NULL; + app_control_get_extra_data(app_control, TC_UI_KEY_APP, &(__ad->app_id_in)); + + __ad->text_in = NULL; + app_control_get_extra_data(app_control, TC_UI_KEY_TEXT, &(__ad->text_in)); + + show_tc_ui(); + + } else if (strcmp(__ad->mode, TC_UI_VAL_MODE_ACCOUNT) == 0) { + __ad->app_id_in = NULL; + app_control_get_extra_data(app_control, TC_UI_KEY_APP, &(__ad->app_id_in)); + + __ad->text_list_in = NULL; + __ad->text_list_in_len = 0; + app_control_get_extra_data_array(app_control, TC_UI_KEY_ACC_LIST, + &(__ad->text_list_in), &(__ad->text_list_in_len)); + + show_account_ui(); + + } else if (strcmp(__ad->mode, TC_UI_VAL_MODE_PIN_ENROLL) == 0) { + __ad->app_id_in = NULL; + app_control_get_extra_data(app_control, TC_UI_KEY_APP, &(__ad->app_id_in)); + + show_pin_ui_enroll(); + + } else if (strcmp(__ad->mode, TC_UI_VAL_MODE_PIN_VERIFY) == 0) { + __ad->app_id_in = NULL; + app_control_get_extra_data(app_control, TC_UI_KEY_APP, &(__ad->app_id_in)); + + __ad->token_in = NULL; + app_control_get_extra_data(app_control, TC_UI_KEY_TOK, &(__ad->token_in)); + + show_pin_ui_verify(); + } +} + +static void +app_pause(void *data) +{ + +} + +static void +app_resume(void *data) +{ + dlog_print(DLOG_INFO, "org.tizen.asmui", "fido asm ui app_resume"); +} + +static void +app_terminate(void *data) +{ + dlog_print(DLOG_INFO, "org.tizen.asmui", "fido asm ui app_terminate"); +} + +static void +ui_app_lang_changed(app_event_info_h event_info, void *user_data) +{ + return; +} + +static void +ui_app_orient_changed(app_event_info_h event_info, void *user_data) +{ + return; +} + +static void +ui_app_region_changed(app_event_info_h event_info, void *user_data) +{ +} + +static void +ui_app_low_battery(app_event_info_h event_info, void *user_data) +{ +} + +static void +ui_app_low_memory(app_event_info_h event_info, void *user_data) +{ + dlog_print(DLOG_INFO, "org.tizen.asmui", "fido asm ui ui_app_low_memory"); +} + +static bool +app_create(void *data) +{ + return true; +} + +EXPORT_API int +main(int argc, char *argv[]) +{ + dlog_print(DLOG_INFO, "org.tizen.asmui", "fido asm ui start"); + + __ad = NALLOC(1, appdata_s); + int ret = 0; + + ui_app_lifecycle_callback_s event_callback = {0,}; + app_event_handler_h handlers[5] = {NULL, }; + + event_callback.create = app_create; + event_callback.terminate = app_terminate; + event_callback.pause = app_pause; + event_callback.resume = app_resume; + event_callback.app_control = app_control; + + ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, ui_app_low_battery, __ad); + ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, ui_app_low_memory, __ad); + ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, ui_app_orient_changed, __ad); + ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, ui_app_lang_changed, __ad); + ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, ui_app_region_changed, __ad); + ui_app_remove_event_handler(handlers[APP_EVENT_LOW_MEMORY]); + +#if !GLIB_CHECK_VERSION(2,35,0) + g_type_init(); +#endif + + dlog_print(DLOG_INFO, "org.tizen.asmui", "fido asm ui before ui_app_main"); + ret = ui_app_main(argc, argv, &event_callback, __ad); + /*if (ret != APP_ERROR_NONE) { + _INFO("app_main() is failed. err = %d", ret); + }*/ + + dlog_print(DLOG_INFO, "org.tizen.asmui", "fido asm ui after ui_app_main [%d]", ret); + return ret; +} diff --git a/ui/src/asm_ui_ipc.c b/ui/src/asm_ui_ipc.c new file mode 100644 index 0000000..93437df --- /dev/null +++ b/ui/src/asm_ui_ipc.c @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "asm_ui_ipc.h" +#include "fido-client-ipc-stub.h" +#include + +static Fidoasm* +__asm_ui_get_dbus_proxy(void) +{ +#if !GLIB_CHECK_VERSION(2, 35, 0) + g_type_init(); +#endif + + GDBusConnection *connection = NULL; + GError *error = NULL; + + connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error); + + /* Create the object */ + Fidoasm *dbus_proxy = fidoasm_proxy_new_sync(connection, + G_DBUS_PROXY_FLAGS_NONE, + "org.tizen.fidoasm", + "/org/tizen/fidoasm", + NULL, + &error); + + if (error != NULL) { + dlog_print(DLOG_INFO, "org.tizen.asmui", "fido asm ui after fidoasm_proxy_new_sync %s", error->message); + } + return dbus_proxy; +} + +int +asm_ui_ipc_send_tc_result(const char *nonce, int result) +{ + dlog_print(DLOG_INFO, "org.tizen.asmui", "fido asm ui asm_ui_ipc_send_tc_result start"); + + Fidoasm *dbus_proxy = __asm_ui_get_dbus_proxy(); + if (dbus_proxy == NULL) + return -1; + + dlog_print(DLOG_INFO, "org.tizen.asmui", "fido asm ui after dbus_proxy"); + GError *err = NULL; + fidoasm_call_asm_ui_confirm_tc_sync(dbus_proxy, nonce, result, NULL, &err); + dlog_print(DLOG_INFO, "org.tizen.asmui", "fido asm ui after fidoasm_call_asm_ui_confirm_tc_sync"); + if (err != NULL) { + dlog_print(DLOG_INFO, "org.tizen.asmui", "fido asm ui fidoasm_call_asm_ui_confirm_tc_sync %s", err->message); + } + + return 0; +} + +int +asm_ui_ipc_send_account_result(const char *nonce, int result, const char *account) +{ + Fidoasm *dbus_proxy = __asm_ui_get_dbus_proxy(); + if (dbus_proxy == NULL) + return -1; + + GError *err = NULL; + fidoasm_call_asm_ui_confirm_acc_sync(dbus_proxy, nonce, result, account, + NULL, &err); + + return 0; +} + +int +asm_ui_ipc_send_auth_result(int type, const char *nonce, int result, const char *token) +{ + Fidoasm *dbus_proxy = __asm_ui_get_dbus_proxy(); + if (dbus_proxy == NULL) + return -1; + + GError *err = NULL; + fidoasm_call_auth_ui_result_sync(dbus_proxy, type, nonce, result, token, + NULL, &err); + + return 0; +} diff --git a/ui/src/asm_ui_ipc.h b/ui/src/asm_ui_ipc.h new file mode 100644 index 0000000..0972a1b --- /dev/null +++ b/ui/src/asm_ui_ipc.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef ASM_UI_IPC_H +#define ASM_UI_IPC_H + +#include +#include + +int asm_ui_ipc_send_tc_result(const char *nonce, int result); +int asm_ui_ipc_send_account_result(const char *nonce, int result, const char *account); +int asm_ui_ipc_send_auth_result(int type, const char *nonce, int result, const char *token); + +#endif // ASM_UI_IPC_H -- 2.7.4

+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%0AM`{$Gg*88D(mS(zuacMSOQR75ivp2i0`EUyo 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

-r?W%*0;3hXT^+T$>cPo@mb};;w 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 CmV8A3 literal 0 HcmV?d00001 diff --git a/test/RADemoTV/res/images/horz_scrollbar.png b/test/RADemoTV/res/images/horz_scrollbar.png new file mode 100644 index 0000000000000000000000000000000000000000..a402da72dfb51890c29ed8450828fc6f549aeda4 GIT binary patch literal 46086 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 CeF^aZ literal 0 HcmV?d00001 diff --git a/test/RADemoTV/res/images/tizen.png b/test/RADemoTV/res/images/tizen.png new file mode 100644 index 0000000000000000000000000000000000000000..408188a19d0f667960a599fd406c0827d6d4c657 GIT binary patch literal 28340 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 literal 0 HcmV?d00001 diff --git a/test/RADemoTV/res/offline_auth_req.json b/test/RADemoTV/res/offline_auth_req.json new file mode 100644 index 0000000..776759d --- /dev/null +++ b/test/RADemoTV/res/offline_auth_req.json @@ -0,0 +1,30 @@ +[ + { + "header": { + "upv": { + "major": 1, + "minor": 0 + }, + "op": "Auth", + "serverData": "emKubKMS8RxYOth7J8enT_x7dQWBaO1CiC0fGmSEhX56kq2RYo1LRpwvfHlzYRI3p9Ay-l4zJcV3lX6rQ0CYNWi5nNDabClFm3k0pPj0kX5V-db9ejN_05y2J6wqztSD" + }, + "challenge": "1AM2yZY4-9SG4Ns7-hMdB8IV_FTDKFFiUqNJNVbsVoo", + "policy": { + "accepted": [ + [{ + "aaid": ["DDDD#0000"], + "keyIDs": ["sdfsdfsferere"] + }], + [{ + "aaid": ["TEST#1111"], + "keyIDs": ["TEXT1"] + }], + [{ + "aaid": ["TEST#1111"], + "keyIDs": ["aW52YWxpZGtleWlkZm9ydGVzdDEyMzQ1"] + }] + ] + } + } +] + diff --git a/test/RADemoTV/res/offline_dereg_req.json b/test/RADemoTV/res/offline_dereg_req.json new file mode 100644 index 0000000..837b501 --- /dev/null +++ b/test/RADemoTV/res/offline_dereg_req.json @@ -0,0 +1,17 @@ +[ + { + "header": { + "upv": { + "major": "1", + "minor": "0" + }, + "op": "Dereg" + }, + "authenticators": [ + { + "aaid": "TEST#1111", + "keyID": "TEXT1" + } + ] + } +] diff --git a/test/RADemoTV/res/offline_reg_req.json b/test/RADemoTV/res/offline_reg_req.json new file mode 100644 index 0000000..f664ea4 --- /dev/null +++ b/test/RADemoTV/res/offline_reg_req.json @@ -0,0 +1,32 @@ +[ + { + "header": { + "upv": { + "major": 1, + "minor": 0 + }, +"op":"Reg", + "serverData": "nwV8EPqS5raZdAgH3GD9Z-ytCA9MkiiWaCsr1GHHNJ2yUh3HaV1HHxd4Z67FefJOD5sQYZvipfg5BavhdWPMecD2SH39aJixoXN9ZaNwRlcftJe9WbtPNDC9q5V9WX7Z5jCwkAwehcI" + }, + "challenge": "9pIcUwwrY5eD9o3OwfhkeHLnoIl0vaeJUbxSHMe_XgE", +"username":"TEXT1", + "policy": { + "accepted": [ + [ + { + "aaid": [ + "TEST#1111" + ] + } + ], + [ + { + "aaid": [ + "DDDD#XXXX" + ] + } + ] + ] + } + } +] diff --git a/test/RADemoTV/res/ui-controls.edc b/test/RADemoTV/res/ui-controls.edc new file mode 100644 index 0000000..565603f --- /dev/null +++ b/test/RADemoTV/res/ui-controls.edc @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +collections { + base_scale: 2.6; + #include "../edc_resource/layout.edc" + #include "../edc_resource/datetime.edc" + #include "../edc_resource/entry.edc" + #include "../edc_resource/slider.edc" + #include "../edc_resource/progressbar.edc" + #include "../edc_resource/button.edc" + #include "../edc_resource/pagecontrol.edc" + #include "../edc_resource/popup_custom.edc" + #include "../edc_resource/label.edc" + #include "../edc_resource/genlist.edc" + #include "../edc_resource/default/inc/my_button_header.edc" + #include "../edc_resource/default/my_button.edc" + #include "../edc_resource/accessibility/screen_reader/description.edc" + #include "../edc_resource/accessibility/screen_reader/reading_order.edc" + #include "../edc_resource/accessibility/screen_reader/custom_frame.edc" +} + diff --git a/test/RADemoTV/shared/res/fido.png b/test/RADemoTV/shared/res/fido.png new file mode 100644 index 0000000000000000000000000000000000000000..e8e4340558f744e66f8345e0d8b883e26e5792c2 GIT binary patch literal 5689 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 kZ}gYfNaCF}xV$|1>H6z0+kD +#include +#include +#include +#include +#include +#include + +#include +#include "rademotv.h" + +#include "util.h" +#include "fido_handler.h" + +#define APP_SHARED_PATH "/home/owner/apps_rw/org.example.rademotv/shared/data/" +#define REG_REQ_FILE_NAME_OFFLINE "/home/owner/apps_rw/org.example.rademotv/res/offline_reg_req.json" +#define AUTH_REQ_FILE_NAME_OFFLINE "/home/owner/apps_rw/org.example.rademotv/res/offline_auth_req.json" +#define DEREG_REQ_FILE_NAME_OFFLINE "/home/owner/apps_rw/org.example.rademotv/res/offline_dereg_req.json" + +#define _UAF_OPERATION_NAME_KEY_REG "Reg" + +#define _UAF_OPERATION_NAME_KEY_AUTH "Auth" + +#define _UAF_OPERATION_NAME_KEY_DE_REG "Dereg" + +#define TAG_UAFV1_REG_ASSERTION 0x3E01 + +#define TAG_UAFV1_AUTH_ASSERTION 0x3E02 + +#define TAG_UAFV1_KRD 0x3E03 + +#define TAG_UAFV1_SIGNED_DATA 0x3E04 + +#define TAG_ATTESTATION_CERT 0x2E05 + +#define TAG_SIGNATURE 0x2E06 + +#define TAG_ATTESTATION_BASIC_FULL 0x3E07 + +#define TAG_ATTESTATION_BASIC_SURROGATE 0x3E08 + +#define TAG_KEYID 0x2E09 + +#define TAG_FINAL_CHALLENGE 0x2E0A + +#define TAG_AAID 0x2E0B + +#define TAG_PUB_KEY 0x2E0C + +#define TAG_COUNTERS 0x2E0D + +#define TAG_ASSERTION_INFO 0x2E0E + +#define TAG_AUTHENTICATOR_NONCE 0x2E0F + +#define TAG_TRANSACTION_CONTENT_HASH 0x2E10 + +#define TAG_EXTENSION 0x3E11, 0x3E12 + +#define TAG_EXTENSION_ID 0x2E13 + +#define TAG_EXTENSION_DATA 0x2E14 + +typedef struct _fh { + on_reg_resp reg_cb; + on_auth_resp auth_cb; + on_dereg_resp dreg_cb; + void *user_data; +} fh_t; + +typedef struct __attribute__((packed)) _tlv { + uint16_t type; + uint16_t len; + uint8_t *val; +} _tlv_t; + +void +_free_tlv(_tlv_t *data) +{ + RET_IF_FAIL_VOID(data != NULL); + + SAFE_DELETE(data->val); + SAFE_DELETE(data); +} + +static char* +__replace(const char *orig_str, const char *tok, const char *rplace_tok) +{ + if ((orig_str == NULL) || (tok == NULL) || (rplace_tok == NULL)) + return NULL; + + gchar **tok_arr = g_strsplit(orig_str, tok, 2); + if (tok_arr == NULL) + return NULL; + + + int target_len = strlen(orig_str) - strlen(tok) + strlen(rplace_tok) + 1; + char *new_str = calloc(target_len, sizeof(char)); + + snprintf(new_str, target_len - 1, "%s%s%s", strdup(tok_arr[0]), strdup(rplace_tok), strdup(tok_arr[1])); + + return new_str; + +} + +static char* +__read(const char *file_name) +{ + FILE *file = fopen(file_name, "rb"); + if (file == NULL) + return NULL; + + fseek(file, 0, SEEK_END); + long size = ftell(file); + if (size <= 0) { + fclose(file); + return NULL; + } + + fseek(file, 0, SEEK_SET); + + char *json = calloc(1, size + 1); + int num_bytes = fread(json, size, 1, file); + if (num_bytes <= 0) { + free(json); + fclose(file); + return NULL; + } + + json[size] = '\0'; + + fclose(file); + + return json; + +} + +static _tlv_t* +__get_tlv_pack_by_type(const guchar *tlv_buffer_in, uint16_t type_in, int max_len_in) +{ + int i = 0; + + while (1) { + uint16_t lb = tlv_buffer_in[i + 0]; + uint16_t hb = tlv_buffer_in[i + 1]; + + uint16_t val = hb << 8; + val = val | lb; + + uint16_t type = val; + + lb = 0; + hb = 0; + val = 0; + + lb = tlv_buffer_in[i + 2]; + hb = tlv_buffer_in[i + 3]; + + val = hb << 8; + val = val | lb; + + uint16_t length = val; + + if (type == type_in) { + _tlv_t *tlv = (_tlv_t*)calloc(1, sizeof(_tlv_t)); + tlv->type = type; + tlv->len = length; + if (tlv->len > 0) { + tlv->val = (uint8_t *)calloc(1, tlv->len); + memcpy(tlv->val, tlv_buffer_in + i + 2 + 2, tlv->len); + } + return tlv; + } + + i += 2 + 2 + length; + if (i >= max_len_in) + break; + } + + return NULL; +} + +static int +genB64Encode(const unsigned char *input, int inlen, unsigned char * output, int *outlen) +{ + BIO * bmem = NULL; + BIO * b64 = NULL; + BUF_MEM * bptr = NULL; + b64 = BIO_new(BIO_f_base64()); + if (b64 == NULL) { + return -1; + } + BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL); + + bmem = BIO_new(BIO_s_mem()); + b64 = BIO_push(b64, bmem); + BIO_write(b64, input, inlen); + BIO_flush(b64); + BIO_get_mem_ptr(b64, &bptr); + + memcpy(output, bptr->data, bptr->length); + output[bptr->length] = 0; + *outlen = bptr->length; + if(b64) { + BIO_free_all(b64); + } + + for(int i =0; i < *outlen ; i++) { + if(output[i] == '+') { + output[i] = '-'; + } + else if(output[i] == '/') { + output[i] = '_'; + } + else if(output[i] == '=') { + *outlen = i ; + output[i] = '\0'; + break; + } + } + + return 0; +} + +static unsigned char* +__b64url_encode(const unsigned char *input, int inputLen) +{ + if (input == NULL) + return NULL; + + int inputSz = inputLen; + + unsigned char* output = NULL; + + output = (unsigned char*)calloc(1, inputSz*1.5); + + int outputSz = 0; + + if (0 != genB64Encode(input, inputSz, output, &outputSz)) { + free(output); + return (unsigned char*)""; + } + + return output; +} + +static int +__b64url_decode(const unsigned char* in, int inlen, + unsigned char* out, int* outlen) +{ + + int npadChars = (inlen % 4) == 0 ? 0 : (4 - (inlen % 4)); + unsigned char* base64 = (unsigned char*) malloc(inlen + npadChars); + if (base64 == NULL) { + return -1; + } + + memcpy(base64, in, inlen); + + int i; + for (i = 0; i < inlen; i++) { + if (base64[i] == '-') + base64[i] = '+'; + + else if (base64[i] == '_') + base64[i] = '/'; + + } + + if (npadChars != 0) + memset(base64 + inlen, '=', npadChars); + + BIO* b64 = NULL; + BIO* bmem = NULL; + b64 = BIO_new(BIO_f_base64()); + if (b64 == NULL) { + if (base64) { + free(base64); + base64 = NULL; + } + return -1; + } + BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL); + bmem = BIO_new_mem_buf(base64, inlen); + if (bmem == NULL) { + if (base64) { + free(base64); + base64 = NULL; + } + return -1; + } + + bmem = BIO_push(b64, bmem); + *outlen = BIO_read(bmem, out, inlen); + if (*outlen <= 0) + { + if (base64) { + free(base64); + base64 = NULL; + } + return -1; + } + + if (bmem) + BIO_free_all(bmem); + + return 0; +} + +static fido_reg_assertion_t* +__tlv_decode_reg_assertion(const char *tlv_enc) +{ + RET_IF_FAIL(tlv_enc != NULL, NULL); + + int in_len = strlen(tlv_enc); + int tlv_dec_len = in_len * 1.5; + unsigned char *tlv_dec = calloc(1, tlv_dec_len); + + int r = __b64url_decode((unsigned char *)tlv_enc, in_len, tlv_dec, &tlv_dec_len); + RET_IF_FAIL(r == 0, NULL); + + _tlv_t *reg_tlv = __get_tlv_pack_by_type(tlv_dec, TAG_UAFV1_REG_ASSERTION, tlv_dec_len); + if (reg_tlv != NULL) { + + _free_tlv(reg_tlv); + + int krd_start_idx = 2 + 2; + + _tlv_t *krd_tlv = __get_tlv_pack_by_type(tlv_dec + krd_start_idx, TAG_UAFV1_KRD, (tlv_dec_len - krd_start_idx)); + if (krd_tlv != NULL) { + _free_tlv(krd_tlv); + + int krd_inner_start_idx = krd_start_idx + 2 + 2; + + _tlv_t *aaid_tlv = __get_tlv_pack_by_type(tlv_dec + krd_inner_start_idx, TAG_AAID, (tlv_dec_len - krd_inner_start_idx)); + + _tlv_t *key_id_tlv = __get_tlv_pack_by_type(tlv_dec + krd_inner_start_idx, TAG_KEYID, (tlv_dec_len - krd_inner_start_idx)); + + + fido_reg_assertion_t *assrt_tlv = (fido_reg_assertion_t*)calloc(1, sizeof(fido_reg_assertion_t)); + + if (aaid_tlv != NULL) { + + assrt_tlv->aaid = (char*)calloc(1, aaid_tlv->len + 1); + memcpy(assrt_tlv->aaid, aaid_tlv->val, aaid_tlv->len); + + _free_tlv(aaid_tlv); + } + + if (key_id_tlv != NULL) { + + assrt_tlv->kid = (unsigned char*)calloc(1, key_id_tlv->len); + memcpy(assrt_tlv->kid, key_id_tlv->val, key_id_tlv->len); + + assrt_tlv->kid_len = key_id_tlv->len; + + + _free_tlv(key_id_tlv); + } + + return assrt_tlv; + } + } + + + return NULL; +} + +static fido_reg_assertion_t* +__fido_handler_decode_reg_assertion(const char *uaf_reg_resp) +{ + if (uaf_reg_resp == NULL) + return NULL; + + + JsonParser *parser = json_parser_new(); + + GError * err = NULL; + json_parser_load_from_data(parser, uaf_reg_resp, -1, &err); + if (err != NULL) + return NULL; + + JsonNode *root = json_parser_get_root(parser); + RET_IF_FAIL(root != NULL, NULL); + + JsonArray *root_arr = json_node_get_array(root); + RET_IF_FAIL(root_arr != NULL, NULL); + + JsonObject *arr_elem_obj = json_array_get_object_element(root_arr, 0); + RET_IF_FAIL(arr_elem_obj != NULL, NULL); + + JsonArray *asrt_arr = json_object_get_array_member(arr_elem_obj, "assertions"); + RET_IF_FAIL(asrt_arr != NULL, NULL); + + JsonObject *assrt_arr_obj = json_array_get_object_element(asrt_arr, 0); + RET_IF_FAIL(assrt_arr_obj != NULL, NULL); + + const char *assrt_str = json_object_get_string_member(assrt_arr_obj, "assertion"); + RET_IF_FAIL(assrt_str != NULL, NULL); + + + return __tlv_decode_reg_assertion(assrt_str); +} + +static char* +__fido_handler_get_json_reg_req(const char *uname) +{ + char *json_orig = __read(REG_REQ_FILE_NAME_OFFLINE); + if (json_orig == NULL) + return NULL; + + return __replace(json_orig, "TEXT1", uname); +} + +static char* +__fido_handler_get_json_auth_req(const char *kid) +{ + char *json_orig = __read(AUTH_REQ_FILE_NAME_OFFLINE); + if (json_orig == NULL) + return NULL; + + char *kid_enc = __b64url_encode(kid, strlen(kid)); + return __replace(json_orig, "TEXT1", kid_enc); +} + +static char* +__fido_handler_get_json_dereg_req(const char *kid) +{ + char *json_orig = __read(DEREG_REQ_FILE_NAME_OFFLINE); + if (json_orig == NULL) + return NULL; + + char *kid_enc = __b64url_encode(kid, strlen(kid)); + return __replace(json_orig, "TEXT1", kid_enc); +} + +void +__reg_cb(fido_error_e tizen_error_code, const char *uaf_response_json, void *user_data) +{ + + fh_t *fh = user_data; + if (tizen_error_code != FIDO_ERROR_NONE) { + fh->reg_cb(NULL, tizen_error_code, fh->user_data); + + return; + } + + fido_reg_assertion_t *reg_data = __fido_handler_decode_reg_assertion(uaf_response_json); + fh->reg_cb(reg_data, tizen_error_code, fh->user_data); + +} + +static void +__auth_cb(fido_error_e tizen_error_code, const char *uaf_response_json, void *user_data) +{ + + fh_t *fh = user_data; + if (tizen_error_code != FIDO_ERROR_NONE) { + fh->auth_cb(NULL, tizen_error_code, fh->user_data); + + return; + } + + fido_reg_assertion_t *reg_data = __fido_handler_decode_reg_assertion(uaf_response_json); + fh->auth_cb(reg_data, tizen_error_code, fh->user_data); + +} + +static void +__dreg_cb(fido_error_e tizen_error_code, const char *uaf_response_json, void *user_data) +{ + fh_t *fh = user_data; + fh->dreg_cb(tizen_error_code, fh->user_data); +} + +int +fido_handler_req_reg(const char *uname, on_reg_resp cb, void *user_data) +{ + dlog_print(DLOG_INFO, LOG_TAG, "rademo uname=[%s]", uname); + + char *reg_req = __fido_handler_get_json_reg_req(uname); + if (reg_req == NULL) + return -1; + + dlog_print(DLOG_INFO, LOG_TAG, "rademo req=[%s]", reg_req); + + fh_t *fh = calloc(1, sizeof(fh_t)); + fh->reg_cb = cb; + fh->user_data = user_data; + + int ret = fido_uaf_get_response_message(reg_req, NULL, __reg_cb, fh); + if (ret != FIDO_ERROR_NONE) + free(fh); + + return ret; +} + +int +fido_handler_req_auth(const char *kid, on_auth_resp cb, void *user_data) +{ + char *auth_req = __fido_handler_get_json_auth_req(kid); + if (auth_req == NULL) + return -1; + + fh_t *fh = calloc(1, sizeof(fh_t)); + fh->auth_cb = cb; + fh->user_data = user_data; + + int ret = fido_uaf_get_response_message(auth_req, NULL, __auth_cb, fh); + if (ret != FIDO_ERROR_NONE) + free(fh); + + return ret; +} + + +int +fido_handler_req_dereg(const char *kid, on_dereg_resp cb, void *user_data) +{ + char *dreg_req = __fido_handler_get_json_dereg_req(kid); + if (dreg_req == NULL) + return -1; + + fh_t *fh = calloc(1, sizeof(fh_t)); + fh->dreg_cb = cb; + fh->user_data = user_data; + + int ret = fido_uaf_get_response_message(dreg_req, NULL, __dreg_cb, fh); + if (ret != FIDO_ERROR_NONE) + free(fh); + + + return ret; +} + diff --git a/test/RADemoTV/src/rademotv.c b/test/RADemoTV/src/rademotv.c new file mode 100644 index 0000000..c3bb27a --- /dev/null +++ b/test/RADemoTV/src/rademotv.c @@ -0,0 +1,531 @@ +/* + * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include +#include "rademotv.h" +#include "storage_handler.h" +#include "fido_handler.h" + + +#define USERNAME "Manasij" + +#define ELM_DEMO_EDJ "/home/owner/apps_rw/org.example.rademotv/res/ui-controls.edj" + +typedef struct _popup_data { + Evas_Object *popup; + char *str; +} popup_data; + +static void +__popup_finish(void *data, Evas_Object *obj, void *event_info) +{ + evas_object_del(data); +} + +static void +__wait_popup_back(void *data, Evas_Object *obj, void *event_info) +{ + /*Ignore*/ +} + +static void +__hide_waiting(appdata_s *ad) +{ + if (ad->w_popup == NULL) + return; + + evas_object_hide(ad->w_popup); + evas_object_del(ad->w_popup); + ad->w_popup = NULL; + + return; +} + +static void +__show_waiting(char *popup_str, appdata_s *ad) +{ + ad->w_popup = elm_popup_add(ad->win); + + elm_popup_align_set(ad->w_popup, ELM_NOTIFY_ALIGN_FILL, 1.0); + evas_object_size_hint_weight_set(ad->w_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_text_set(ad->w_popup, popup_str); + + eext_object_event_callback_add(ad->w_popup, EEXT_CALLBACK_BACK, __wait_popup_back, NULL); + + evas_object_show(ad->w_popup); + + return; +} + +static void +create_popup(char *popup_str, appdata_s *ad) +{ + Evas_Object *popup = elm_popup_add(ad->win); + Evas_Object *btn; + + elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0); + evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_text_set(popup, popup_str); + + btn = elm_button_add(popup); + elm_object_style_set(btn, "popup"); + evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_text_set(btn, "OK"); + elm_object_part_content_set(popup, "button1", btn); + eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, eext_popup_back_cb, NULL); + + evas_object_smart_callback_add(btn, "clicked", __popup_finish, popup); + + evas_object_show(popup); + + return; +} + +static char * +__get_error_str(fido_error_e error_code) +{ + + char *error_str = calloc(1,128); + + if(error_code == FIDO_ERROR_NONE) + strcpy(error_str, "SUCCESS"); + else if (error_code == FIDO_ERROR_OUT_OF_MEMORY) + strcpy(error_str, "FIDO_ERROR_OUT_OF_MEMORY"); + else if (error_code == FIDO_ERROR_INVALID_PARAMETER) + strcpy(error_str, "FIDO_ERROR_INVALID_PARAMETER"); + else if (error_code == FIDO_ERROR_NO_DATA) + strcpy(error_str, "FIDO_ERROR_NO_DATA"); + else if (error_code == FIDO_ERROR_PERMISSION_DENIED) + strcpy(error_str, "FIDO_ERROR_PERMISSION_DENIED"); + else if (error_code == FIDO_ERROR_NOT_SUPPORTED) + strcpy(error_str, "FIDO_ERROR_NOT_SUPPORTED"); + else if (error_code == FIDO_ERROR_USER_ACTION_IN_PROGRESS) + strcpy(error_str, "FIDO_ERROR_USER_ACTION_IN_PROGRESS"); + else if (error_code == FIDO_ERROR_USER_CANCELLED) + strcpy(error_str, "FIDO_ERROR_USER_CANCELLED"); + else if (error_code == FIDO_ERROR_UNSUPPORTED_VERSION) + strcpy(error_str, "FIDO_ERROR_UNSUPPORTED_VERSION"); + else if (error_code == FIDO_ERROR_NO_SUITABLE_AUTHENTICATOR) + strcpy(error_str, "FIDO_ERROR_NO_SUITABLE_AUTHENTICATOR"); + else if (error_code == FIDO_ERROR_PROTOCOL_ERROR) + strcpy(error_str, "FIDO_ERROR_PROTOCOL_ERROR"); + else if (error_code == FIDO_ERROR_UNTRUSTED_FACET_ID) + strcpy(error_str, "FIDO_ERROR_UNTRUSTED_FACET_ID"); + else + strcpy(error_str, "FIDO_ERROR_UNKNOWN"); + return error_str; +} + +//static void +//__show_error(int tizen_error_code, appdata_s *app_data) +//{ +// char *error_string = get_error_code(tizen_error_code); +// create_popup(error_string, app_data, false); +// free(error_string); +//} + +static void +win_delete_request_cb(void *data, Evas_Object *obj, void *event_info) +{ + /* To make your application go to background, + Call the elm_win_lower() instead + Evas_Object *win = (Evas_Object *) data; + elm_win_lower(win); */ + ui_app_exit(); +} + +static void +list_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + Elm_Object_Item *it = event_info; + elm_list_item_selected_set(it, EINA_FALSE); +} + +static Eina_Bool +naviframe_pop_cb(void *data, Elm_Object_Item *it) +{ + ui_app_exit(); + return EINA_FALSE; +} + +static void +__reg_cb(fido_reg_assertion_t *reg_resp, int err, void *user_data) +{ + appdata_s *ad = user_data; + + __hide_waiting(ad); + + if (reg_resp == NULL || err != 0) { + create_popup(__get_error_str(err), ad); + return; + } + + fido_data_t *data = calloc(1, sizeof(fido_data_t)); + data->aaid = reg_resp->aaid; + data->kid = reg_resp->kid; + data->uname = strdup(ad->uname); + + storage_handler_store(data); + + free(data->uname); + free(data); + + create_popup("Registered Successfully", ad); + create_list_view(ad); +} + +static void +__auth_cb(fido_reg_assertion_t *reg_resp, int err, void *user_data) +{ + appdata_s *ad = user_data; + + __hide_waiting(ad); + + if (reg_resp == NULL || err != 0) { + create_popup(__get_error_str(err), ad); + return; + } + + fido_data_t *resp_data = calloc(1, sizeof(fido_data_t)); + resp_data->aaid = reg_resp->aaid; + + fido_data_t *stored_data = storage_handler_search(resp_data); + if (stored_data == NULL) { + create_popup("Authentication Failed", ad); + } else { + /*TODO Key verification*/ + create_popup("Authenticated Successfully", ad); + } + + create_list_view(ad); +} + +static void +__dereg_cb(int err, void *user_data) +{ + appdata_s *ad = user_data; + + __hide_waiting(ad); + + if (err != 0) { + create_popup("De-Registration Failed", ad); + return; + } + + int ret = storage_handler_delete_all(); + if (ret == 0) { + create_popup("De-Registration Completed", ad); + } else { + /*TODO Key verification*/ + create_popup("De-Registration Failed", ad); + } + + create_list_view(ad); +} + +static void +__uname_set(void *data, Evas_Object *obj, void *event_info) +{ + appdata_s *ad = data; + const char *ip = elm_entry_entry_get(ad->u_entry); + + if (ip == NULL) + return; + + ad->uname = strdup(ip); + dlog_print(DLOG_INFO, LOG_TAG, "rademo uname=[%s]", ad->uname); + + //char *uname = strdup(ip); + int ret = fido_handler_req_reg(ad->uname, __reg_cb, ad); + evas_object_del(ad->u_popup); + if (ret != 0) { + create_popup(__get_error_str(ret), ad); + return; + } + __show_waiting("Waiting for Accessory Device Response", ad); +} + +static void +__get_uname_from_user(appdata_s *ad) +{ + /* popup */ + ad->u_popup = elm_popup_add(ad->nf); + elm_popup_align_set(ad->u_popup, ELM_NOTIFY_ALIGN_FILL, 1.0); + eext_object_event_callback_add(ad->u_popup, EEXT_CALLBACK_BACK, eext_popup_back_cb, NULL); + evas_object_size_hint_weight_set(ad->u_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_part_text_set(ad->u_popup, "title,text", "Enter User Name"); + + ad->u_layout = elm_layout_add(ad->u_popup); + elm_layout_file_set(ad->u_layout, ELM_DEMO_EDJ, "popup_input_text"); + evas_object_size_hint_weight_set(ad->u_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_content_set(ad->u_popup, ad->u_layout); + + ad->u_entry = elm_entry_add(ad->u_layout); + elm_entry_single_line_set(ad->u_entry, EINA_TRUE); + elm_entry_scrollable_set(ad->u_entry, EINA_TRUE); + evas_object_size_hint_weight_set(ad->u_entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(ad->u_entry, EVAS_HINT_FILL, EVAS_HINT_FILL); + eext_entry_selection_back_event_allow_set(ad->u_entry, EINA_TRUE); + //elm_object_part_text_set(ad->u_entry, "elm.guide", "Guide Text"); + elm_object_part_content_set(ad->u_layout, "elm.swallow.content" , ad->u_entry); + + /* Set button */ + Evas_Object *btn = elm_button_add(ad->u_popup); + elm_object_style_set(btn, "popup"); + elm_object_text_set(btn, "Set"); + elm_object_part_content_set(ad->u_popup, "button1", btn); + evas_object_smart_callback_add(btn, "clicked", __uname_set, ad); + + evas_object_show(ad->u_popup); +} + +void +start_reg(void *data, Evas_Object *obj, void *event_info) +{ + __get_uname_from_user(data); +} + +void +start_auth(void *data, Evas_Object *obj, void *event_info) +{ + fido_data_t *stored_data = storage_handler_search(NULL); + if (stored_data == NULL || stored_data->kid == NULL) { + appdata_s *ad = data; + create_popup("Not Registered", ad); + return; + } + + int ret = fido_handler_req_auth(stored_data->kid, __auth_cb, data); + if (ret != 0) { + appdata_s *ad = data; + create_popup(__get_error_str(ret), ad); + return; + } + __show_waiting("Waiting for Accessory Device Response", data); +} + +void +start_dereg(void *data, Evas_Object *obj, void *event_info) +{ + fido_data_t *stored_data = storage_handler_search(NULL); + if (stored_data == NULL || stored_data->kid == NULL) { + appdata_s *ad = data; + create_popup("Not Registered", ad); + return; + } + + int ret = fido_handler_req_dereg(stored_data->kid, __dereg_cb, data); + if (ret != 0) { + appdata_s *ad = data; + create_popup(__get_error_str(ret), ad); + return; + } + __show_waiting("Waiting for Accessory Device Response", data); +} + +void +create_list_view(appdata_s *ad) +{ + if (ad->list != NULL) + elm_list_clear(ad->list); + + Evas_Object *btn; + Evas_Object *nf = ad->nf; + Elm_Object_Item *nf_it; + ad->stored_data = storage_handler_search(NULL); + + /* List */ + ad->list = elm_list_add(nf); + elm_list_mode_set(ad->list, ELM_LIST_COMPRESS); + evas_object_smart_callback_add(ad->list, "selected", list_selected_cb, NULL); + + /* Main Menu Items Here */ + if (ad->stored_data == NULL) { + elm_list_item_append(ad->list, "Register New User", NULL, NULL, start_reg, ad); + } else { + elm_list_item_append(ad->list, "Authenticate", NULL, NULL, start_auth, ad); + elm_list_item_append(ad->list, "De-Register", NULL, NULL, start_dereg, ad); + } + + elm_list_go(ad->list); + + /* This button is set for devices which doesn't have H/W back key. */ + btn = elm_button_add(nf); + elm_object_style_set(btn, "naviframe/end_btn/default"); + if (ad->stored_data == NULL) { + nf_it = elm_naviframe_item_push(nf, "No Previous Registration", btn, NULL, ad->list, NULL); + } else { + nf_it = elm_naviframe_item_push(nf, ad->stored_data->uname, btn, NULL, ad->list, NULL); + } + elm_naviframe_item_pop_cb_set(nf_it, naviframe_pop_cb, ad->win); +} + +static void +create_base_gui(appdata_s *ad) +{ + /* + * Widget Tree + * Window + * - conform + * - layout main + * - naviframe */ + + /* Window */ + ad->win = elm_win_util_standard_add(PACKAGE, PACKAGE); + elm_win_conformant_set(ad->win, EINA_TRUE); + elm_win_autodel_set(ad->win, EINA_TRUE); + + if (elm_win_wm_rotation_supported_get(ad->win)) { + int rots[4] = { 0, 90, 180, 270 }; + elm_win_wm_rotation_available_rotations_set(ad->win, (const int *)(&rots), 4); + } + + evas_object_smart_callback_add(ad->win, "delete,request", win_delete_request_cb, NULL); + + /* Conformant */ + ad->conform = elm_conformant_add(ad->win); + evas_object_size_hint_weight_set(ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(ad->win, ad->conform); + evas_object_show(ad->conform); + + /* Indicator */ + /* elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW); */ + + /* Base Layout */ + ad->layout = elm_layout_add(ad->conform); + evas_object_size_hint_weight_set(ad->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_layout_theme_set(ad->layout, "layout", "application", "default"); + evas_object_show(ad->layout); + + elm_object_content_set(ad->conform, ad->layout); + + /* Naviframe */ + ad->nf = elm_naviframe_add(ad->layout); + create_list_view(ad); + elm_object_part_content_set(ad->layout, "elm.swallow.content", ad->nf); + eext_object_event_callback_add(ad->nf, EEXT_CALLBACK_BACK, eext_naviframe_back_cb, NULL); + eext_object_event_callback_add(ad->nf, EEXT_CALLBACK_MORE, eext_naviframe_more_cb, NULL); + + /* Show window after base gui is set up */ + evas_object_show(ad->win); +} + +static bool +app_create(void *data) +{ + /* Hook to take necessary actions before main event loop starts + Initialize UI resources and application's data + If this function returns true, the main loop of application starts + If this function returns false, the application is terminated */ + appdata_s *ad = data; + + elm_app_base_scale_set(1.8); + create_base_gui(ad); + + return true; +} + +static void +app_control(app_control_h app_control, void *data) +{ + /* Handle the launch request. */ +} + +static void +app_pause(void *data) +{ + /* Take necessary actions when application becomes invisible. */ +} + +static void +app_resume(void *data) +{ + /* Take necessary actions when application becomes visible. */ +} + +static void +app_terminate(void *data) +{ + /* Release all resources. */ +} + +static void +ui_app_lang_changed(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_LANGUAGE_CHANGED*/ + char *locale = NULL; + system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &locale); + elm_language_set(locale); + free(locale); + return; +} + +static void +ui_app_orient_changed(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_DEVICE_ORIENTATION_CHANGED*/ + return; +} + +static void +ui_app_region_changed(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_REGION_FORMAT_CHANGED*/ +} + +static void +ui_app_low_battery(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_LOW_BATTERY*/ +} + +static void +ui_app_low_memory(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_LOW_MEMORY*/ +} + +int +main(int argc, char *argv[]) +{ + appdata_s ad = {0,}; + int ret = 0; + + ui_app_lifecycle_callback_s event_callback = {0,}; + app_event_handler_h handlers[5] = {NULL, }; + + event_callback.create = app_create; + event_callback.terminate = app_terminate; + event_callback.pause = app_pause; + event_callback.resume = app_resume; + event_callback.app_control = app_control; + + ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, ui_app_low_battery, &ad); + ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, ui_app_low_memory, &ad); + ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, ui_app_orient_changed, &ad); + ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, ui_app_lang_changed, &ad); + ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, ui_app_region_changed, &ad); + ui_app_remove_event_handler(handlers[APP_EVENT_LOW_MEMORY]); + + ret = ui_app_main(argc, argv, &event_callback, &ad); + if (ret != APP_ERROR_NONE) { + dlog_print(DLOG_ERROR, LOG_TAG, "app_main() is failed. err = %d", ret); + } + + return ret; +} diff --git a/test/RADemoTV/src/storage_handler.c b/test/RADemoTV/src/storage_handler.c new file mode 100644 index 0000000..6761453 --- /dev/null +++ b/test/RADemoTV/src/storage_handler.c @@ -0,0 +1,85 @@ +/* + * storage_handler.c + * + * Created on: Sep 7, 2016 + * Author: manasij.r + */ + +#include +#include "storage_handler.h" +#include +#include "util.h" + +int +storage_handler_store(const fido_data_t *data) +{ + RET_IF_FAIL(data != NULL, -1); + + preference_set_string("uname", data->uname); + preference_set_string("kid", data->kid); + preference_set_string("aaid", data->aaid); + + return 0; +} + +fido_data_t* +storage_handler_search(const fido_data_t *filter) +{ + fido_data_t *data = calloc(1, sizeof(fido_data_t)); + + char *uname = NULL; + char *kid = NULL; + char *aaid = NULL; + + preference_get_string("uname", &uname); + preference_get_string("kid", &kid); + preference_get_string("aaid", &aaid); + + if ((uname == NULL) || (kid == NULL) || (aaid == NULL)) { + free(data); + return NULL; + } + + if (filter == NULL) { + data->aaid = aaid; + data->kid = kid; + data->uname = uname; + + return data; + } + + if ((filter->aaid != NULL)) { + + if (strcmp(filter->aaid, aaid) != 0) { + free(data); + return NULL; + } + } + if ((filter->kid != NULL)) { + + if (strcmp(filter->kid, kid) != 0) { + free(data); + return NULL; + } + } + if ((filter->uname != NULL)) { + + if (strcmp(filter->uname, uname) != 0) { + free(data); + return NULL; + } + } + + data->aaid = aaid; + data->kid = kid; + data->uname = uname; + + return data; +} + +int +storage_handler_delete_all(void) +{ + preference_remove_all(); + return 0; +} diff --git a/test/RADemoTV/tizen-manifest.xml b/test/RADemoTV/tizen-manifest.xml new file mode 100644 index 0000000..9d608c4 --- /dev/null +++ b/test/RADemoTV/tizen-manifest.xml @@ -0,0 +1,11 @@ + + + + + + fido.png + + + http://tizen.org/privilege/fido.client + + diff --git a/test/conformance_test/FIDOSample/.cproject b/test/conformance_test/FIDOSample/.cproject new file mode 100644 index 0000000..be8f695 --- /dev/null +++ b/test/conformance_test/FIDOSample/.cproject @@ -0,0 +1,610 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/conformance_test/FIDOSample/.exportMap b/test/conformance_test/FIDOSample/.exportMap new file mode 100644 index 0000000..43e310e --- /dev/null +++ b/test/conformance_test/FIDOSample/.exportMap @@ -0,0 +1,4 @@ +{ + global: main; + local: *; +}; diff --git a/test/conformance_test/FIDOSample/.package-stamp b/test/conformance_test/FIDOSample/.package-stamp new file mode 100644 index 0000000..40cbe59 --- /dev/null +++ b/test/conformance_test/FIDOSample/.package-stamp @@ -0,0 +1 @@ +TPK \ No newline at end of file diff --git a/test/conformance_test/FIDOSample/.project b/test/conformance_test/FIDOSample/.project new file mode 100644 index 0000000..606d4fa --- /dev/null +++ b/test/conformance_test/FIDOSample/.project @@ -0,0 +1,26 @@ + + + FIDOSample + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/test/conformance_test/FIDOSample/.rds_delta b/test/conformance_test/FIDOSample/.rds_delta new file mode 100644 index 0000000..a72638e --- /dev/null +++ b/test/conformance_test/FIDOSample/.rds_delta @@ -0,0 +1,6 @@ +#delete +#add +#modify +author-signature.xml +signature1.xml +res/auth_req.json diff --git a/test/conformance_test/FIDOSample/.sdk_delta.info b/test/conformance_test/FIDOSample/.sdk_delta.info new file mode 100644 index 0000000000000000000000000000000000000000..a834b0832185cd68981bc7e02e811bead8432fc6 GIT binary patch literal 1935 zcmaJ?OHUI~6h19#6cABV#7BG}A{Xb1qE!WX)42rShWFPI94L9(sDo$jQ(VF#r3Q&`OAyFH*m8^u3!*6htR;1*MMm-}W4XX45 zL@VSM@|rTP{FAbsq5LM)Iq8wuw9aRNwsk%a)%VqMtH!GD8r81>VB;>ZCZ+~xK-RqF zO4xvQuN(U0r>_R&+^}dO=O)(|ct7yD-AutUU;wN+w+PMyKUj59vS!@Hw>QUZzg-5} z;2$8Faa7?{mHdZ*2}%j~(BV(YOOF+Ar=9|^ zTdWC)>GOk*(A-p?wkQZaQ}|2h3OnvBne5Ix0|LHh6X!7BX3WsERo-R1^@=$XfGG*{ z))y&m@cfQ3rRg{y!H(gLu@tH2w)1v%JTJEAwm&llA#e%@J6D>3IPJqe3jr*Cg)zXGc_ouiky#w%{5c>MDMj%o@&#c1K*Lh)W};#h%(GX2#Ic$)J$ z + + + + + +dPStffQQK83Gd7Fl8JNsV9BI0k/ro3WBvOCtm7wX58o= + + + +j7hIl7grnSZKXAzh4qnbWVyT32x3yuYSZm7KRmqLfYE= + + + +L24gBp9GVTWCIjQhk3ep3zbxCms8uoJ3aroMM0GXaoE= + + + +pZfa3at5/sxgjlqZboukM+CsvcKsakhbqH7BVjY7HtI= + + + +1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs= + + + +9gsi/nBiIA5VEM2Mwsr7AEyd4gKDIXYRbZ3FJscZHQE= + + + + + + +lpo8tUDs054eLlBQXiDPVDVKfw30ZZdtkRs1jd7H5K8= + + + +LRLjFwHRzrHZAPQXXCGRz6dKmrHQRbp8cmyxTWDJd9EPDG5/5avsJ3y+JGKKeRPTIH9HfNRHzN3g +T9BnAeGKCZgon8qQp9+cV83S5MHFsW6ZKbNvkL/0LDsN5N0u4lJjYXTiOO2FNHpopu2/rkrmylyN +gkXX/r5fy1goFpSYD/8= + + + + +MIIClTCCAX2gAwIBAgIGAVWW5WFDMA0GCSqGSIb3DQEBBQUAMFYxGjAYBgNVBAoMEVRpemVuIEFz +c29jaWF0aW9uMRowGAYDVQQLDBFUaXplbiBBc3NvY2lhdGlvbjEcMBoGA1UEAwwTVGl6ZW4gRGV2 +ZWxvcGVycyBDQTAeFw0xMjExMDEwMDAwMDBaFw0xOTAxMDEwMDAwMDBaMBExDzANBgNVBAMMBmF1 +dGhvcjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEApQoQG76AhcGiaETu54POHH1PJlQRJk6y ++e6WWnbO6rc9HxFyA/37KdPO8okqiifUw9q9gRT3vN5dk5QHcS7dtsWcN4wmpf/gunezYMFc76q+ +BR1xEt3di0TSROqHrD+3yS4tyKVSlaXtPFIyR5RMAI3X3k1np9/1SWjpEAt9mskCAwEAAaMyMDAw +DAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMwDQYJKoZIhvcN +AQEFBQADggEBAC+4orztdjnriaP3CHkHMGmNU9VxhfXZqMM8zycz3HYhfffUkWYKKsT+1ZQisKON +3odhBQGDgQussm9PpQFyQ1epkeLbVTDXRwSE4vAiJpZwKRVmcHzi8/l9i4DxvecI5RgAX1BBBUCw +6FRDlLmJ2Kvz6wVS8CTRsXp6DyDMQl6OkmMwKbvAGFhpbVmy8l6G+QEpTsU4WY9gigHjJ2tafVI7 +XREhC+8+BrViOTNx7FxqXgoD+cSb8UUEtqSb6H72XQZLgW2FK1WvWzMCyseE2wzi9dUCgAtdF5tI +FGEd9WPy119WDEzes8sAdkeCxGtiycN99kP/m/2j3Ubt2G7E6LA= + + +MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMRowGAYDVQQKDBFUaXplbiBBc3NvY2lh +dGlvbjEaMBgGA1UECwwRVGl6ZW4gQXNzb2NpYXRpb24xHjAcBgNVBAMMFVRpemVuIERldmVsb3Bl +cnMgUm9vdDAeFw0xMjAxMDEwMDAwMDBaFw0yNzAxMDEwMDAwMDBaMFYxGjAYBgNVBAoMEVRpemVu +IEFzc29jaWF0aW9uMRowGAYDVQQLDBFUaXplbiBBc3NvY2lhdGlvbjEcMBoGA1UEAwwTVGl6ZW4g +RGV2ZWxvcGVycyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANVGhRGmMIUyBA7o +PCz8Sxut6z6HNkF4oDIuzuKaMzRYPeWodwe9O0gmqAkToQHfwg2giRhE5GoPld0fq+OYMMwSasCu +g8dwODx1eDeSYVuOLWRxpAmbTXOsSFi6VoWeyaPEm18JBHvZBsU5YQtgZ6Kp7MqzvQg3pXOxtajj +vyHxiatJl+xXrHgcXC1wgyG3buty7u/Fi2mvKXJ0PRJcCjjK81dqe/Vr20sRUCrbk02zbm5ggFt/ +jIEhV8wbFRQpliobc7J4dSTKhFfrqGM8rdd54LYhD7gSI1CFSe16pUXfcVR7FhJztRaiGLnCrwBE +dyTZ248+D4L/qR/D0axb3jcCAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOC +AQEAnOXXQ/1O/QTDHyrmQDtFziqPY3xWlJBqJtEqXiT7Y+Ljpe66e+Ee/OjQMlZe8gu21/8cKklH +95RxjopMWCVedXDUbWdvS2+CdyvVW/quT2E0tjqIzXDekUTYwwhlPWlGxvfj3VsxqSFq3p8Brl04 +1Gx5RKAGyKVsMfTLhbbwSWwApuBUxYfcNpKwLWGPXkysu+HctY03OKv4/xKBnVWiN8ex/Sgesi0M ++OBAOMdZMPK32uJBTeKFx1xZgTLIhk45V0hPOomPjZloiv0LSS11eyd451ufjW0iHRE7WlpR6EvI +W6TFyZgMpQq+kg4hWl2SBTf3s2VI8Ygz7gj8TMlClg== + + + + + \ No newline at end of file diff --git a/test/conformance_test/FIDOSample/.sign/signature1.xml b/test/conformance_test/FIDOSample/.sign/signature1.xml new file mode 100644 index 0000000..dffd59d --- /dev/null +++ b/test/conformance_test/FIDOSample/.sign/signature1.xml @@ -0,0 +1,80 @@ + + + + + + +QZePglPUC73qYQHySrBWVi3hKAwvZxa5zvRQrowdlxI= + + + +dPStffQQK83Gd7Fl8JNsV9BI0k/ro3WBvOCtm7wX58o= + + + +j7hIl7grnSZKXAzh4qnbWVyT32x3yuYSZm7KRmqLfYE= + + + +L24gBp9GVTWCIjQhk3ep3zbxCms8uoJ3aroMM0GXaoE= + + + +pZfa3at5/sxgjlqZboukM+CsvcKsakhbqH7BVjY7HtI= + + + +1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs= + + + +9gsi/nBiIA5VEM2Mwsr7AEyd4gKDIXYRbZ3FJscZHQE= + + + + + + +u/jU3U4Zm5ihTMSjKGlGYbWzDfRkGphPPHx3gJIYEJ4= + + + +HowP8FFbFjT6ZRVS5R4jPra8oZENIv/4UhLELrQjdKrI+mWCareTg7wbpMiC1OiAq9HCIhIhRglS +H8+CdxqrbZb7+PR0Sst8LNnkByAdfboQ/MATSmXeIQBF2h60rjWG/TYl7L4+Qr6lb9ksJdJboHmT +dKzZzMY/LNBDsolVAEQ= + + + + +MIICmzCCAgQCCQDXI7WLdVZwiTANBgkqhkiG9w0BAQUFADCBjzELMAkGA1UEBhMCS1IxDjAMBgNV +BAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6ZW4gVGVzdCBDQTEiMCAGA1UE +CwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwbVGl6ZW4gUHVibGljIERpc3Ry +aWJ1dG9yIENBMB4XDTEyMTAyOTEzMDMwNFoXDTIyMTAyNzEzMDMwNFowgZMxCzAJBgNVBAYTAktS +MQ4wDAYDVQQIDAVTdXdvbjEOMAwGA1UEBwwFU3V3b24xFjAUBgNVBAoMDVRpemVuIFRlc3QgQ0Ex +IjAgBgNVBAsMGVRpemVuIERpc3RyaWJ1dG9yIFRlc3QgQ0ExKDAmBgNVBAMMH1RpemVuIFB1Ymxp +YyBEaXN0cmlidXRvciBTaWduZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALtMvlc5hENK +90ZdA+y66+Sy0enD1gpZDBh5T9RP0oRsptJv5jjNTseQbQi0SZOdOXb6J7iQdlBCtR343RpIEz8H +mrBy7mSY7mgwoU4EPpp4CTSUeAuKcmvrNOngTp5Hv7Ngf02TTHOLK3hZLpGayaDviyNZB5PdqQdB +hokKjzAzAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAvGp1gxxAIlFfhJH1efjb9BJK/rtRkbYn9+Ez +GEbEULg1svsgnyWisFimI3uFvgI/swzr1eKVY3Sc8MQ3+Fdy3EkbDZ2+WAubhcEkorTWjzWz2fL1 +vKaYjeIsuEX6TVRUugHWudPzcEuQRLQf8ibZWjbQdBmpeQYBMg5x+xKLCJc= + + +MIICtDCCAh2gAwIBAgIJAMDbehElPNKvMA0GCSqGSIb3DQEBBQUAMIGVMQswCQYDVQQGEwJLUjEO +MAwGA1UECAwFU3V3b24xDjAMBgNVBAcMBVN1d29uMRYwFAYDVQQKDA1UaXplbiBUZXN0IENBMSMw +IQYDVQQLDBpUVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEpMCcGA1UEAwwgVGl6ZW4gUHVibGlj +IERpc3RyaWJ1dG9yIFJvb3QgQ0EwHhcNMTIxMDI5MTMwMjUwWhcNMjIxMDI3MTMwMjUwWjCBjzEL +MAkGA1UEBhMCS1IxDjAMBgNVBAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6 +ZW4gVGVzdCBDQTEiMCAGA1UECwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwb +VGl6ZW4gUHVibGljIERpc3RyaWJ1dG9yIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDe +OTS/3nXvkDEmsFCJIvRlQ3RKDcxdWJJp625pFqHdmoJBdV+x6jl1raGK2Y1sp2Gdvpjc/z92yzAp +bE/UVLPh/tRNZPeGhzU4ejDDm7kzdr2f7Ia0U98K+OoY12ucwg7TYNItj9is7Cj4blGfuMDzd2ah +2AgnCGlwNwV/pv+uVQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBACqJ +KO33YdoGudwanZIxMdXuxnnD9R6u72ltKk1S4zPfMJJv482CRGCI4FK6djhlsI4i0Lt1SVIJEed+ +yc3qckGm19dW+4xdlkekon7pViEBWuyHw8OWv3RXtTum1+PGHjBJ2eYY4ZKIpz73U/1NC16sTB/0 +VhfnkHwPltmrpYVe + + + + + \ No newline at end of file diff --git a/test/conformance_test/FIDOSample/.tproject b/test/conformance_test/FIDOSample/.tproject new file mode 100644 index 0000000..56660b2 --- /dev/null +++ b/test/conformance_test/FIDOSample/.tproject @@ -0,0 +1,12 @@ + + + + + mobile-3.0 + + + + + + + diff --git a/test/conformance_test/FIDOSample/inc/fidosample.h b/test/conformance_test/FIDOSample/inc/fidosample.h new file mode 100644 index 0000000..f38f214 --- /dev/null +++ b/test/conformance_test/FIDOSample/inc/fidosample.h @@ -0,0 +1,37 @@ +#ifndef __fidosample_H__ +#define __fidosample_H__ + +#include +#include +#include +#include +#include +#include + +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "fidosample" + +#if !defined(PACKAGE) +#define PACKAGE "org.example.fidosample" +#endif + +typedef struct appdata { + Evas_Object *win; + Evas_Object *conform; + Evas_Object *layout; + Evas_Object *nf; + Evas_Object *datetime; + Evas_Object *popup; + Evas_Object *button; + struct tm saved_time; +} appdata_s; + +void start_discover(void *data, Evas_Object *obj, void *event_info); +void start_check_policy(void *data, Evas_Object *obj, void *event_info); +void start_registration(void *data, Evas_Object *obj, void *event_info); +void start_auth(void *data, Evas_Object *obj, void *event_info); +void start_de_registration(void *data, Evas_Object *obj, void *event_info); + +#endif /* __fidosample_H__ */ diff --git a/test/conformance_test/FIDOSample/project_def.prop b/test/conformance_test/FIDOSample/project_def.prop new file mode 100644 index 0000000..eb187b9 --- /dev/null +++ b/test/conformance_test/FIDOSample/project_def.prop @@ -0,0 +1,11 @@ +APPNAME = fidosample + +type = app +profile = mobile-3.0 + +USER_SRCS = src/fidosample.c +USER_DEFS = +USER_INC_DIRS = inc +USER_OBJS = +USER_LIBS = +USER_EDCS = diff --git a/test/conformance_test/FIDOSample/res/auth_req.json b/test/conformance_test/FIDOSample/res/auth_req.json new file mode 100644 index 0000000..97794b6 --- /dev/null +++ b/test/conformance_test/FIDOSample/res/auth_req.json @@ -0,0 +1,25 @@ +[ + { + "header": { + "upv": { + "major": 1, + "minor": 0 + }, + "op": "Auth", + "appID": "tizen:pkg-key-hash:x75XV5IcXwi7mD7E78FqtebUZQYtXqKo/QCf8DSTCME=", + "serverData": "emKubKMS8RxYOth7J8enT_x7dQWBaO1CiC0fGmSEhX56kq2RYo1LRpwvfHlzYRI3p9Ay-l4zJcV3lX6rQ0CYNWi5nNDabClFm3k0pPj0kX5V-db9ejN_05y2J6wqztSD" + }, + "challenge": "1AM2yZY4-9SG4Ns7-hMdB8IV_FTDKFFiUqNJNVbsVoo", + "policy": { + "accepted": [ + [ + { + "aaid": [ + "TEST#1111" + ] + } + ] + ] + } + } +] diff --git a/test/conformance_test/FIDOSample/res/dereg_req.json b/test/conformance_test/FIDOSample/res/dereg_req.json new file mode 100644 index 0000000..97e5ce7 --- /dev/null +++ b/test/conformance_test/FIDOSample/res/dereg_req.json @@ -0,0 +1,17 @@ +[ + { + "header": { + "upv": { + "major": "1", + "minor": "0" + }, + "op": "Dereg" + }, + "authenticators": [ + { + "aaid": "0001#8001", + "keyID": "uWrbo_8JI1HmPESrNAStTVV8ZbBrzLsf_kZu1QKX2YY" + } + ] + } +] diff --git a/test/conformance_test/FIDOSample/res/reg_req.json b/test/conformance_test/FIDOSample/res/reg_req.json new file mode 100644 index 0000000..b586547 --- /dev/null +++ b/test/conformance_test/FIDOSample/res/reg_req.json @@ -0,0 +1,26 @@ +[ + { + "header": { + "upv": { + "major": 1, + "minor": 0 + }, + "op": "Reg", + "appID": "tizen:pkg-key-hash:x75XV5IcXwi7mD7E78FqtebUZQYtXqKo/QCf8DSTCME=", + "serverData": "nwV8EPqS5raZdAgH3GD9Z-ytCA9MkiiWaCsr1GHHNJ2yUh3HaV1HHxd4Z67FefJOD5sQYZvipfg5BavhdWPMecD2SH39aJixoXN9ZaNwRlcftJe9WbtPNDC9q5V9WX7Z5jCwkAwehcI" + }, + "challenge": "9pIcUwwrY5eD9o3OwfhkeHLnoIl0vaeJUbxSHMe_XgE", + "username": "TEXT1", + "policy": { + "accepted": [ + [ + { + "aaid": [ + "TEST#1111" + ] + } + ] + ] + } + } +] diff --git a/test/conformance_test/FIDOSample/shared/res/fidosample.png b/test/conformance_test/FIDOSample/shared/res/fidosample.png new file mode 100644 index 0000000000000000000000000000000000000000..9765b1bda7e5bddf0925555ab204b887a873bf24 GIT binary patch literal 57662 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 kZ}gYfNaCF}xV$|1>H6z0+kD + +#define _REG_REQ_FILE_NAME "/home/owner/apps_rw/org.example.fidosample/res/reg_req.json" +#define _AUTH_REQ_FILE_NAME "/home/owner/apps_rw/org.example.fidosample/res/auth_req.json" +#define _DEREG_REQ_FILE_NAME "/home/owner/apps_rw/org.example.fidosample/res/dereg_req.json" + +static char *json_reg = NULL; +static char *json_auth = NULL; +static char *json_dereg = NULL; + +typedef enum { + LOG_TYPE_UAF_REQ, + LOG_TYPE_UAF_RESP, + LOG_TYPE_REQ_FROM_SERVER_REG, + LOG_TYPE_REQ_FROM_SERVER_AUTH, + LOG_TYPE_REQ_FROM_SERVER_DEREG, + LOG_TYPE_RESP_TO_SERVER_REG, + LOG_TYPE_RESP_TO_SERVER_AUTH, + LOG_TYPE_RESP_TO_SERVER_DEREG +} log_type_e; + +#define LOG_FILE_NAME_MAX_LEN 5000 + +static void +__log_to_file(log_type_e tag, const char *str) +{ + struct timeval tv; + if (gettimeofday(&tv, NULL) < 0) + return; + + char *fn = calloc(1, LOG_FILE_NAME_MAX_LEN); + + switch (tag) { + + case LOG_TYPE_UAF_REQ: + snprintf(fn, LOG_FILE_NAME_MAX_LEN - 1, "%s%s_%ld.txt", app_get_data_path(), "UAF_REQ", tv.tv_sec); + break; + + case LOG_TYPE_UAF_RESP: + snprintf(fn, LOG_FILE_NAME_MAX_LEN - 1, "%s%s_%ld.txt", app_get_data_path(), "UAF_RESP", tv.tv_sec); + break; + + case LOG_TYPE_REQ_FROM_SERVER_REG: + snprintf(fn, LOG_FILE_NAME_MAX_LEN - 1, "%s%s_%ld.txt", app_get_data_path(), "REQ_FROM_SERVER_REG", tv.tv_sec); + break; + + case LOG_TYPE_REQ_FROM_SERVER_AUTH: + snprintf(fn, LOG_FILE_NAME_MAX_LEN - 1, "%s%s_%ld.txt", app_get_data_path(), "REQ_FROM_SERVER_AUTH", tv.tv_sec); + break; + + case LOG_TYPE_REQ_FROM_SERVER_DEREG: + snprintf(fn, LOG_FILE_NAME_MAX_LEN - 1, "%s%s_%ld.txt", app_get_data_path(), "REQ_FROM_SERVER_DEREG", tv.tv_sec); + break; + + case LOG_TYPE_RESP_TO_SERVER_REG: + snprintf(fn, LOG_FILE_NAME_MAX_LEN - 1, "%s%s_%ld.txt", app_get_data_path(), "RESP_TO_SERVER_REG", tv.tv_sec); + break; + + case LOG_TYPE_RESP_TO_SERVER_AUTH: + snprintf(fn, LOG_FILE_NAME_MAX_LEN - 1, "%s%s_%ld.txt", app_get_data_path(), "RESP_TO_SERVER_AUTH", tv.tv_sec); + break; + + case LOG_TYPE_RESP_TO_SERVER_DEREG: + snprintf(fn, LOG_FILE_NAME_MAX_LEN - 1, "%s%s_%ld.txt", app_get_data_path(), "RESP_TO_SERVER_DEREG", tv.tv_sec); + break; + + default: + snprintf(fn, LOG_FILE_NAME_MAX_LEN - 1, "%s_%ld.txt", app_get_data_path(), tv.tv_sec); + + } + + dlog_print(DLOG_INFO, "org.example.fidosample", "Log file name [%s]", fn); + + errno = 0; + + FILE *fp = fopen(fn, "wb"); + if (fp == NULL) { + dlog_print(DLOG_INFO, "org.example.fidosample", "fopen failed [%d]", errno); + return; + } + int len = fwrite(str, sizeof(char), strlen(str), fp); + dlog_print(DLOG_INFO, "org.example.fidosample", "%d bytes logged", len); + fclose(fp); +} + +static char* +__read(const char *file_name) +{ + FILE *file = fopen(file_name, "rb"); + if (file == NULL) + return NULL; + + fseek(file, 0, SEEK_END); + long size = ftell(file); + if (size <= 0) { + fclose(file); + return NULL; + } + + fseek(file, 0, SEEK_SET); + + char *json = calloc(1, size + 1); + int num_bytes = fread(json, size, 1, file); + if (num_bytes <= 0) { + free(json); + fclose(file); + return NULL; + } + + json[size] = 0; + + fclose(file); + + return json; + +} + +static void _response_cb(void *data, Evas_Object *obj, void *event_info) +{ + evas_object_del(data); +} + +static void create_popup(char *popup_str, appdata_s *ad) +{ + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "fido %s", popup_str); + + Evas_Object *popup = elm_popup_add(ad->win); + Evas_Object *btn; + + elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0); + evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_text_set(popup, popup_str); + + btn = elm_button_add(popup); + elm_object_style_set(btn, "popup"); + evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_text_set(btn, "OK"); + elm_object_part_content_set(popup, "button1", btn); + eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, eext_popup_back_cb, NULL); + evas_object_smart_callback_add(btn, "clicked", _response_cb, popup); + evas_object_show(popup); + + return; +} + +char* +get_error_code(fido_error_e error_code) +{ + + char *error_str = calloc(1, 128); + + if (error_code == FIDO_ERROR_NONE) + strcpy(error_str, "SUCCESS"); + else if (error_code == FIDO_ERROR_OUT_OF_MEMORY) + strcpy(error_str, "FIDO_ERROR_OUT_OF_MEMORY"); + else if (error_code == FIDO_ERROR_INVALID_PARAMETER) + strcpy(error_str, "FIDO_ERROR_INVALID_PARAMETER"); + else if (error_code == FIDO_ERROR_NO_DATA) + strcpy(error_str, "FIDO_ERROR_NO_DATA"); + else if (error_code == FIDO_ERROR_PERMISSION_DENIED) + strcpy(error_str, "FIDO_ERROR_PERMISSION_DENIED"); + else if (error_code == FIDO_ERROR_NOT_SUPPORTED) + strcpy(error_str, "FIDO_ERROR_NOT_SUPPORTED"); + else if (error_code == FIDO_ERROR_USER_ACTION_IN_PROGRESS) + strcpy(error_str, "FIDO_ERROR_USER_ACTION_IN_PROGRESS"); + else if (error_code == FIDO_ERROR_USER_CANCELLED) + strcpy(error_str, "FIDO_ERROR_USER_CANCELLED"); + else if (error_code == FIDO_ERROR_UNSUPPORTED_VERSION) + strcpy(error_str, "FIDO_ERROR_UNSUPPORTED_VERSION"); + else if (error_code == FIDO_ERROR_NO_SUITABLE_AUTHENTICATOR) + strcpy(error_str, "FIDO_ERROR_NO_SUITABLE_AUTHENTICATOR"); + else if (error_code == FIDO_ERROR_PROTOCOL_ERROR) + strcpy(error_str, "FIDO_ERROR_PROTOCOL_ERROR"); + else if (error_code == FIDO_ERROR_UNTRUSTED_FACET_ID) + strcpy(error_str, "FIDO_ERROR_UNTRUSTED_FACET_ID"); + else + strcpy(error_str, "FIDO_ERROR_UNKNOWN"); + return error_str; +} + +static void +__show_error(int tizen_error_code, appdata_s *app_data) +{ + char *error_string = get_error_code(tizen_error_code); + create_popup(error_string, app_data); + free(error_string); +} + +void fido_attestation_type_cb_list(fido_auth_attestation_type_e att_type, void *user_data) +{ + char *str = (char *) user_data; + + char tmp[1024] = {0,}; + sprintf(tmp, " | Attestation Type = [%d]", att_type); + strcat(str, tmp); +} + +static void +__print_authinfo(const fido_authenticator_h auth, appdata_s *ad) +{ + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "fido __print_authinfo"); + + char str[5000] = {0,}; + str[0] = '\0'; + strcpy(str, "DISCOVER RESPONSE"); + char tmp[1024] = {0,}; + + char *title = NULL; + fido_authenticator_get_title(auth, &title); + if (title != NULL) { + sprintf(tmp, " | Title = [%s]", title); + strcat(str, tmp); + } + free(title); + + char *aaid = NULL; + fido_authenticator_get_aaid(auth, &aaid); + if (aaid != NULL) { + sprintf(tmp, " | AAID = [%s]", aaid); + strcat(str, tmp); + } + free(aaid); + + char *description = NULL; + fido_authenticator_get_description(auth, &description); + if (description != NULL) { + sprintf(tmp, " | Description = [%s]", description); + strcat(str, tmp); + } + free(description); + + char *scheme = NULL; + fido_authenticator_get_assertion_scheme(auth, &scheme); + if (scheme != NULL) { + sprintf(tmp, " | Scheme = [%s]", scheme); + strcat(str, tmp); + } + free(scheme); + + fido_authenticator_foreach_attestation_type(auth, fido_attestation_type_cb_list, str); + + fido_auth_algo_e get_algo = -1; + fido_authenticator_get_algorithm(auth, &get_algo); + if (get_algo != -1) { + sprintf(tmp, " | Algo = [%d]", get_algo); + strcat(str, tmp); + } + + fido_auth_user_verify_type_e user_ver = -1; + fido_authenticator_get_verification_method(auth, &user_ver); + if (user_ver != -1) { + sprintf(tmp, " | Verification = [%d]", user_ver); + strcat(str, tmp); + } + + fido_auth_key_protection_type_e key_protection = -1; + fido_authenticator_get_key_protection_method(auth, &key_protection); + if (key_protection != -1) { + sprintf(tmp, " | Key Protection = [%d]", key_protection); + strcat(str, tmp); + } + + fido_auth_matcher_protection_type_e matcher_protection = -1; + fido_authenticator_get_matcher_protection_method(auth, &matcher_protection); + if (matcher_protection != -1) { + sprintf(tmp, " | Matcher Protection = [%d]", matcher_protection); + strcat(str, tmp); + } + + fido_auth_attachment_hint_e attachment_hint = -1; + fido_authenticator_get_attachment_hint(auth, &attachment_hint); + if (attachment_hint != -1) { + sprintf(tmp, " | Attachment Hint = [%d]", attachment_hint); + strcat(str, tmp); + } + + fido_auth_tc_display_type_e tc_discplay = -1; + fido_authenticator_get_tc_discplay(auth, &tc_discplay); + if (tc_discplay != -1) { + sprintf(tmp, " | Tc Display = [%d]", tc_discplay); + strcat(str, tmp); + } + + char *tc_display_type = NULL; + fido_authenticator_get_tc_display_type(auth, &tc_display_type); + if (tc_display_type != NULL) { + sprintf(tmp, " | Tc Display Type = [%s]", tc_display_type); + strcat(str, tmp); + } + free(tc_display_type); + + char *icon = NULL; + fido_authenticator_get_icon(auth, &icon); + if (icon != NULL) { + sprintf(tmp, " | Icon = [%s]", icon); + strcat(str, tmp); + } + free(icon); + + create_popup(str, ad); +} + +static void +auth_list_cb(const fido_authenticator_h auth, void *user_data) +{ + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "fido auth_list_cb"); + + appdata_s *ad = user_data; + __print_authinfo(auth, ad); +} + +void +start_discover(void *data, Evas_Object *obj, void *event_info) +{ + int ret = fido_foreach_authenticator(auth_list_cb, data); + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "fido_get_available_authenticators = [%d]", ret); + + if (ret != FIDO_ERROR_NONE) + __show_error(ret, (appdata_s *)data); + +} + +void +start_check_policy(void *data, Evas_Object *obj, void *event_info) +{ + bool is_supported = false; + int ret = fido_uaf_is_supported(json_reg, &is_supported); + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "fido_uaf_is_supported = [%d]", ret); + + char str[2048] = {0,}; + str[0] = '\0'; + + strcpy(str, "CHECK POLICY RESPONSE | "); + + if (ret != FIDO_ERROR_NONE) { + char *error_string = get_error_code(ret); + + sprintf(str, "[%s]", error_string); + create_popup(str, (appdata_s *) data); + free(error_string); + } else { + if (is_supported == true) + sprintf(str, "TRUE"); + else + sprintf(str, "FALSE"); + + create_popup(str, (appdata_s *) data); + } +} + +static void +_process_cb(fido_error_e tizen_error_code, const char *uaf_response, void *user_data) +{ + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "process response = [%d]", tizen_error_code); + + if (tizen_error_code == 0 && uaf_response != NULL) { + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "uaf response = %s", uaf_response); + + __log_to_file(LOG_TYPE_UAF_RESP, uaf_response); + + const int max_popup_str_len = strlen(uaf_response) + 500; + char *popup_str = calloc(1, max_popup_str_len); + + snprintf(popup_str, max_popup_str_len - 1, "UAF Response =%s", uaf_response); + + create_popup(popup_str, (appdata_s *) user_data); + free(popup_str); + } else { + __show_error(tizen_error_code, (appdata_s *)user_data); + } +} + +void +start_registration(void *data, Evas_Object *obj, void *event_info) +{ + if (json_reg != NULL) { + int ret = fido_uaf_get_response_message(json_reg, NULL, _process_cb, data); + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "fido_request_get_registration_response = [%d]", ret); + if (ret != FIDO_ERROR_NONE) + __show_error(ret, (appdata_s *)data); + } +} + +void +start_auth(void *data, Evas_Object *obj, void *event_info) +{ + if (json_auth != NULL) { + int ret = fido_uaf_get_response_message(json_auth, NULL, _process_cb, data); + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "fido_request_get_authentication_response = [%d]", ret); + + if (ret != FIDO_ERROR_NONE) + __show_error(ret, (appdata_s *)data); + } +} + +static void +_process_dereg_cb(fido_error_e tizen_error_code, const char *uaf_response, void *user_data) +{ + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "process response = [%d]", tizen_error_code); + + if (uaf_response) + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "uaf_response = [%s]", uaf_response); + else + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "uaf_response = [NULL]"); + + char *error_string = get_error_code(tizen_error_code); + create_popup(error_string, (appdata_s *) user_data); + free(error_string); +} + +void +start_de_registration(void *data, Evas_Object *obj, void *event_info) +{ + if (json_reg != NULL) { + int ret = fido_uaf_get_response_message(json_dereg, NULL, _process_dereg_cb, data); + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "fido_request_get_deregistration_response = [%d]", ret); + + if (ret != FIDO_ERROR_NONE) + __show_error(ret, (appdata_s *)data); + } +} + +static void +_process_cb_for_notify_pos(fido_error_e tizen_error_code, const char *uaf_response, void *user_data) +{ + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "process response = [%d]", tizen_error_code); + + if (tizen_error_code == 0) { + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "uaf response = %s", uaf_response); + + int ret = fido_uaf_set_server_result(FIDO_SERVER_STATUS_CODE_OK, uaf_response); + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "fido_uaf_set_server_result =[%d]", ret); + + char *error_string = get_error_code(tizen_error_code); + create_popup(error_string, (appdata_s *) user_data); + free(error_string); + } else { + __show_error(tizen_error_code, (appdata_s *)user_data); + } +} + +static void +_process_cb_for_notify_neg(fido_error_e tizen_error_code, const char *uaf_response, void *user_data) +{ + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "process response = [%d]", tizen_error_code); + + if (tizen_error_code == 0) { + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "uaf response = %s", uaf_response); + + int ret = fido_uaf_set_server_result(0, uaf_response); + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "fido_uaf_set_server_result =[%d]", ret); + + char *error_string = get_error_code(tizen_error_code); + create_popup(error_string, (appdata_s *) user_data); + free(error_string); + } else { + __show_error(tizen_error_code, (appdata_s *)user_data); + } +} + +void +start_notify_pos(void *data, Evas_Object *obj, void *event_info) +{ + if (json_reg != NULL) { + int ret = fido_uaf_get_response_message(json_reg, NULL, _process_cb_for_notify_pos, data); + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "fido_request_get_registration_response = [%d]", ret); + } +} + +void +start_notify_neg(void *data, Evas_Object *obj, void *event_info) +{ + if (json_reg != NULL) { + int ret = fido_uaf_get_response_message(json_reg, NULL, _process_cb_for_notify_neg, data); + dlog_print(DLOG_INFO, "org.tizen.Fidosample", "fido_request_get_registration_response = [%d]", ret); + } +} + +static void +win_delete_request_cb(void *data, Evas_Object *obj, void *event_info) +{ + /* To make your application go to background, + Call the elm_win_lower() instead + Evas_Object *win = (Evas_Object *) data; + elm_win_lower(win); */ + ui_app_exit(); +} + +static void +list_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + Elm_Object_Item *it = event_info; + elm_list_item_selected_set(it, EINA_FALSE); +} + +static Eina_Bool +naviframe_pop_cb(void *data, Elm_Object_Item *it) +{ + ui_app_exit(); + return EINA_FALSE; +} + +static void +create_list_view(appdata_s *ad) +{ + Evas_Object *list; + Evas_Object *btn; + Evas_Object *nf = ad->nf; + Elm_Object_Item *nf_it; + + /* List */ + list = elm_list_add(nf); + elm_list_mode_set(list, ELM_LIST_COMPRESS); + evas_object_smart_callback_add(list, "selected", list_selected_cb, NULL); + + /* Main Menu Items Here */ + elm_list_item_append(list, "Find Authenticator", NULL, NULL, start_discover, ad); + elm_list_item_append(list, "Check UAF Message Supported", NULL, NULL, start_check_policy, ad); + elm_list_item_append(list, "Registration", NULL, NULL, start_registration, ad); + elm_list_item_append(list, "Authentication", NULL, NULL, start_auth, ad); + elm_list_item_append(list, "De-Registration", NULL, NULL, start_de_registration, ad); + elm_list_item_append(list, "Set Server Result with Success", NULL, NULL, start_notify_pos, ad); + elm_list_item_append(list, "Set Server Result with Failure", NULL, NULL, start_notify_neg, ad); + + elm_list_go(list); + + /* This button is set for devices which doesn't have H/W back key. */ + btn = elm_button_add(nf); + elm_object_style_set(btn, "naviframe/end_btn/default"); + nf_it = elm_naviframe_item_push(nf, "FIDO Test App", btn, NULL, list, NULL); + elm_naviframe_item_pop_cb_set(nf_it, naviframe_pop_cb, ad->win); +} + +static void +create_base_gui(appdata_s *ad) +{ + /* + * Widget Tree + * Window + * - conform + * - layout main + * - naviframe */ + + /* Window */ + ad->win = elm_win_util_standard_add(PACKAGE, PACKAGE); + elm_win_conformant_set(ad->win, EINA_TRUE); + elm_win_autodel_set(ad->win, EINA_TRUE); + + if (elm_win_wm_rotation_supported_get(ad->win)) { + int rots[4] = { 0, 90, 180, 270 }; + elm_win_wm_rotation_available_rotations_set(ad->win, (const int *)(&rots), 4); + } + + evas_object_smart_callback_add(ad->win, "delete,request", win_delete_request_cb, NULL); + + /* Conformant */ + ad->conform = elm_conformant_add(ad->win); + evas_object_size_hint_weight_set(ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(ad->win, ad->conform); + evas_object_show(ad->conform); + + /* Indicator */ + /* elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW); */ + + /* Base Layout */ + ad->layout = elm_layout_add(ad->conform); + evas_object_size_hint_weight_set(ad->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_layout_theme_set(ad->layout, "layout", "application", "default"); + evas_object_show(ad->layout); + + elm_object_content_set(ad->conform, ad->layout); + + /* Naviframe */ + ad->nf = elm_naviframe_add(ad->layout); + create_list_view(ad); + elm_object_part_content_set(ad->layout, "elm.swallow.content", ad->nf); + eext_object_event_callback_add(ad->nf, EEXT_CALLBACK_BACK, eext_naviframe_back_cb, NULL); + eext_object_event_callback_add(ad->nf, EEXT_CALLBACK_MORE, eext_naviframe_more_cb, NULL); + + /* Show window after base gui is set up */ + evas_object_show(ad->win); +} + +static bool +app_create(void *data) +{ + /* Hook to take necessary actions before main event loop starts + Initialize UI resources and application's data + If this function returns true, the main loop of application starts + If this function returns false, the application is terminated */ + appdata_s *ad = data; + + elm_app_base_scale_set(1.8); + create_base_gui(ad); + + json_reg = __read(_REG_REQ_FILE_NAME); + json_auth = __read(_AUTH_REQ_FILE_NAME); + json_dereg = __read(_DEREG_REQ_FILE_NAME); + + return true; +} + +static void +app_control(app_control_h app_control, void *data) +{ + /* Handle the launch request. */ +} + +static void +app_pause(void *data) +{ + /* Take necessary actions when application becomes invisible. */ +} + +static void +app_resume(void *data) +{ + /* Take necessary actions when application becomes visible. */ +} + +static void +app_terminate(void *data) +{ + /* Release all resources. */ +} + +static void +ui_app_lang_changed(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_LANGUAGE_CHANGED*/ + char *locale = NULL; + system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &locale); + elm_language_set(locale); + free(locale); + return; +} + +static void +ui_app_orient_changed(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_DEVICE_ORIENTATION_CHANGED*/ + return; +} + +static void +ui_app_region_changed(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_REGION_FORMAT_CHANGED*/ +} + +static void +ui_app_low_battery(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_LOW_BATTERY*/ +} + +static void +ui_app_low_memory(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_LOW_MEMORY*/ +} + +int +main(int argc, char *argv[]) +{ + dlog_print(DLOG_ERROR, LOG_TAG, "Launching fido sample"); + + appdata_s ad = {0,}; + int ret = 0; + + ui_app_lifecycle_callback_s event_callback = {0,}; + app_event_handler_h handlers[5] = {NULL, }; + + event_callback.create = app_create; + event_callback.terminate = app_terminate; + event_callback.pause = app_pause; + event_callback.resume = app_resume; + event_callback.app_control = app_control; + + ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, ui_app_low_battery, &ad); + ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, ui_app_low_memory, &ad); + ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, ui_app_orient_changed, &ad); + ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, ui_app_lang_changed, &ad); + ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, ui_app_region_changed, &ad); + ui_app_remove_event_handler(handlers[APP_EVENT_LOW_MEMORY]); + + ret = ui_app_main(argc, argv, &event_callback, &ad); + if (ret != APP_ERROR_NONE) + dlog_print(DLOG_ERROR, LOG_TAG, "app_main() is failed. err = %d", ret); + + return ret; +} diff --git a/test/conformance_test/FIDOSample/tizen-manifest.xml b/test/conformance_test/FIDOSample/tizen-manifest.xml new file mode 100644 index 0000000..64c1b7e --- /dev/null +++ b/test/conformance_test/FIDOSample/tizen-manifest.xml @@ -0,0 +1,13 @@ + + + + + + fidosample.png + + + http://tizen.org/privilege/account.read + http://tizen.org/privilege/account.write + http://tizen.org/privilege/fido.client + + diff --git a/test/conformance_test/manasij.p12 b/test/conformance_test/manasij.p12 new file mode 100644 index 0000000000000000000000000000000000000000..83a03cec3c681a969cba79a1135fa9c55aaffecd GIT binary patch literal 2785 zcmY+Fc{J1w7sqGDF!n7TTSQ|E!*6VZQje_+50SA`_N^HiV_$~Gnrst|5@ijcv4-p_ zTgVWyCt0(VWkl-jJ?DL&=Y9Y9o_o&cd++`0d(Q<(tg{d>13+TUVq%etH;kuqfMMV~ z5^Exq#2Wh>M*}1V{{OQWn4lyE2tb1T{H-GD7{qZmll9IPKmA%uK`b)bM*F!-?85VfW~;?4Bw~z-=%bk`pL-9hx^yj(TiS>Z z@sul+8tI~W-7j&&hS9ktIHWx5dJUPY&@Fx^!@<8+sMSF4uI0!RgdQWW3{b0c9=eSV z{|ceTe$nnidmDQcub8;MfhgH_lWE>v^h@rJyf#iRHMOLO#(`3PEz8MgcHyW!Hhw=1 zUreT^0}l(w0UaYyry-=Xejv%R-;>cAwVrVnR~Ea&M|DpotWe@tCkGrcNnI7Ywkq6P z?&2V^$yL{$7zX;@{DgU;2#)bHwFI7g{$O}<%Vii4YS{g=vhS}44SuRzdlSEoso)zD zA|AHQV1(SlOQkD5oo6x8wZtq-I17EKHv{2E?YNA5-CI{T7#N*diL5%mRT5=^r6Kjd zZQR^bGvf9drT*kUd1OvYKPk&h#jn9K1SkR9V>+^ixDQiWcL#+7a^UGs-Il5{24N?{ z+wQKgJ2P6chEbC1GH8#y?C|vxJV2E#66L-@7}v5f8@Mj};qgTtaZ7V7sx>TP6Psb4 zLO;)D99x+J^0_FJxc@4)ig$(qV^0}64A^q$5@D0jb!hXu$zss)armr~hkIU1E<9h3 ztHfV7MJE*HFMg!#KbX8Y)V|inyU7v3=Qk1=aH?lVbU3H}4s4n3lCWT?G;a;a4V>7j zHooD$W*S*U$&%+xqv(_e&=fTND6*CYd-olhl`5DT>@UGN3Pw}k@!TOa3zF)TPfeqn z!|K^>f(Gjg9Z~kfRXT=)nBarCC^hZS+t-k~fau?$X5m9}i*bT*AZL*8ZxKM=ARj>D zADbV^2j#_h^p9WJ5TGPo8-NX(;QQsUT}%F%By{(=Z}%^XPjUeBJQAUTs~Qk>QJQXC!5X97BOC0&A zdB=Fo?5Mwz{L{O3wq7t4Y&YAG71W^iRCo8R^h%9e7ejdz5UBQnt9YSvt8a%XEHss4MU=Lh9A6(UccQp-U7F8CI? zN?;+3gOsgISUdx9EZ2uPTDxva|Kz@4^)V?>{KoEgpOj`0q!by_mi=O%?Q?IS`b&I` zW8X;HOt=Cfpg`*@{Ne>n6(`XWt$QIqx_8 zish7(5UCWYM2Yz4HJt?{+BZugKByXjUmM>c9S!>s~R^$zD(d! zMZzEd`T5{mU{F)Bn&2XUhwcYkTJ70kosEcmD#q5U-!?VYycES9D}zFql(263!hq2W z39Q&X#0Z?`AXd=5Y}D4}|LS^<`r*iZ9TEawpR88%rVH+u1~^5r4AQ z(~geMVLW8*)s4ObnAdGtkj^ zrY%VI^SjlY1`7eD$^nG7QB7YrysYgsdHvvGOdXFeWoEIBQy_GF0Z*NdtC($-pO7+d z46feU6_sy=iFjmSTYPYSxdpnn8zw9NIGwsm`2j|IhyFGJDkkHfxWTQsybkd?i`06K_5D-PO~2|gtT7NFWNLlfZSDr(O^DCy(_Xjiv*VLz8m-!x^ zuhwkn(RLzvJ|CmaHYQ;Mg*|mZj zcwZU}aAK?L-K@v0bMkCGqL^bjWe=8Lk&?o_Z}E<9sFwLT7=-k`Dwpr;p5&P?pljNE%~G2&7MG@ z30I1^#+0cLwJ_Ko9$MIy`g%>9>UP{CjjCzndd4!t(=