aboutsummaryrefslogtreecommitdiff
path: root/src/reclaim/plugin_rest_openid_connect.c
diff options
context:
space:
mode:
authorSchanzenbach, Martin <martin.schanzenbach@aisec.fraunhofer.de>2018-07-23 22:10:47 +0200
committerSchanzenbach, Martin <martin.schanzenbach@aisec.fraunhofer.de>2018-07-23 22:10:47 +0200
commit94c9fde8f4136432bb4cbc99ba5102702279df14 (patch)
treeddbad4ec76d0bcdc030a092c7e185c0dbe559a3a /src/reclaim/plugin_rest_openid_connect.c
parent5fb272d662eca0707b1a5c7747ae476f8157d332 (diff)
downloadgnunet-94c9fde8f4136432bb4cbc99ba5102702279df14.tar.gz
gnunet-94c9fde8f4136432bb4cbc99ba5102702279df14.zip
switch to gnsrecord reclaim records for OIDC clients
Diffstat (limited to 'src/reclaim/plugin_rest_openid_connect.c')
-rw-r--r--src/reclaim/plugin_rest_openid_connect.c65
1 files changed, 37 insertions, 28 deletions
diff --git a/src/reclaim/plugin_rest_openid_connect.c b/src/reclaim/plugin_rest_openid_connect.c
index 1846df901..99459427c 100644
--- a/src/reclaim/plugin_rest_openid_connect.c
+++ b/src/reclaim/plugin_rest_openid_connect.c
@@ -886,38 +886,47 @@ lookup_redirect_uri_result (void *cls,
886 struct GNUNET_CRYPTO_EcdsaPublicKey redirect_zone; 886 struct GNUNET_CRYPTO_EcdsaPublicKey redirect_zone;
887 887
888 handle->gns_op = NULL; 888 handle->gns_op = NULL;
889 if (1 != rd_count) 889 if (0 == rd_count)
890 { 890 {
891 handle->emsg = GNUNET_strdup("server_error"); 891 handle->emsg = GNUNET_strdup("server_error");
892 handle->edesc = GNUNET_strdup("Server cannot generate ticket, redirect uri not found."); 892 handle->edesc = GNUNET_strdup("Server cannot generate ticket, redirect uri not found.");
893 GNUNET_SCHEDULER_add_now (&do_redirect_error, handle); 893 GNUNET_SCHEDULER_add_now (&do_redirect_error, handle);
894 return; 894 return;
895 } 895 }
896 tmp = GNUNET_strdup (rd->data); 896 for (int i = 0; i < rd_count; i++)
897 pos = strrchr (tmp, 897 {
898 (unsigned char) '.'); 898 if (0 != strcmp (rd[0].data,
899 *pos = '\0'; 899 handle->oidc->redirect_uri))
900 handle->redirect_prefix = GNUNET_strdup (tmp); 900 continue;
901 tmp_key_str = pos + 1; 901 tmp = GNUNET_strdup (rd[0].data);
902 pos = strchr (tmp_key_str, 902 pos = strrchr (tmp,
903 (unsigned char) '/'); 903 (unsigned char) '.');
904 *pos = '\0'; 904 *pos = '\0';
905 handle->redirect_suffix = GNUNET_strdup (pos + 1); 905 handle->redirect_prefix = GNUNET_strdup (tmp);
906 906 tmp_key_str = pos + 1;
907 GNUNET_STRINGS_string_to_data (tmp_key_str, 907 pos = strchr (tmp_key_str,
908 strlen (tmp_key_str), 908 (unsigned char) '/');
909 &redirect_zone, 909 *pos = '\0';
910 sizeof (redirect_zone)); 910 handle->redirect_suffix = GNUNET_strdup (pos + 1);
911 911
912 GNUNET_NAMESTORE_zone_to_name (handle->namestore_handle, 912 GNUNET_STRINGS_string_to_data (tmp_key_str,
913 &handle->priv_key, 913 strlen (tmp_key_str),
914 &redirect_zone, 914 &redirect_zone,
915 &get_client_name_error, 915 sizeof (redirect_zone));
916 handle, 916
917 &get_client_name_result, 917 GNUNET_NAMESTORE_zone_to_name (handle->namestore_handle,
918 handle); 918 &handle->priv_key,
919 GNUNET_free (tmp); 919 &redirect_zone,
920 920 &get_client_name_error,
921 handle,
922 &get_client_name_result,
923 handle);
924 GNUNET_free (tmp);
925 return;
926 }
927 handle->emsg = GNUNET_strdup("server_error");
928 handle->edesc = GNUNET_strdup("Server cannot generate ticket, redirect uri not found.");
929 GNUNET_SCHEDULER_add_now (&do_redirect_error, handle);
921} 930}
922 931
923/** 932/**
@@ -940,9 +949,9 @@ oidc_ticket_issue_cb (void* cls,
940 return; 949 return;
941 } 950 }
942 handle->gns_op = GNUNET_GNS_lookup (handle->gns_handle, 951 handle->gns_op = GNUNET_GNS_lookup (handle->gns_handle,
943 handle->oidc->redirect_uri, 952 "+",
944 &handle->oidc->client_pkey, 953 &handle->oidc->client_pkey,
945 GNUNET_DNSPARSER_TYPE_TXT, 954 GNUNET_GNSRECORD_TYPE_RECLAIM_OIDC_REDIRECT,
946 GNUNET_GNS_LO_DEFAULT, 955 GNUNET_GNS_LO_DEFAULT,
947 &lookup_redirect_uri_result, 956 &lookup_redirect_uri_result,
948 handle); 957 handle);