Chris PeBenito 9401ae1
## <summary>Policy for GNU Privacy Guard and related programs.</summary>
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
############################################################
Chris PeBenito 9401ae1
## <summary>
Dominick Grift 6e6c3e2
##	Role access for gpg.
Chris PeBenito 9401ae1
## </summary>
Chris PeBenito 9401ae1
## <param name="role">
Chris PeBenito 9401ae1
##	<summary>
Dominick Grift 6e6c3e2
##	Role allowed access.
Chris PeBenito 9401ae1
##	</summary>
Chris PeBenito 9401ae1
## </param>
Chris PeBenito 9401ae1
## <param name="domain">
Chris PeBenito 9401ae1
##	<summary>
Dominick Grift 6e6c3e2
##	User domain for the role.
Chris PeBenito 9401ae1
##	</summary>
Chris PeBenito 9401ae1
## </param>
Chris PeBenito 9401ae1
#
Chris PeBenito 9401ae1
interface(`gpg_role',`
Chris PeBenito 9401ae1
	gen_require(`
Dominick Grift 6e6c3e2
		attribute_role gpg_roles, gpg_agent_roles, gpg_helper_roles, gpg_pinentry_roles;
Dominick Grift 6e6c3e2
		type gpg_t, gpg_exec_t, gpg_agent_t;
Dominick Grift 6e6c3e2
		type gpg_agent_exec_t, gpg_agent_tmp_t, gpg_helper_t;
Dominick Grift 031af06
		type gpg_pinentry_t, gpg_pinentry_tmp_t, gpg_secret_t;
Chris PeBenito 9401ae1
	')
Chris PeBenito 9401ae1
Dominick Grift 6e6c3e2
	roleattribute $1 gpg_roles;
Dominick Grift 6e6c3e2
	roleattribute $1 gpg_agent_roles;
Dominick Grift 6e6c3e2
	roleattribute $1 gpg_helper_roles;
Dominick Grift 6e6c3e2
	roleattribute $1 gpg_pinentry_roles;
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
	domtrans_pattern($2, gpg_exec_t, gpg_t)
Dominick Grift 6e6c3e2
	domtrans_pattern($2, gpg_agent_exec_t, gpg_agent_t)
Chris PeBenito 9401ae1
Dominick Grift 6e6c3e2
	allow $2 { gpg_t gpg_agent_t gpg_helper_t gpg_pinentry_t }:process { ptrace signal_perms };
Dominick Grift 6e6c3e2
	ps_process_pattern($2, { gpg_t gpg_agent_t gpg_helper_t gpg_pinentry_t })
Chris PeBenito 9401ae1
Dominick Grift cd4a48b
	allow gpg_pinentry_t $2:process signull;
Chris PeBenito 9401ae1
	allow gpg_helper_t $2:fd use;
Dominick Grift 6e6c3e2
	allow { gpg_t gpg_agent_t gpg_helper_t gpg_pinentry_t } $2:fifo_file { read write };
Chris PeBenito 9401ae1
Dominick Grift 031af06
	allow $2 { gpg_agent_tmp_t gpg_secret_t }:dir { manage_dir_perms relabel_dir_perms };
Dominick Grift 031af06
	allow $2 { gpg_agent_tmp_t gpg_secret_t }:file { manage_file_perms relabel_file_perms };
Dominick Grift 031af06
	allow $2 gpg_secret_t:lnk_file { manage_lnk_file_perms relabel_lnk_file_perms };
Dominick Grift 031af06
	allow $2 { gpg_agent_tmp_t gpg_pinentry_tmp_t gpg_secret_t }:sock_file { manage_sock_file_perms relabel_sock_file_perms };
Dominick Grift 031af06
	filetrans_pattern($2, gpg_secret_t, gpg_agent_tmp_t, sock_file, "log-socket")
Dominick Grift 031af06
	userdom_user_home_dir_filetrans($2, gpg_secret_t, dir, ".gnupg")
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
	optional_policy(`
Chris PeBenito 9401ae1
		gpg_pinentry_dbus_chat($2)
Chris PeBenito 9401ae1
	')
Chris PeBenito 9401ae1
')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
########################################
Chris PeBenito 9401ae1
## <summary>
Dominick Grift 6e6c3e2
##	Execute the gpg in the gpg domain.
Chris PeBenito 9401ae1
## </summary>
Chris PeBenito 9401ae1
## <param name="domain">
Chris PeBenito 9401ae1
##	<summary>
Chris PeBenito 9401ae1
##	Domain allowed to transition.
Chris PeBenito 9401ae1
##	</summary>
Chris PeBenito 9401ae1
## </param>
Chris PeBenito 9401ae1
#
Chris PeBenito 9401ae1
interface(`gpg_domtrans',`
Chris PeBenito 9401ae1
	gen_require(`
Chris PeBenito 9401ae1
		type gpg_t, gpg_exec_t;
Chris PeBenito 9401ae1
	')
Chris PeBenito 9401ae1
Dominick Grift 6e6c3e2
	corecmd_search_bin($1)
Chris PeBenito 9401ae1
	domtrans_pattern($1, gpg_exec_t, gpg_t)
Chris PeBenito 9401ae1
')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
########################################
Chris PeBenito 9401ae1
## <summary>
Dominick Grift 6e6c3e2
##	Execute the gpg in the caller domain.
Chris PeBenito 9401ae1
## </summary>
Chris PeBenito 9401ae1
## <param name="domain">
Chris PeBenito 9401ae1
##	<summary>
Dominick Grift 6e6c3e2
##	Domain allowed access.
Chris PeBenito 9401ae1
##	</summary>
Chris PeBenito 9401ae1
## </param>
Chris PeBenito 9401ae1
#
Chris PeBenito 9401ae1
interface(`gpg_exec',`
Chris PeBenito 9401ae1
	gen_require(`
Chris PeBenito 9401ae1
		type gpg_exec_t;
Chris PeBenito 9401ae1
	')
Chris PeBenito 9401ae1
Dominick Grift 6e6c3e2
	corecmd_search_bin($1)
Chris PeBenito 9401ae1
	can_exec($1, gpg_exec_t)
Chris PeBenito 9401ae1
')
Chris PeBenito 9401ae1
Dominick Grift 7ac5b8c
########################################
Dominick Grift 7ac5b8c
## <summary>
Dominick Grift 7ac5b8c
##	Execute gpg in a specified domain.
Dominick Grift 7ac5b8c
## </summary>
Dominick Grift 7ac5b8c
## <desc>
Dominick Grift 7ac5b8c
##	

Dominick Grift 7ac5b8c
##	Execute gpg in a specified domain.
Dominick Grift 7ac5b8c
##	

Dominick Grift 7ac5b8c
##	

Dominick Grift 7ac5b8c
##	No interprocess communication (signals, pipes,
Dominick Grift 7ac5b8c
##	etc.) is provided by this interface since
Dominick Grift 7ac5b8c
##	the domains are not owned by this module.
Dominick Grift 7ac5b8c
##	

Dominick Grift 7ac5b8c
## </desc>
Dominick Grift 7ac5b8c
## <param name="source_domain">
Dominick Grift 7ac5b8c
##	<summary>
Dominick Grift 7ac5b8c
##	Domain allowed to transition.
Dominick Grift 7ac5b8c
##	</summary>
Dominick Grift 7ac5b8c
## </param>
Dominick Grift 7ac5b8c
## <param name="target_domain">
Dominick Grift 7ac5b8c
##	<summary>
Dominick Grift 7ac5b8c
##	Domain to transition to.
Dominick Grift 7ac5b8c
##	</summary>
Dominick Grift 7ac5b8c
## </param>
Dominick Grift 7ac5b8c
#
Dominick Grift 7ac5b8c
interface(`gpg_spec_domtrans',`
Dominick Grift 7ac5b8c
	gen_require(`
Dominick Grift 7ac5b8c
		type gpg_exec_t;
Dominick Grift 7ac5b8c
	')
Dominick Grift 7ac5b8c
Dominick Grift 7ac5b8c
	corecmd_search_bin($1)
Dominick Grift 7ac5b8c
	domain_auto_trans($1, gpg_exec_t, $2)
Dominick Grift 7ac5b8c
')
Dominick Grift 7ac5b8c
Dominick Grift 69779d5
######################################
Dominick Grift 69779d5
## <summary>
Dominick Grift 7ac5b8c
##	Execute gpg in the gpg web domain.  (Deprecated)
Dominick Grift 69779d5
## </summary>
Dominick Grift 69779d5
## <param name="domain">
Dominick Grift 69779d5
##	<summary>
Dominick Grift 69779d5
##	Domain allowed to transition.
Dominick Grift 69779d5
##	</summary>
Dominick Grift 69779d5
## </param>
Dominick Grift 69779d5
#
Dominick Grift 69779d5
interface(`gpg_domtrans_web',`
Dominick Grift 7ac5b8c
	refpolicywarn(`$0($*) has been deprecated.')
Dominick Grift 7ac5b8c
')
Dominick Grift 7ac5b8c
Dominick Grift 7ac5b8c
######################################
Dominick Grift 7ac5b8c
## <summary>
Dominick Grift ff5b568
##	Make gpg executable files an
Dominick Grift 7ac5b8c
##	entrypoint for the specified domain.
Dominick Grift 7ac5b8c
## </summary>
Dominick Grift 7ac5b8c
## <param name="domain">
Dominick Grift ff5b568
##	<summary>
Dominick Grift ff5b568
##	The domain for which gpg_exec_t is an entrypoint.
Dominick Grift ff5b568
##	</summary>
Dominick Grift 7ac5b8c
## </param>
Dominick Grift 7ac5b8c
#
Dominick Grift 7ac5b8c
interface(`gpg_entry_type',`
Dominick Grift 69779d5
	gen_require(`
Dominick Grift 7ac5b8c
		type gpg_exec_t;
Dominick Grift 69779d5
	')
Dominick Grift 69779d5
Dominick Grift 7ac5b8c
	domain_entry_file($1, gpg_exec_t)
Dominick Grift 69779d5
')
Dominick Grift 69779d5
Chris PeBenito 9401ae1
########################################
Chris PeBenito 9401ae1
## <summary>
Dominick Grift 6e6c3e2
##	Send generic signals to gpg.
Chris PeBenito 9401ae1
## </summary>
Chris PeBenito 9401ae1
## <param name="domain">
Chris PeBenito 9401ae1
##	<summary>
Chris PeBenito 9401ae1
##	Domain allowed access.
Chris PeBenito 9401ae1
##	</summary>
Chris PeBenito 9401ae1
## </param>
Chris PeBenito 9401ae1
#
Chris PeBenito 9401ae1
interface(`gpg_signal',`
Chris PeBenito 9401ae1
	gen_require(`
Chris PeBenito 9401ae1
		type gpg_t;
Chris PeBenito 9401ae1
	')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
	allow $1 gpg_t:process signal;
Chris PeBenito 9401ae1
')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
########################################
Chris PeBenito 9401ae1
## <summary>
Dominick Grift 6e6c3e2
##	Read and write gpg agent pipes.
Chris PeBenito 9401ae1
## </summary>
Chris PeBenito 9401ae1
## <param name="domain">
Chris PeBenito 9401ae1
##	<summary>
Chris PeBenito 9401ae1
##	Domain allowed access.
Chris PeBenito 9401ae1
##	</summary>
Chris PeBenito 9401ae1
## </param>
Chris PeBenito 9401ae1
#
Chris PeBenito 9401ae1
interface(`gpg_rw_agent_pipes',`
Chris PeBenito 9401ae1
	gen_require(`
Chris PeBenito 9401ae1
		type gpg_agent_t;
Chris PeBenito 9401ae1
	')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
	allow $1 gpg_agent_t:fifo_file rw_fifo_file_perms;
Chris PeBenito 9401ae1
')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
########################################
Chris PeBenito 9401ae1
## <summary>
Dominick Grift 6e6c3e2
##	Send messages to and from gpg
Dominick Grift 6e6c3e2
##	pinentry over DBUS.
Chris PeBenito 9401ae1
## </summary>
Chris PeBenito 9401ae1
## <param name="domain">
Chris PeBenito 9401ae1
##	<summary>
Chris PeBenito 9401ae1
##	Domain allowed access.
Chris PeBenito 9401ae1
##	</summary>
Chris PeBenito 9401ae1
## </param>
Chris PeBenito 9401ae1
#
Chris PeBenito 9401ae1
interface(`gpg_pinentry_dbus_chat',`
Chris PeBenito 9401ae1
	gen_require(`
Chris PeBenito 9401ae1
		type gpg_pinentry_t;
Chris PeBenito 9401ae1
		class dbus send_msg;
Chris PeBenito 9401ae1
	')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
	allow $1 gpg_pinentry_t:dbus send_msg;
Chris PeBenito 9401ae1
	allow gpg_pinentry_t $1:dbus send_msg;
Chris PeBenito 9401ae1
')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
########################################
Chris PeBenito 9401ae1
## <summary>
Dominick Grift 6e6c3e2
##	List gpg user secrets.
Chris PeBenito 9401ae1
## </summary>
Chris PeBenito 9401ae1
## <param name="domain">
Chris PeBenito 9401ae1
##	<summary>
Chris PeBenito 9401ae1
##	Domain allowed access.
Chris PeBenito 9401ae1
##	</summary>
Chris PeBenito 9401ae1
## </param>
Chris PeBenito 9401ae1
#
Chris PeBenito 9401ae1
interface(`gpg_list_user_secrets',`
Chris PeBenito 9401ae1
	gen_require(`
Chris PeBenito 9401ae1
		type gpg_secret_t;
Chris PeBenito 9401ae1
	')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
	list_dirs_pattern($1, gpg_secret_t, gpg_secret_t)
Chris PeBenito 9401ae1
	userdom_search_user_home_dirs($1)
Chris PeBenito 9401ae1
')