[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnunet] 134/171: -add api impl for revocation
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnunet] 134/171: -add api impl for revocation |
Date: |
Thu, 04 Jan 2018 16:10:42 +0100 |
This is an automated email from the git hooks/post-receive script.
martin-schanzenbach pushed a commit to branch master
in repository gnunet.
commit f12a22a2a9b6d71f0fc9d24940e77d84d6568da0
Author: Schanzenbach, Martin <address@hidden>
AuthorDate: Sat Oct 7 11:08:04 2017 +0200
-add api impl for revocation
---
.../gnunet-service-identity-provider.c | 2 +-
src/identity-provider/identity_provider.h | 2 +-
src/identity-provider/identity_provider_api.c | 107 +++++++++++++++++++--
src/include/gnunet_identity_provider_service.h | 2 +-
4 files changed, 104 insertions(+), 9 deletions(-)
diff --git a/src/identity-provider/gnunet-service-identity-provider.c
b/src/identity-provider/gnunet-service-identity-provider.c
index b4cf154b4..f9d3f3f92 100644
--- a/src/identity-provider/gnunet-service-identity-provider.c
+++ b/src/identity-provider/gnunet-service-identity-provider.c
@@ -1768,7 +1768,7 @@ attr_store_cont (void *cls,
{
struct AttributeStoreHandle *as_handle = cls;
struct GNUNET_MQ_Envelope *env;
- struct AttributeStoreResponseMessage *acr_msg;
+ struct AttributeStoreResultMessage *acr_msg;
if (GNUNET_SYSERR == success)
{
diff --git a/src/identity-provider/identity_provider.h
b/src/identity-provider/identity_provider.h
index cb0f1591d..be9fdc6f5 100644
--- a/src/identity-provider/identity_provider.h
+++ b/src/identity-provider/identity_provider.h
@@ -65,7 +65,7 @@ struct AttributeStoreMessage
/**
* Attribute store response message
*/
-struct AttributeStoreResponseMessage
+struct AttributeStoreResultMessage
{
/**
* Message header
diff --git a/src/identity-provider/identity_provider_api.c
b/src/identity-provider/identity_provider_api.c
index 97ecc691c..fb9926a2c 100644
--- a/src/identity-provider/identity_provider_api.c
+++ b/src/identity-provider/identity_provider_api.c
@@ -72,6 +72,11 @@ struct GNUNET_IDENTITY_PROVIDER_Operation
* Attribute result callback
*/
GNUNET_IDENTITY_PROVIDER_AttributeResult ar_cb;
+
+ /**
+ * Revocation result callback
+ */
+ GNUNET_IDENTITY_PROVIDER_ContinuationWithStatus rvk_cb;
/**
* Ticket result callback
@@ -400,7 +405,7 @@ mq_error_handler (void *cls,
*/
static void
handle_attribute_store_response (void *cls,
- const struct AttributeStoreResponseMessage *msg)
+ const struct AttributeStoreResultMessage *msg)
{
struct GNUNET_IDENTITY_PROVIDER_Handle *h = cls;
struct GNUNET_IDENTITY_PROVIDER_Operation *op;
@@ -716,6 +721,48 @@ handle_ticket_result (void *cls,
GNUNET_break (0);
}
+/**
+ * Handle an incoming message of type
+ * #GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_REVOKE_TICKET_RESULT
+ *
+ * @param cls
+ * @param msg the message we received
+ */
+static void
+handle_revoke_ticket_result (void *cls,
+ const struct RevokeTicketResultMessage *msg)
+{
+ struct GNUNET_IDENTITY_PROVIDER_Handle *h = cls;
+ struct GNUNET_IDENTITY_PROVIDER_Operation *op;
+ uint32_t r_id = ntohl (msg->id);
+ int32_t success;
+
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
+ "Processing revocation result.\n");
+
+
+ for (op = h->op_head; NULL != op; op = op->next)
+ if (op->r_id == r_id)
+ break;
+ if (NULL == op)
+ return;
+ success = ntohl (msg->success);
+ {
+ if (NULL != op->rvk_cb)
+ {
+ op->rvk_cb (op->cls,
+ success,
+ NULL);
+ }
+ GNUNET_CONTAINER_DLL_remove (h->op_head,
+ h->op_tail,
+ op);
+ GNUNET_free (op);
+ return;
+ }
+ GNUNET_assert (0);
+}
+
/**
@@ -729,7 +776,7 @@ reconnect (struct GNUNET_IDENTITY_PROVIDER_Handle *h)
struct GNUNET_MQ_MessageHandler handlers[] = {
GNUNET_MQ_hd_fixed_size (attribute_store_response,
GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_ATTRIBUTE_STORE_RESPONSE,
- struct AttributeStoreResponseMessage,
+ struct AttributeStoreResultMessage,
h),
GNUNET_MQ_hd_var_size (attribute_result,
GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_ATTRIBUTE_RESULT,
@@ -743,6 +790,10 @@ reconnect (struct GNUNET_IDENTITY_PROVIDER_Handle *h)
GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_CONSUME_TICKET_RESULT,
struct ConsumeTicketResultMessage,
h),
+ GNUNET_MQ_hd_fixed_size (revoke_ticket_result,
+
GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_REVOKE_TICKET_RESULT,
+ struct RevokeTicketResultMessage,
+ h),
GNUNET_MQ_handler_end ()
};
struct GNUNET_IDENTITY_PROVIDER_Operation *op;
@@ -1077,10 +1128,10 @@ GNUNET_IDENTITY_PROVIDER_ticket_issue (struct
GNUNET_IDENTITY_PROVIDER_Handle *h
*/
struct GNUNET_IDENTITY_PROVIDER_Operation *
GNUNET_IDENTITY_PROVIDER_ticket_consume (struct
GNUNET_IDENTITY_PROVIDER_Handle *h,
- const struct
GNUNET_CRYPTO_EcdsaPrivateKey *identity,
- const struct
GNUNET_IDENTITY_PROVIDER_Ticket *ticket,
-
GNUNET_IDENTITY_PROVIDER_AttributeResult cb,
- void *cb_cls)
+ const struct
GNUNET_CRYPTO_EcdsaPrivateKey *identity,
+ const struct
GNUNET_IDENTITY_PROVIDER_Ticket *ticket,
+
GNUNET_IDENTITY_PROVIDER_AttributeResult cb,
+ void *cb_cls)
{
struct GNUNET_IDENTITY_PROVIDER_Operation *op;
struct ConsumeTicketMessage *ctm;
@@ -1280,6 +1331,50 @@ GNUNET_IDENTITY_PROVIDER_ticket_iteration_stop (struct
GNUNET_IDENTITY_PROVIDER_
GNUNET_free (it);
}
+/**
+ * Revoked an issued ticket. The relying party will be unable to retrieve
+ * updated attributes.
+ *
+ * @param id the identity provider to use
+ * @param identity the issuing identity
+ * @param ticket the ticket to revoke
+ * @param cb the callback
+ * @param cb_cls the callback closure
+ * @return handle to abort the operation
+ */
+struct GNUNET_IDENTITY_PROVIDER_Operation *
+GNUNET_IDENTITY_PROVIDER_ticket_revoke (struct GNUNET_IDENTITY_PROVIDER_Handle
*h,
+ const struct
GNUNET_CRYPTO_EcdsaPrivateKey *identity,
+ const struct
GNUNET_IDENTITY_PROVIDER_Ticket *ticket,
+
GNUNET_IDENTITY_PROVIDER_ContinuationWithStatus cb,
+ void *cb_cls)
+{
+ struct GNUNET_IDENTITY_PROVIDER_Operation *op;
+ struct GNUNET_MQ_Envelope *env;
+ struct RevokeTicketMessage *msg;
+ uint32_t rid;
+
+ rid = h->r_id_gen++;
+ op = GNUNET_new (struct GNUNET_IDENTITY_PROVIDER_Operation);
+ op->h = h;
+ op->rvk_cb = cb;
+ op->cls = cb_cls;
+ op->r_id = rid;
+ GNUNET_CONTAINER_DLL_insert_tail (h->op_head,
+ h->op_tail,
+ op);
+ env = GNUNET_MQ_msg (msg,
+ GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_REVOKE_TICKET);
+ msg->id = htonl (rid);
+ msg->identity = *identity;
+ if (NULL == h->mq)
+ op->env = env;
+ else
+ GNUNET_MQ_send (h->mq,
+ env);
+ return op;
+}
+
/* end of identity_provider_api.c */
diff --git a/src/include/gnunet_identity_provider_service.h
b/src/include/gnunet_identity_provider_service.h
index d1b437128..fa4d4536c 100644
--- a/src/include/gnunet_identity_provider_service.h
+++ b/src/include/gnunet_identity_provider_service.h
@@ -326,7 +326,7 @@ GNUNET_IDENTITY_PROVIDER_ticket_issue (struct
GNUNET_IDENTITY_PROVIDER_Handle *i
GNUNET_IDENTITY_PROVIDER_TicketCallback
cb,
void *cb_cls);
-/** TODO
+/**
* Revoked an issued ticket. The relying party will be unable to retrieve
* updated attributes.
*
--
To stop receiving notification emails like this one, please contact
address@hidden
- [GNUnet-SVN] [gnunet] 137/171: -fix records, (continued)
- [GNUnet-SVN] [gnunet] 137/171: -fix records, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 148/171: -fix, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 68/171: - merge; service API change, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 116/171: - rework issue api, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 105/171: Merge branch 'abe' into identity_abe, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 115/171: -various fixes; add attribute list API, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 155/171: -fix, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 157/171: -add decrypt stats, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 140/171: -add REST revoke API, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 121/171: -add ticket DB for IdP, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 134/171: -add api impl for revocation,
gnunet <=
- [GNUnet-SVN] [gnunet] 120/171: Merge remote-tracking branch 'origin/master' into identity_abe, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 117/171: -add comments, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 122/171: -fix bugs, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 169/171: update README, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 153/171: -add j to make, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 128/171: -readd new rest plugin, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 171/171: Merge remote-tracking branch 'origin/identity_abe', gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 110/171: Merge remote-tracking branch 'origin/master' into identity_abe, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 113/171: - Add attribute store API to IdP service, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 132/171: -finish revocation in service, cleanup, gnunet, 2018/01/04