@@ -155,52 +155,20 @@ typedef enum {
155
155
TYPE_ECC_CURVE ,
156
156
TYPE_KEY_TYPE ,
157
157
TYPE_KEY_USAGE ,
158
- } value_type ;
158
+ } unsigned_value_type ;
159
159
160
- int main ( int argc , char * argv [] )
160
+ int process_unsigned ( unsigned_value_type type , unsigned long max , char * * argp )
161
161
{
162
- value_type type ;
163
- unsigned long max ;
164
- int i ;
165
-
166
- if (argc <= 1 ||
167
- !strcmp (argv [1 ], "help" ) ||
168
- !strcmp (argv [1 ], "--help" ))
169
- {
170
- usage (argv [0 ]);
171
- return EXIT_FAILURE ;
172
- }
173
-
174
- if (!strcmp (argv [1 ], "error" ) || !strcmp (argv [1 ], "status" )) {
175
- type = TYPE_STATUS ;
176
- max = 0x7fffffff ; /* hard-coded because psa_status_t is signed */
177
- } else if (!strcmp (argv [1 ], "alg" ) || !strcmp (argv [1 ], "algorithm" )) {
178
- type = TYPE_ALGORITHM ;
179
- max = (psa_algorithm_t )( -1 );
180
- } else if (!strcmp (argv [1 ], "curve" ) || !strcmp (argv [1 ], "ecc_curve" )) {
181
- type = TYPE_ECC_CURVE ;
182
- max = (psa_ecc_curve_t )( -1 );
183
- } else if (!strcmp (argv [1 ], "type" ) || !strcmp (argv [1 ], "key_type" )) {
184
- type = TYPE_KEY_TYPE ;
185
- max = (psa_key_type_t )( -1 );
186
- } else if (!strcmp (argv [1 ], "usage" ) || !strcmp (argv [1 ], "key_usage" )) {
187
- type = TYPE_KEY_USAGE ;
188
- max = (psa_key_usage_t )( -1 );
189
- } else {
190
- printf ("Unknown type: %s\n" , argv [1 ]);
191
- return EXIT_FAILURE ;
192
- }
193
-
194
- for (i = 2 ; i < argc ; i ++ ) {
162
+ for (; * argp != NULL ; argp ++ ) {
195
163
char buffer [200 ];
196
164
char * end ;
197
- unsigned long value = strtoul (argv [ i ] , & end , 0 );
165
+ unsigned long value = strtoul (* argp , & end , 0 );
198
166
if (* end ) {
199
- printf ("Non-numeric value: %s\n" , argv [ i ] );
167
+ printf ("Non-numeric value: %s\n" , * argp );
200
168
return EXIT_FAILURE ;
201
169
}
202
170
if (value > max ) {
203
- printf ("Value out of range: %s\n" , argv [ i ] );
171
+ printf ("Value out of range: %s\n" , * argp );
204
172
return EXIT_FAILURE ;
205
173
}
206
174
@@ -231,3 +199,35 @@ int main(int argc, char *argv[])
231
199
232
200
return EXIT_SUCCESS ;
233
201
}
202
+
203
+ int main (int argc , char * argv [])
204
+ {
205
+ if (argc <= 1 ||
206
+ !strcmp (argv [1 ], "help" ) ||
207
+ !strcmp (argv [1 ], "--help" ))
208
+ {
209
+ usage (argv [0 ]);
210
+ return EXIT_FAILURE ;
211
+ }
212
+
213
+ if (!strcmp (argv [1 ], "error" ) || !strcmp (argv [1 ], "status" )) {
214
+ /* Wrong! psa_status_t is signed. */
215
+ return process_unsigned (TYPE_ALGORITHM , 0xffffffff ,
216
+ argv + 2 );
217
+ } else if (!strcmp (argv [1 ], "alg" ) || !strcmp (argv [1 ], "algorithm" )) {
218
+ return process_unsigned (TYPE_ALGORITHM , (psa_algorithm_t ) (-1 ),
219
+ argv + 2 );
220
+ } else if (!strcmp (argv [1 ], "curve" ) || !strcmp (argv [1 ], "ecc_curve" )) {
221
+ return process_unsigned (TYPE_ECC_CURVE , (psa_ecc_curve_t ) (-1 ),
222
+ argv + 2 );
223
+ } else if (!strcmp (argv [1 ], "type" ) || !strcmp (argv [1 ], "key_type" )) {
224
+ return process_unsigned (TYPE_KEY_TYPE , (psa_key_type_t ) (-1 ),
225
+ argv + 2 );
226
+ } else if (!strcmp (argv [1 ], "usage" ) || !strcmp (argv [1 ], "key_usage" )) {
227
+ return process_unsigned (TYPE_KEY_USAGE , (psa_key_usage_t ) (-1 ),
228
+ argv + 2 );
229
+ } else {
230
+ printf ("Unknown type: %s\n" , argv [1 ]);
231
+ return EXIT_FAILURE ;
232
+ }
233
+ }
0 commit comments