summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Clapies <nclapies@entrouvert.com>2004-03-29 12:51:06 +0000
committerNicolas Clapies <nclapies@entrouvert.com>2004-03-29 12:51:06 +0000
commit66992f2b997d1d423be9ab469460ccd22d1979c4 (patch)
treec866c7d3ec7580a9d7e859a91ad7063e97ce7032
parent9bdbe6d9375d7506873f4ad77847fcf507603b2d (diff)
initial version
-rw-r--r--lasso/Attic/protocols/Makefile.am25
-rw-r--r--lasso/Attic/protocols/single_sign_on_and_federation.c137
-rw-r--r--lasso/Attic/protocols/single_sign_on_and_federation.h20
3 files changed, 182 insertions, 0 deletions
diff --git a/lasso/Attic/protocols/Makefile.am b/lasso/Attic/protocols/Makefile.am
new file mode 100644
index 00000000..572e8292
--- /dev/null
+++ b/lasso/Attic/protocols/Makefile.am
@@ -0,0 +1,25 @@
+liblassoincludedir = $(includedir)/lasso/protocols
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/lasso \
+ $(LASSO_DEFINES) \
+ $(GLIB_CFLAGS) \
+ $(LIBXSLT_CFLAGS) \
+ $(LIBXML_CFLAGS) \
+ $(XMLSEC1_CFLAGS) \
+ -DG_LOG_DOMAIN=\"lasso\"
+
+noinst_LTLIBRARIES = liblasso-protocols.la
+
+liblasso_protocols_la_SOURCES = \
+ single_sign_on_and_federation.c \
+ logout.c \
+ federation_termination_notification.c \
+ register_name_identifier.c
+
+liblassoinclude_HEADERS = \
+ single_sign_on_and_federation.h \
+ logout.h \
+ federation_termination_notification.h \
+ register_name_identifier.h \ No newline at end of file
diff --git a/lasso/Attic/protocols/single_sign_on_and_federation.c b/lasso/Attic/protocols/single_sign_on_and_federation.c
new file mode 100644
index 00000000..13c7a6dc
--- /dev/null
+++ b/lasso/Attic/protocols/single_sign_on_and_federation.c
@@ -0,0 +1,137 @@
+#include <lasso/protocols/single_sign_on_and_federation.h>
+
+xmlChar *lasso_build_url_encoded_message_authnRequest(const char *metadata,
+ const char *nameIDPolicy,
+ const char *isPassive,
+ const char *forceAuthn,
+ const char *assertionConsumerServiceID,
+ const char **authnContextClassRefs,
+ const char **authnContextStatementRefs,
+ const char *authnContextComparison,
+ const char *relayState,
+ const char *proxyCount,
+ const char **idpList,
+ const char *consent)
+{
+ const char *protocolProfile = "artifact";
+
+ LassoNode *request;
+
+ xmlChar *authority = "https://idpprovider.com";
+ xmlChar *query;
+
+ // build AuthnRequest class
+ request = lasso_lib_authn_request_new();
+
+ lasso_samlp_request_abstract_set_requestID(LASSO_SAMLP_REQUEST_ABSTRACT(request),
+ (const xmlChar *)lasso_build_unique_id(32));
+ lasso_samlp_request_abstract_set_minorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(request),
+ lassoLibMinorVersion);
+ lasso_samlp_request_abstract_set_issueInstance(LASSO_SAMLP_REQUEST_ABSTRACT(request),
+ lasso_get_current_time());
+ lasso_samlp_request_abstract_set_majorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(request),
+ lassoLibMajorVersion);
+
+ lasso_lib_authn_request_set_providerID(LASSO_LIB_AUTHN_REQUEST(request),
+ "providerid.com");
+
+ if(nameIDPolicy){
+ lasso_lib_authn_request_set_nameIDPolicy(LASSO_LIB_AUTHN_REQUEST(request), nameIDPolicy);
+ }
+
+ if(isPassive){
+ lasso_lib_authn_request_set_isPassive(LASSO_LIB_AUTHN_REQUEST(request), isPassive);
+ }
+
+ if(forceAuthn){
+ lasso_lib_authn_request_set_forceAuthn(LASSO_LIB_AUTHN_REQUEST(request), forceAuthn);
+ }
+
+ if(protocolProfile){
+ lasso_lib_authn_request_set_protocolProfile(LASSO_LIB_AUTHN_REQUEST(request), protocolProfile);
+ }
+
+ if(assertionConsumerServiceID){
+ lasso_lib_authn_request_set_assertionConsumerServiceID(LASSO_LIB_AUTHN_REQUEST(request),
+ assertionConsumerServiceID);
+ }
+
+ if(relayState!=NULL){
+ lasso_lib_authn_request_set_providerID(LASSO_LIB_AUTHN_REQUEST(request), relayState);
+ }
+
+ if(consent!=NULL){
+ lasso_lib_authn_request_set_providerID(LASSO_LIB_AUTHN_REQUEST(request), consent);
+ }
+
+ // url-encode the request
+ //printf("%s\n", lasso_str_sign(lasso_node_url_encode(lareq), xmlSecTransformRsaSha1Id, "rsakey.pem"));
+
+
+
+ return lasso_node_url_encode(request);
+
+}
+
+
+LassoNode *lasso_build_authnRequest(const char *providerID,
+ const char *nameIDPolicy,
+ const char *isPassive,
+ const char *forceAuthn,
+ const char *assertionConsumerServiceID,
+ const char **authnContextClassRefs,
+ const char **authnContextStatementRefs,
+ const char *authnContextComparison,
+ const char *relayState,
+ const char *proxyCount,
+ const char **idpList,
+ const char *consent)
+{
+ LassoNode *request;
+
+ // build AuthnRequest class
+ request = lasso_lib_authn_request_new();
+
+ lasso_samlp_request_abstract_set_requestID(LASSO_SAMLP_REQUEST_ABSTRACT(request),
+ (const xmlChar *)lasso_build_unique_id(32));
+ lasso_samlp_request_abstract_set_minorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(request),
+ lassoLibMinorVersion);
+ lasso_samlp_request_abstract_set_issueInstance(LASSO_SAMLP_REQUEST_ABSTRACT(request),
+ lasso_get_current_time());
+ lasso_samlp_request_abstract_set_majorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(request),
+ lassoLibMajorVersion);
+
+ lasso_lib_authn_request_set_providerID(LASSO_LIB_AUTHN_REQUEST(request),
+ "providerid.com");
+
+ if(nameIDPolicy){
+ lasso_lib_authn_request_set_nameIDPolicy(LASSO_LIB_AUTHN_REQUEST(request), nameIDPolicy);
+ }
+
+ if(isPassive){
+ lasso_lib_authn_request_set_isPassive(LASSO_LIB_AUTHN_REQUEST(request), isPassive);
+ }
+
+ if(forceAuthn){
+ lasso_lib_authn_request_set_forceAuthn(LASSO_LIB_AUTHN_REQUEST(request), forceAuthn);
+ }
+
+ if(protocolProfile){
+ lasso_lib_authn_request_set_protocolProfile(LASSO_LIB_AUTHN_REQUEST(request), protocolProfile);
+ }
+
+ if(assertionConsumerServiceID){
+ lasso_lib_authn_request_set_assertionConsumerServiceID(LASSO_LIB_AUTHN_REQUEST(request),
+ assertionConsumerServiceID);
+ }
+
+ if(relayState!=NULL){
+ lasso_lib_authn_request_set_providerID(LASSO_LIB_AUTHN_REQUEST(request), relayState);
+ }
+
+ if(consent!=NULL){
+ lasso_lib_authn_request_set_providerID(LASSO_LIB_AUTHN_REQUEST(request), consent);
+ }
+
+ return(request);
+}
diff --git a/lasso/Attic/protocols/single_sign_on_and_federation.h b/lasso/Attic/protocols/single_sign_on_and_federation.h
new file mode 100644
index 00000000..eb5183a6
--- /dev/null
+++ b/lasso/Attic/protocols/single_sign_on_and_federation.h
@@ -0,0 +1,20 @@
+#ifndef SINGLE_SIGN_ON_AND_FEDERATION_H
+#define SINGLE_SIGN_ON_AND_FEDERATION_H
+
+#include <lasso/lasso.h>
+
+xmlChar *lasso_build_url_encoded_message_authnRequest(const char *,
+ const char *,
+ const char *,
+ const char *,
+ const char *,
+ const char *,
+ const char **,
+ const char **,
+ const char *,
+ const char *,
+ const char *,
+ const char **,
+ const char *);
+
+#endif