Skip to content

subrahmanyaman/secure_element

 
 

Repository files navigation

Secure Element HAL Integration

Introduction

SE HAL is a dummy service which interacts with JCserver(Socket based java application) to forward APDU from Omapi service to SE applets. This document is based on testing VTS test cases which interact with vendor Hal service (strongBox/FiRa) to SE applet (keymaster/FiRa) through Omapi and SE HAL services.

Integration Steps (Keymaster Applet testing)

  • First follow building an AOSP and strongbox/ Omapi integration steps mentioned in the xTS Setup Guide for Keymint100
  • Checkout SE hal source code present at SE HAL in hardware/google location Add following code in device/google/cuttlefish/shared/config/device.mk
PRODUCT_PACKAGES += \
    [email protected] \
  • In device/google/cuttlefish/shared/config/manifest.xml
    <hal format="hidl">
        <name>android.hardware.secure_element</name>
        <transport>hwbinder</transport>
        <version>1.2</version>
        <interface>
            <name>ISecureElement</name>
            <instance>eSE1</instance>
        </interface>
    </hal>
  • In device/google/cuttlefish/shared/sepolicy/vendor/file_contexts
/vendor/bin/hw/android\.hardware\.secure_element@1\.2-service\.google  u:object_r:hal_secure_element_default_exec:s0
  • Add new file at device/google/cuttlefish/shared/sepolicy/vendor/hal_secure_element_google.te with following context
type hal_secure_element_google, domain;
hal_server_domain(hal_secure_element_google, hal_secure_element)

type hal_secure_element_google_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(hal_secure_element_google)

vndbinder_use(hal_secure_element_google)
get_prop(hal_secure_element_google, vendor_security_patch_level_prop);

allow hal_secure_element_google secure_element_service:service_manager find;

# Allow access to sockets
allow hal_secure_element_google self:tcp_socket { connect create write read getattr getopt setopt };
allow hal_secure_element_google port_type:tcp_socket name_connect;
allow hal_secure_element_google port:tcp_socket { name_connect };
allow hal_secure_element_google vendor_data_file:file { open read getattr };
#define IPADDR  "" /* Mention your machine's IP Address */
  • In system/sepolicy/public/hal_neverallows.te NOTE in self:global_capability_class_set { net_admin net_raw }; and }:tcp_socket *;
-hal_keymint_server
  • Build the AOSP and verify that all mentioned Binaries are present

    • [email protected]
    • Android.hardware.security.keymint-service.strongbox
    • SecureElement.apk
  • Build and Run the JCserver code present at JCserver and provisioned the Keymaster applet using Provisioning Tool Launch the emulator by $ launch_cvd --start_webrtc=true command

Execute VTS test

Follow section How to Execute VTS of xTS Setup Guide for Keymint100

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 100.0%