|
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 |
')
|