aboutsummaryrefslogtreecommitdiff
path: root/src/mint/taler-mint-keycheck.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mint/taler-mint-keycheck.c')
-rw-r--r--src/mint/taler-mint-keycheck.c50
1 files changed, 28 insertions, 22 deletions
diff --git a/src/mint/taler-mint-keycheck.c b/src/mint/taler-mint-keycheck.c
index c6186859c..419baf501 100644
--- a/src/mint/taler-mint-keycheck.c
+++ b/src/mint/taler-mint-keycheck.c
@@ -32,19 +32,20 @@ static struct GNUNET_CONFIGURATION_Handle *kcfg;
32 32
33 33
34static int 34static int
35signkeys_iter (void *cls, const struct TALER_MINT_SignKeyIssue *ski) 35signkeys_iter (void *cls, const struct TALER_MINT_SignKeyIssuePriv *ski)
36{ 36{
37 struct GNUNET_TIME_Absolute start; 37 struct GNUNET_TIME_Absolute start;
38 38
39 printf ("iterating over key for start time %s\n", 39 printf ("iterating over key for start time %s\n",
40 GNUNET_STRINGS_absolute_time_to_string (GNUNET_TIME_absolute_ntoh (ski->start))); 40 GNUNET_STRINGS_absolute_time_to_string (GNUNET_TIME_absolute_ntoh (ski->issue.start)));
41 41
42 start = GNUNET_TIME_absolute_ntoh (ski->start); 42 start = GNUNET_TIME_absolute_ntoh (ski->issue.start);
43 43
44 if (ntohl (ski->purpose.size) != 44 if (ntohl (ski->issue.purpose.size) !=
45 (sizeof (struct TALER_MINT_SignKeyIssue) - offsetof (struct TALER_MINT_SignKeyIssue, purpose))) 45 (sizeof (struct TALER_MINT_SignKeyIssue) - offsetof (struct TALER_MINT_SignKeyIssue, purpose)))
46 { 46 {
47 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Signkey with start %s has invalid purpose field (timestamp: %llu)\n", 47 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
48 "Signkey with start %s has invalid purpose field (timestamp: %llu)\n",
48 GNUNET_STRINGS_absolute_time_to_string (start), 49 GNUNET_STRINGS_absolute_time_to_string (start),
49 (long long) start.abs_value_us); 50 (long long) start.abs_value_us);
50 return GNUNET_SYSERR; 51 return GNUNET_SYSERR;
@@ -52,15 +53,16 @@ signkeys_iter (void *cls, const struct TALER_MINT_SignKeyIssue *ski)
52 53
53 54
54 if (GNUNET_OK != GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_MASTER_SIGNKEY, 55 if (GNUNET_OK != GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_MASTER_SIGNKEY,
55 &ski->purpose, 56 &ski->issue.purpose,
56 &ski->signature, 57 &ski->issue.signature,
57 &ski->master_pub)) 58 &ski->issue.master_pub))
58 { 59 {
59 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Signkey with start %s has invalid signature (timestamp: %llu)\n", 60 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Signkey with start %s has invalid signature (timestamp: %llu)\n",
60 GNUNET_STRINGS_absolute_time_to_string (start), 61 GNUNET_STRINGS_absolute_time_to_string (start),
61 (long long) start.abs_value_us); 62 (long long) start.abs_value_us);
62 return GNUNET_SYSERR; 63 return GNUNET_SYSERR;
63 } 64 }
65 /* FIXME: what about private key matching the public key? */
64 printf ("key valid\n"); 66 printf ("key valid\n");
65 return GNUNET_OK; 67 return GNUNET_OK;
66} 68}
@@ -75,16 +77,17 @@ mint_signkeys_check ()
75} 77}
76 78
77 79
78static int denomkeys_iter (void *cls, 80static int
79 const char *alias, 81denomkeys_iter (void *cls,
80 const struct TALER_MINT_DenomKeyIssue *dki) 82 const char *alias,
83 const struct TALER_MINT_DenomKeyIssuePriv *dki)
81{ 84{
82 struct GNUNET_TIME_Absolute start; 85 struct GNUNET_TIME_Absolute start;
83 86
84 start = GNUNET_TIME_absolute_ntoh (dki->start); 87 start = GNUNET_TIME_absolute_ntoh (dki->issue.start);
85 88
86 if (ntohl (dki->purpose.size) != 89 if (ntohl (dki->issue.purpose.size) !=
87 (sizeof (struct TALER_MINT_DenomKeyIssue) - offsetof (struct TALER_MINT_DenomKeyIssue, purpose))) 90 (sizeof (struct TALER_MINT_DenomKeyIssuePriv) - offsetof (struct TALER_MINT_DenomKeyIssuePriv, issue.purpose)))
88 { 91 {
89 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Denomkey for '%s' with start %s has invalid purpose field (timestamp: %llu)\n", 92 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Denomkey for '%s' with start %s has invalid purpose field (timestamp: %llu)\n",
90 alias, 93 alias,
@@ -93,12 +96,14 @@ static int denomkeys_iter (void *cls,
93 return GNUNET_SYSERR; 96 return GNUNET_SYSERR;
94 } 97 }
95 98
96 if (GNUNET_OK != GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_MASTER_DENOM, 99 if (GNUNET_OK !=
97 &dki->purpose, 100 GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_MASTER_DENOM,
98 &dki->signature, 101 &dki->issue.purpose,
99 &dki->master)) 102 &dki->issue.signature,
103 &dki->issue.master))
100 { 104 {
101 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Denomkey for '%s'with start %s has invalid signature (timestamp: %llu)\n", 105 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
106 "Denomkey for '%s'with start %s has invalid signature (timestamp: %llu)\n",
102 alias, 107 alias,
103 GNUNET_STRINGS_absolute_time_to_string (start), 108 GNUNET_STRINGS_absolute_time_to_string (start),
104 (long long) start.abs_value_us); 109 (long long) start.abs_value_us);
@@ -113,7 +118,8 @@ static int denomkeys_iter (void *cls,
113static int 118static int
114mint_denomkeys_check () 119mint_denomkeys_check ()
115{ 120{
116 if (0 > TALER_MINT_denomkeys_iterate (mintdir, denomkeys_iter, NULL)) 121 if (0 > TALER_MINT_denomkeys_iterate (mintdir,
122 &denomkeys_iter, NULL))
117 return GNUNET_NO; 123 return GNUNET_NO;
118 return GNUNET_OK; 124 return GNUNET_OK;
119} 125}
@@ -148,11 +154,11 @@ main (int argc, char *const *argv)
148 154
149 GNUNET_assert (GNUNET_OK == GNUNET_log_setup ("taler-mint-keycheck", "WARNING", NULL)); 155 GNUNET_assert (GNUNET_OK == GNUNET_log_setup ("taler-mint-keycheck", "WARNING", NULL));
150 156
151 if (GNUNET_GETOPT_run ("taler-mint-keyup", options, argc, argv) < 0) 157 if (GNUNET_GETOPT_run ("taler-mint-keyup", options, argc, argv) < 0)
152 return 1; 158 return 1;
153 if (NULL == mintdir) 159 if (NULL == mintdir)
154 { 160 {
155 fprintf (stderr, "mint directory not given\n"); 161 fprintf (stderr, "mint directory not given\n");
156 return 1; 162 return 1;
157 } 163 }
158 164