diff options
| author | Nicolas Clapies <nclapies@entrouvert.com> | 2004-04-01 15:29:34 +0000 |
|---|---|---|
| committer | Nicolas Clapies <nclapies@entrouvert.com> | 2004-04-01 15:29:34 +0000 |
| commit | 936fcf5056038270609ae15fee99f8e17c7ba0db (patch) | |
| tree | f328b006b73b3564d64810ba474b78e86e4e69f1 | |
| parent | 98c97ca26f67e67efea110ed49ccdc4fcc6952c9 (diff) | |
add function lasso_build_authnRequest_from_query
| -rw-r--r-- | lasso/Attic/protocols/single_sign_on_and_federation.c | 44 | ||||
| -rw-r--r-- | lasso/Attic/protocols/single_sign_on_and_federation.h | 5 |
2 files changed, 49 insertions, 0 deletions
diff --git a/lasso/Attic/protocols/single_sign_on_and_federation.c b/lasso/Attic/protocols/single_sign_on_and_federation.c index 702bf7ff..e9b4abe3 100644 --- a/lasso/Attic/protocols/single_sign_on_and_federation.c +++ b/lasso/Attic/protocols/single_sign_on_and_federation.c @@ -25,6 +25,50 @@ #include <lasso/protocols/single_sign_on_and_federation.h> +LassoNode *lasso_build_authnRequest_from_query(gboolean verifySignature, + const xmlChar *query, + const xmlChar *rsapub, + const xmlChar *rsakey) +{ + LassoNode *req; + GData *gd; + int result; + + if(verifySignature==TRUE){ + result = lasso_str_verify(query, rsapub, rsakey); + if(result==-1){ + return(NULL); + } + } + + gd = lasso_query_to_dict(query); + if(gd!=NULL){ + req = lasso_build_full_authnRequest(lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "RequestID"), 0), + lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "MajorVersion"), 0), + lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "MinorVersion"), 0), + lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "IssueInstance"), 0), + lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "ProviderID"), 0), + lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "NameIDPolicy"), 0), + lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "ForceAuthn"), 0), + lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "IsPassive"), 0), + lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, + "AssertionConsumerServiceID"), + 0), + NULL, // AuthnContextClassRef + NULL, // AuthnContextStatementRef + NULL, // AuthnContextComparison + lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "RelayState"), 0), + NULL, // ProxyCount + NULL, // IDPList + lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "consent"), 0)); + + g_datalist_clear(&gd); + return(req); + } + + return(NULL); +} + LassoNode *lasso_build_authnRequest(const xmlChar *providerID, const xmlChar *nameIDPolicy, const xmlChar *forceAuthn, diff --git a/lasso/Attic/protocols/single_sign_on_and_federation.h b/lasso/Attic/protocols/single_sign_on_and_federation.h index 594ecd8d..6fa974f4 100644 --- a/lasso/Attic/protocols/single_sign_on_and_federation.h +++ b/lasso/Attic/protocols/single_sign_on_and_federation.h @@ -31,6 +31,11 @@ extern "C" { #include <lasso/lasso.h> +LassoNode *lasso_build_authnRequest_from_query(gboolean verifySignature, + const xmlChar *query, + const xmlChar *rsapub, + const xmlChar *rsakey); + LassoNode *lasso_build_authnRequest(const xmlChar *providerID, const xmlChar *nameIDPolicy, const xmlChar *forceAuthn, |
