/**
* @file credential/credential.h
* @brief IPC messages between CREDENTIAL API and CREDENTIAL service
- * @author Adnan Husain
+ * @author Martin Schanzenbach
*/
#ifndef CREDENTIAL_H
#define CREDENTIAL_H
GNUNET_NETWORK_STRUCT_BEGIN
+/**
+ * Message from client to Credential service to collect credentials.
+ */
+struct CollectMessage
+{
+ /**
+ * Header of type #GNUNET_MESSAGE_TYPE_CREDENTIAL_VERIFY
+ */
+ struct GNUNET_MessageHeader header;
+
+ /**
+ * Subject public key
+ */
+ struct GNUNET_CRYPTO_EcdsaPrivateKey subject_key;
+
+ /**
+ * Trust anchor
+ */
+ struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
+
+ /**
+ * Length of the issuer attribute
+ */
+ uint16_t issuer_attribute_len;
+
+ /**
+ * Unique identifier for this request (for key collisions).
+ */
+ uint32_t id GNUNET_PACKED;
+
+ /* Followed by the zero-terminated attribute */
+
+};
+
+
/**
* Message from client to Credential service to verify attributes.
*/
struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
/**
- * Length of the issuer attribute
+ * Number of credentials
*/
- uint16_t issuer_attribute_len;
+ uint32_t c_count;
/**
- * Length of the subject attribute
+ * Length of the issuer attribute
*/
- uint16_t subject_attribute_len;
+ uint16_t issuer_attribute_len;
/**
* Unique identifier for this request (for key collisions).
*/
uint32_t id GNUNET_PACKED;
- /* Followed by the zero-terminated attributes to look up */
+ /* Followed by the zero-terminated attribute and credentials to look up */
};
/**
* Message from CREDENTIAL service to client: new results.
*/
-struct VerifyResultMessage
+struct DelegationChainResultMessage
{
/**
* Header of type #GNUNET_MESSAGE_TYPE_CREDENTIAL_VERIFY_RESULT
};
+struct DelegationRecordData
+{
+ /**
+ * Subject key
+ */
+ struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
+
+ /**
+ * Subject attributes
+ */
+ uint32_t subject_attribute_len GNUNET_PACKED;
+};
+
+
+struct ChainEntry
+{
+ /**
+ * Issuer key
+ */
+ struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
+
+ /**
+ * Subject key
+ */
+ struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
+
+ /**
+ * Issuer attributes
+ */
+ uint32_t issuer_attribute_len GNUNET_PACKED;
+
+ /**
+ * Subject attributes
+ */
+ uint32_t subject_attribute_len GNUNET_PACKED;
+};
+
+
+struct CredentialEntry
+{
+
+ /**
+ * The signature for this credential by the issuer
+ */
+ struct GNUNET_CRYPTO_EcdsaSignature signature;
+
+ /**
+ * Signature meta
+ */
+ struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
+
+ /**
+ * Public key of the issuer
+ */
+ struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
+
+ /**
+ * Public key of the subject this credential was issued to
+ */
+ struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
+
+ /**
+ * Expiration time of this credential
+ */
+ uint64_t expiration GNUNET_PACKED;
+
+ /**
+ * Issuer attribute length
+ */
+ uint32_t issuer_attribute_len;
+
+ /**
+ * Followed by the attribute string
+ */
+};
+
GNUNET_NETWORK_STRUCT_END