summaryrefslogtreecommitdiff
path: root/src/include/taler_types.h
blob: c6c2c02096ee2f57d96b855ac1f1b7687d637423 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/**
 * @file include/types.h
 * @brief This files defines the various data and message types in TALER.
 * @author Sree Harsha Totakura <sreeharsha@totakura.in>
 * @author Florian Dold
 */

#ifndef TYPES_H_
#define TYPES_H_

#include "taler_rsa.h"


/**
 * Public information about a coin.
 */
struct TALER_CoinPublicInfo
{
  /**
   * The coin's public key.
   */
  struct GNUNET_CRYPTO_EcdsaPublicKey coin_pub;

  /*
   * The public key signifying the coin's denomination.
   */
  struct TALER_RSA_PublicKeyBinaryEncoded denom_pub;

  /**
   * Signature over coin_pub by denom_pub.
   */
  struct TALER_RSA_Signature denom_sig;
};


/**
 * Request to withdraw coins from a reserve.
 */
struct TALER_WithdrawRequest
{
  /**
   * Signature over the rest of the message
   * by the withdraw public key.
   */
  struct GNUNET_CRYPTO_EddsaSignature sig;

  /**
   * Purpose must be TALER_SIGNATURE_WITHDRAW.
   */
  struct GNUNET_CRYPTO_EccSignaturePurpose purpose;

  /**
   * Reserve public key.
   */
  struct GNUNET_CRYPTO_EddsaPublicKey reserve_pub;

  /**
   * Denomination public key for the coin that is withdrawn.
   */
  struct TALER_RSA_PublicKeyBinaryEncoded denomination_pub;

  /**
   * Purpose containing coin's blinded public key.
   */
  struct TALER_RSA_BlindedSignaturePurpose coin_envelope;
};



/**
 * Data type for messages
 */
struct TALER_MessageHeader
{
  /**
   * The type of the message in Network-byte order (NBO)
   */
  uint16_t type;

  /**
   * The size of the message in NBO
   */
  uint16_t size;
};

/*****************/
/* Message types */
/*****************/

/**
 * The message type of a blind signature
 */
#define TALER_MSG_TYPE_BLINDED_SIGNATURE  1

/**
 * The message type of a blinded message
 */
#define TALER_MSG_TYPE_BLINDED_MESSAGE 2

/**
 * The message type of an unblinded signature
 * @FIXME: Not currently used
 */
#define TALER_MSG_TYPE_UNBLINDED_SIGNATURE 3

/**
 * The type of a blinding residue message
 * @FIXME: Not currently used
 */
#define TALER_MSG_TYPE_BLINDING_RESIDUE 4

/**
 * The type of a message containing the blinding factor
 */
#define TALER_MSG_TYPE_BLINDING_FACTOR 5


#endif  /* TYPES_H_ */

/* end of include/types.h */