LassoAssertionQuery

## LassoAssertionQuery LassoAssertionQuery |

## Synopsis

    enum                LassoAssertionQueryRequestType;
    struct              LassoAssertionQuery;
    LassoAssertionQuery * lasso_assertion_query_new         (LassoServer *server);
    void                lasso_assertion_query_destroy       (LassoAssertionQuery *assertion_query);
    lasso_error_t       lasso_assertion_query_init_request  (LassoAssertionQuery *assertion_query,
                                                             char *remote_provider_id,
                                                             LassoHttpMethod http_method,
                                                             LassoAssertionQueryRequestType query_request_type);
    lasso_error_t       lasso_assertion_query_validate_request
                                                            (LassoAssertionQuery *assertion_query);
    lasso_error_t       lasso_assertion_query_build_request_msg
                                                            (LassoAssertionQuery *assertion_query);
    lasso_error_t       lasso_assertion_query_process_request_msg
                                                            (LassoAssertionQuery *assertion_query,
                                                             gchar *request_msg);
    lasso_error_t       lasso_assertion_query_build_response_msg
                                                            (LassoAssertionQuery *assertion_query);
    lasso_error_t       lasso_assertion_query_process_response_msg
                                                            (LassoAssertionQuery *assertion_query,
                                                             gchar *response_msg);
    lasso_error_t       lasso_assertion_query_add_attribute_request
                                                            (LassoAssertionQuery *assertion_query,
                                                             char *format,
                                                             char *name);
    LassoAssertionQueryRequestType lasso_assertion_query_get_request_type
                                                            (LassoAssertionQuery *assertion_query);

## Description

## Details

### enum LassoAssertionQueryRequestType

    typedef enum {
    	LASSO_ASSERTION_QUERY_REQUEST_TYPE_UNSET = 0,
    	LASSO_ASSERTION_QUERY_REQUEST_TYPE_ASSERTION_ID,
    	LASSO_ASSERTION_QUERY_REQUEST_TYPE_AUTHN,
    	LASSO_ASSERTION_QUERY_REQUEST_TYPE_ATTRIBUTE,
    	LASSO_ASSERTION_QUERY_REQUEST_TYPE_AUTHZ_DECISION,
    	LASSO_ASSERTION_QUERY_REQUEST_TYPE_LAST
    } LassoAssertionQueryRequestType;

Enumerate the existing kind of AssertionQuery requests.

`LASSO_ASSERTION_QUERY_REQUEST_TYPE_UNSET` | the unknown value
`LASSO_ASSERTION_QUERY_REQUEST_TYPE_ASSERTION_ID` | an AssertionID request, to retrieve an assertion by its ID.
`LASSO_ASSERTION_QUERY_REQUEST_TYPE_AUTHN` | an AuthnQuery request, which is used to request existing authentication assertions about a given subject from an Authentication Authority
`LASSO_ASSERTION_QUERY_REQUEST_TYPE_ATTRIBUTE` | an AttributeQuery, which is used to retrieve attribute an a principal.
`LASSO_ASSERTION_QUERY_REQUEST_TYPE_AUTHZ_DECISION` | an AuthzDecisionQuery, which is used to request authorisation to let a principal access a certain resource.
`LASSO_ASSERTION_QUERY_REQUEST_TYPE_LAST` |

### struct LassoAssertionQuery

    struct LassoAssertionQuery {
    	LassoProfile parent;
    };

### lasso_assertion_query_new ()

    LassoAssertionQuery * lasso_assertion_query_new         (LassoServer *server);

Creates a new LassoAssertionQuery.

`server` : | the LassoServer
Returns : | a newly created LassoAssertionQuery object; or NULL if an error occured

### lasso_assertion_query_destroy ()

    void                lasso_assertion_query_destroy       (LassoAssertionQuery *assertion_query);

Destroys a LassoAssertionQuery object.

`assertion_query` : | a LassoAssertionQuery

### lasso_assertion_query_init_request ()

    lasso_error_t       lasso_assertion_query_init_request  (LassoAssertionQuery *assertion_query,
                                                             char *remote_provider_id,
                                                             LassoHttpMethod http_method,
                                                             LassoAssertionQueryRequestType query_request_type);

Initializes a new Assertion Query Request. For the AssertionID request type, the remote_provider_id is mandatory, for all other kind of request it is optional if we can find a provider supporting the associated role, i.e. IDP; authentication, attribute and authorization authority.

`assertion_query` : | a LassoAssertionQuery
`remote_provider_id` : | the providerID of the remote provider. [allow-none]
`http_method` : | if set, then it get the protocol profile in metadata corresponding of this HTTP request method.
`query_request_type` : | the type of request.
Returns : | 0 on success; or a negative value otherwise.

### lasso_assertion_query_validate_request ()

    lasso_error_t       lasso_assertion_query_validate_request
                                                            (LassoAssertionQuery *assertion_query);

Processes a Assertion query or request; caller must add assertions to the response afterwards.

`assertion_query` : | a LassoAssertionQuery
Returns : | 0 on success; or a negative value otherwise.

### lasso_assertion_query_build_request_msg ()

    lasso_error_t       lasso_assertion_query_build_request_msg
                                                            (LassoAssertionQuery *assertion_query);

Build an Assertion Query profile request message.

`assertion_query` : | a LassoAssertionQuery
Returns : | 0 on success; or a negative value otherwise.

### lasso_assertion_query_process_request_msg ()

    lasso_error_t       lasso_assertion_query_process_request_msg
                                                            (LassoAssertionQuery *assertion_query,
                                                             gchar *request_msg);

Processes a Assertion query or request message. Rebuilds a request object from the message and check its signature.

`assertion_query` : | a LassoAssertionQuery
`request_msg` : | the Assertion query or request message
Returns : | 0 on success; or a negative value otherwise.

### lasso_assertion_query_build_response_msg ()

    lasso_error_t       lasso_assertion_query_build_response_msg
                                                            (LassoAssertionQuery *assertion_query);

Builds the Response message.

`assertion_query` : | a LassoAssertionQuery
Returns : | 0 on success; or a negative value otherwise.

### lasso_assertion_query_process_response_msg ()

    lasso_error_t       lasso_assertion_query_process_response_msg
                                                            (LassoAssertionQuery *assertion_query,
                                                             gchar *response_msg);

Parses the response message and builds the corresponding response object.

`assertion_query` : | a LassoAssertionQuery
`response_msg` : | the response message
Returns : | 0 on success; or a negative value otherwise.

### lasso_assertion_query_add_attribute_request ()

    lasso_error_t       lasso_assertion_query_add_attribute_request
                                                            (LassoAssertionQuery *assertion_query,
                                                             char *format,
                                                             char *name);

Append a new attribute designator to the current attribute request.

`assertion_query` : | a LassoAssertionQuery object
`attribute_format` : | the attribute designator format
`attribute_name` : | the attribute designator name
Returns : | 0 if successful, an error code otherwise.

### lasso_assertion_query_get_request_type ()

    LassoAssertionQueryRequestType lasso_assertion_query_get_request_type
                                                            (LassoAssertionQuery *assertion_query);

Return the type of the last processed request.

`assertion_query` : | a LassoAssertionQuery object
Returns : | a LassoAssertionQueryRequestType value