aboutsummaryrefslogtreecommitdiff
path: root/src/credential/credential_api.c
diff options
context:
space:
mode:
authorSchanzenbach, Martin <mschanzenbach@posteo.de>2016-12-05 22:09:11 +0100
committerSchanzenbach, Martin <mschanzenbach@posteo.de>2016-12-05 22:09:11 +0100
commit01fcfd11a5e4c170e0b31c60157fb9748c0d3277 (patch)
treec6f7735d692f02843ae6f3b2bf5cba126863efd7 /src/credential/credential_api.c
parent6d96eb580bec0831222811f3841174c39e437709 (diff)
downloadgnunet-01fcfd11a5e4c170e0b31c60157fb9748c0d3277.tar.gz
gnunet-01fcfd11a5e4c170e0b31c60157fb9748c0d3277.zip
- remove purpose from cred
Diffstat (limited to 'src/credential/credential_api.c')
-rw-r--r--src/credential/credential_api.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/credential/credential_api.c b/src/credential/credential_api.c
index b6c585c72..3be2d8bbb 100644
--- a/src/credential/credential_api.c
+++ b/src/credential/credential_api.c
@@ -428,23 +428,32 @@ GNUNET_CREDENTIAL_issue (struct GNUNET_CREDENTIAL_Handle *handle,
428 const char *attribute) 428 const char *attribute)
429{ 429{
430 struct GNUNET_CREDENTIAL_CredentialRecordData *crd; 430 struct GNUNET_CREDENTIAL_CredentialRecordData *crd;
431 struct GNUNET_CRYPTO_EccSignaturePurpose *purp;
431 432
432 crd = GNUNET_malloc (sizeof (struct GNUNET_CREDENTIAL_CredentialRecordData) + strlen (attribute) + 1); 433 crd = GNUNET_malloc (sizeof (struct GNUNET_CREDENTIAL_CredentialRecordData) + strlen (attribute) + 1);
433 434
434 crd->purpose.size = htonl (strlen (attribute) + 1 + 435 purp = GNUNET_malloc (sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey) +
435 sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey) + 436 strlen (attribute) + 1);
436 sizeof (struct GNUNET_CRYPTO_EccSignaturePurpose) + 437 purp->size = htonl (strlen (attribute) + 1 +
437 sizeof (struct GNUNET_TIME_AbsoluteNBO)); 438 sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey) +
438 crd->purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_CREDENTIAL); 439 sizeof (struct GNUNET_CRYPTO_EccSignaturePurpose));
440
441 purp->purpose = htonl (GNUNET_SIGNATURE_PURPOSE_CREDENTIAL);
439 GNUNET_CRYPTO_ecdsa_key_get_public (issuer, 442 GNUNET_CRYPTO_ecdsa_key_get_public (issuer,
440 &crd->issuer_key); 443 &crd->issuer_key);
441 crd->subject_key = *subject; 444 crd->subject_key = *subject;
442 GNUNET_memcpy (&crd[1], 445 GNUNET_memcpy (&crd[1],
443 attribute, 446 attribute,
444 strlen (attribute)); 447 strlen (attribute));
448 GNUNET_memcpy (&purp[1],
449 subject,
450 sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey));
451 GNUNET_memcpy (&purp[1] + sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey),
452 attribute,
453 strlen (attribute));
445 if (GNUNET_OK != 454 if (GNUNET_OK !=
446 GNUNET_CRYPTO_ecdsa_sign (issuer, 455 GNUNET_CRYPTO_ecdsa_sign (issuer,
447 &crd->purpose, 456 purp,
448 &crd->sig)) 457 &crd->sig))
449 { 458 {
450 GNUNET_break (0); 459 GNUNET_break (0);