type fingerprintd, domain, domain_deprecated;
type fingerprintd_exec, exec_type, file_type;

# fingerprintd
init_daemon_domain(fingerprintd)
binder_use(fingerprintd)

# need to find KeyStore and add self
allow fingerprintd fingerprintd_service:service_manager { add find };

# allow HAL module to read dir contents
allow fingerprintd fingerprintd_data_file:file { create_file_perms };

# allow HAL module to read/write/unlink contents of this dir
allow fingerprintd fingerprintd_data_file:dir rw_dir_perms;

# Need to add auth tokens to KeyStore
use_keystore(fingerprintd)
allow fingerprintd keystore:keystore_key { add_auth };

# For permissions checking
binder_call(fingerprintd, system_server);
allow fingerprintd permission_service:service_manager find;
