## Item ACLs

Item ACLs — Access control lists for keyring items.

## Synopsis

    typedef             MateKeyringAccessControl;
    typedef             MateKeyringApplicationRef;
    enum                MateKeyringAccessType;
    MateKeyringApplicationRef * mate_keyring_application_ref_new
                                                            (void);
    MateKeyringApplicationRef * mate_keyring_application_ref_copy
                                                            (const MateKeyringApplicationRef *app);
    void                mate_keyring_application_ref_free  (MateKeyringApplicationRef *app);
    MateKeyringAccessControl * mate_keyring_access_control_new
                                                            (const MateKeyringApplicationRef *application,
                                                             MateKeyringAccessType types_allowed);
    MateKeyringAccessControl * mate_keyring_access_control_copy
                                                            (MateKeyringAccessControl *ac);
    void                mate_keyring_access_control_free   (MateKeyringAccessControl *ac);
    GList *             mate_keyring_acl_copy              (GList *list);
    void                mate_keyring_acl_free              (GList *acl);
    char *              mate_keyring_item_ac_get_display_name
                                                            (MateKeyringAccessControl *ac);
    void                mate_keyring_item_ac_set_display_name
                                                            (MateKeyringAccessControl *ac,
                                                             const char *value);
    char *              mate_keyring_item_ac_get_path_name (MateKeyringAccessControl *ac);
    void                mate_keyring_item_ac_set_path_name (MateKeyringAccessControl *ac,
                                                             const char *value);
    MateKeyringAccessType  mate_keyring_item_ac_get_access_type
                                                            (MateKeyringAccessControl *ac);
    void                mate_keyring_item_ac_set_access_type
                                                            (MateKeyringAccessControl *ac,
                                                             const MateKeyringAccessType value);

## Description

Each item has an access control list, which specifies the applications that can read, write or delete an item. The read access applies only to reading the secret. All applications can read other parts of the item. ACLs are accessed and changed `mate_keyring_item_get_acl()` and `mate_keyring_item_set_acl()`.

## Details

### MateKeyringAccessControl

    typedef struct MateKeyringAccessControl MateKeyringAccessControl;

### MateKeyringApplicationRef

    typedef struct MateKeyringApplicationRef MateKeyringApplicationRef;

### enum MateKeyringAccessType

    typedef enum {
    	MATE_KEYRING_ACCESS_READ = 1<<0,
    	MATE_KEYRING_ACCESS_WRITE = 1<<1,
    	MATE_KEYRING_ACCESS_REMOVE = 1<<2
    } MateKeyringAccessType;

### mate_keyring_application_ref_new ()

    MateKeyringApplicationRef * mate_keyring_application_ref_new
                                                            (void);

Create a new application reference.

Returns : | A new MateKeyringApplicationRef pointer.

### mate_keyring_application_ref_copy ()

    MateKeyringApplicationRef * mate_keyring_application_ref_copy
                                                            (const MateKeyringApplicationRef *app);

Copy an application reference.

`app` : | A MateKeyringApplicationRef pointer
Returns : | A new MateKeyringApplicationRef pointer.

### mate_keyring_application_ref_free ()

    void                mate_keyring_application_ref_free  (MateKeyringApplicationRef *app);

Free an application reference.

`app` : | A MateKeyringApplicationRef pointer

### mate_keyring_access_control_new ()

    MateKeyringAccessControl * mate_keyring_access_control_new
                                                            (const MateKeyringApplicationRef *application,
                                                             MateKeyringAccessType types_allowed);

Create a new access control for an item. Combine the various access rights allowed.

`application` : | A MateKeyringApplicationRef pointer
`types_allowed` : | Access types allowed.
Returns : | The new MateKeyringAccessControl pointer. Use `mate_keyring_access_control_free()` to free the memory.

### mate_keyring_access_control_copy ()

    MateKeyringAccessControl * mate_keyring_access_control_copy
                                                            (MateKeyringAccessControl *ac);

Copy an access control for an item.

`ac` : | A MateKeyringAcessControl pointer
Returns : | The new MateKeyringAccessControl pointer. Use `mate_keyring_access_control_free()` to free the memory.

### mate_keyring_access_control_free ()

    void                mate_keyring_access_control_free   (MateKeyringAccessControl *ac);

Free an access control for an item.

`ac` : | A MateKeyringAccessControl pointer

### mate_keyring_acl_copy ()

    GList *             mate_keyring_acl_copy              (GList *list);

Copy an access control list.

`list` : | A list of MateKeyringAccessControl pointers.
Returns : | A new list of MateKeyringAccessControl items. Use `mate_keyring_acl_free()` to free the memory.

### mate_keyring_acl_free ()

    void                mate_keyring_acl_free              (GList *acl);

Free an access control list.

`acl` : | A list of MateKeyringAccessControl pointers.

### mate_keyring_item_ac_get_display_name ()

    char *              mate_keyring_item_ac_get_display_name
                                                            (MateKeyringAccessControl *ac);

Get the access control application's display name.

`ac` : | A MateKeyringAccessControl pointer.
Returns : | A newly allocated string containing the display name.

### mate_keyring_item_ac_set_display_name ()

    void                mate_keyring_item_ac_set_display_name
                                                            (MateKeyringAccessControl *ac,
                                                             const char *value);

Set the access control application's display name.

`ac` : | A MateKeyringAcccessControl pointer.
`value` : | The new application display name.

### mate_keyring_item_ac_get_path_name ()

    char *              mate_keyring_item_ac_get_path_name (MateKeyringAccessControl *ac);

Get the access control application's full path name.

`ac` : | A MateKeyringAccessControl pointer.
Returns : | A newly allocated string containing the display name.

### mate_keyring_item_ac_set_path_name ()

    void                mate_keyring_item_ac_set_path_name (MateKeyringAccessControl *ac,
                                                             const char *value);

Set the access control application's full path name.

`ac` : | A MateKeyringAccessControl pointer
`value` : | The new application full path.

### mate_keyring_item_ac_get_access_type ()

    MateKeyringAccessType  mate_keyring_item_ac_get_access_type
                                                            (MateKeyringAccessControl *ac);

Get the application access rights for the access control.

`ac` : | A MateKeyringAccessControl pointer.
Returns : | The access rights.

### mate_keyring_item_ac_set_access_type ()

    void                mate_keyring_item_ac_set_access_type
                                                            (MateKeyringAccessControl *ac,
                                                             const MateKeyringAccessType value);

Set the application access rights for the access control.

`ac` : | A MateKeyringAccessControl pointer.
`value` : | The new access rights.