in src/omxmlsec/saml/request.c [692:718]
AXIS2_EXTERN int AXIS2_CALL saml_request_sign(saml_request_t *request, axiom_node_t *node, const axutil_env_t *env)
{
axiom_node_t *n= NULL;
oxs_sign_part_t* sig_part = NULL;
axutil_array_list_t *sig_parts = NULL;
int size = 0, i = 0;
/*Get the sign parts defined in saml request sign context*/
sig_parts = oxs_sign_ctx_get_sign_parts(request->sig_ctx, env);
if(sig_parts)
{
/* for each sign part, set the node to be signed*/
size = axutil_array_list_size(sig_parts, env);
for(i = 0; i < size; i++)
{
sig_part = axutil_array_list_get(sig_parts, env, i);
oxs_sign_part_set_node(sig_part, env, node);
}
}
/*sign the node with the saml request sign info*/
oxs_xml_sig_sign(env, request->sig_ctx, node, &n);
/*Finally build KeyInfo*/
oxs_xml_key_info_build(env, n, oxs_sign_ctx_get_certificate(request->sig_ctx, env), OXS_KIBP_X509DATA_X509CERTIFICATE);
return AXIS2_SUCCESS;
}