14
14
#include "amvp/amvp.h"
15
15
#include "safe_lib.h"
16
16
17
- #include <openssl/crypto.h>
18
- #include <openssl/evp.h>
19
-
20
17
#define AMVP_APP_HELP_MSG "Use amvp_app --help for more information."
21
18
22
19
static void print_usage (int code ) {
@@ -159,7 +156,7 @@ static void print_usage(int code) {
159
156
printf ("To get info about a created module from the AMVP server:\n" );
160
157
printf (" --get_module <module_info_file>\n" );
161
158
printf ("To request module certificate using a predefined request file:\n" );
162
- printf (" --module_cert_req <request_file> \n" );
159
+ printf (" --module_cert_req --with_module <module_id_number> --with_vendor <vendor_id_number> --with-contact <CMVP contact ID> ... \n" );
163
160
printf ("\n" );
164
161
printf ("To post all resources a predefined resource json file:\n" );
165
162
printf (" --post_resources <resource_file>\n" );
@@ -194,27 +191,6 @@ static void print_usage(int code) {
194
191
195
192
static void print_version_info (void ) {
196
193
printf ("\nAMVP library version(protocol version): %s(%s)\n\n" , amvp_version (), amvp_protocol_version ());
197
- printf (" Runtime mode: yes\n" );
198
- #if OPENSSL_VERSION_NUMBER < 0x30000000L
199
- if (FIPS_mode ()) {
200
- printf (" FIPS mode: yes\n" );
201
- } else {
202
- printf (" FIPS mode: no\n" );
203
- }
204
- #else
205
- if (EVP_default_properties_is_fips_enabled (NULL )) {
206
- printf (" FIPS by default: yes\n" );
207
- } else {
208
- printf (" FIPS by default: no\n" );
209
- }
210
- #endif
211
-
212
- #ifdef OPENSSL_VERSION_TEXT
213
- printf ("Compiled SSL version: %s\n" , OPENSSL_VERSION_TEXT );
214
- #else
215
- printf ("Compiled SSL version: not detected\n" );
216
- #endif
217
- printf (" Linked SSL version: %s\n" , OpenSSL_version (OPENSSL_VERSION ));
218
194
}
219
195
220
196
static ko_longopt_t longopts [] = {
@@ -227,24 +203,6 @@ static ko_longopt_t longopts[] = {
227
203
{ "verbose" , ko_no_argument , 307 },
228
204
{ "none" , ko_no_argument , 308 },
229
205
{ "sample" , ko_no_argument , 309 },
230
- { "aes" , ko_no_argument , 310 },
231
- { "tdes" , ko_no_argument , 311 },
232
- { "hash" , ko_no_argument , 312 },
233
- { "cmac" , ko_no_argument , 313 },
234
- { "hmac" , ko_no_argument , 314 },
235
- { "kdf" , ko_no_argument , 315 },
236
- { "dsa" , ko_no_argument , 316 },
237
- { "rsa" , ko_no_argument , 317 },
238
- { "drbg" , ko_no_argument , 318 },
239
- { "ecdsa" , ko_no_argument , 319 },
240
- { "kas_ecc" , ko_no_argument , 320 },
241
- { "kas_ffc" , ko_no_argument , 321 },
242
- { "safe_primes" , ko_no_argument , 322 },
243
- { "kas_ifc" , ko_no_argument , 323 },
244
- { "kts_ifc" , ko_no_argument , 324 },
245
- { "kda" , ko_no_argument , 325 },
246
- { "kmac" , ko_no_argument , 326 },
247
- { "all_algs" , ko_no_argument , 350 },
248
206
{ "manual_registration" , ko_required_argument , 400 },
249
207
{ "kat" , ko_required_argument , 401 },
250
208
{ "fips_validation" , ko_required_argument , 402 },
@@ -264,13 +222,13 @@ static ko_longopt_t longopts[] = {
264
222
{ "cost" , ko_no_argument , 416 },
265
223
{ "debug" , ko_no_argument , 417 },
266
224
{ "get_registration" , ko_no_argument , 418 },
267
- { "module_cert_req" , ko_required_argument , 419 },
225
+ { "module_cert_req" , ko_no_argument , 419 },
268
226
{ "post_resources" , ko_required_argument , 420 },
269
227
{ "create_module" , ko_required_argument , 421 },
270
228
{ "get_module" , ko_required_argument , 422 },
271
- #if OPENSSL_VERSION_NUMBER >= 0x30000000L
272
- { "disable_fips " , ko_no_argument , 500 } ,
273
- #endif
229
+ { "with_module" , ko_required_argument , 423 },
230
+ { "with_vendor " , ko_required_argument , 424 } ,
231
+ { "with_contact" , ko_required_argument , 425 } ,
274
232
{ NULL , 0 , 0 }
275
233
};
276
234
@@ -279,26 +237,6 @@ static void default_config(APP_CONFIG *cfg) {
279
237
cfg -> level = AMVP_LOG_LVL_STATUS ;
280
238
}
281
239
282
- static void enable_all_algorithms (APP_CONFIG * cfg ) {
283
- cfg -> aes = 1 ;
284
- cfg -> tdes = 1 ;
285
- cfg -> hash = 1 ;
286
- cfg -> cmac = 1 ;
287
- cfg -> hmac = 1 ;
288
- cfg -> kmac = 1 ;
289
- cfg -> dsa = 1 ;
290
- cfg -> kas_ffc = 1 ;
291
- cfg -> safe_primes = 1 ;
292
- cfg -> rsa = 1 ;
293
- cfg -> drbg = 1 ;
294
- cfg -> ecdsa = 1 ;
295
- cfg -> kas_ecc = 1 ;
296
- cfg -> kas_ifc = 1 ;
297
- cfg -> kda = 1 ;
298
- cfg -> kts_ifc = 1 ;
299
- cfg -> kdf = 1 ;
300
- }
301
-
302
240
static const char * lookup_arg_name (int c ) {
303
241
int i = 0 ;
304
242
int arrlen = sizeof (longopts ) / sizeof (ko_longopt_t );
@@ -325,7 +263,7 @@ static int check_option_length(const char *opt, int c, int maxAllowed) {
325
263
326
264
int ingest_cli (APP_CONFIG * cfg , int argc , char * * argv ) {
327
265
ketopt_t opt = KETOPT_INIT ;
328
- int c = 0 , diff = 0 , len = 0 ;
266
+ int c = 0 , diff = 0 , tmp = 0 ;
329
267
330
268
cfg -> empty_alg = 1 ;
331
269
@@ -343,12 +281,12 @@ int ingest_cli(APP_CONFIG *cfg, int argc, char **argv) {
343
281
case 'h' :
344
282
case 302 :
345
283
if (opt .arg ) {
346
- len = strnlen_s (opt .arg , JSON_FILENAME_LENGTH + 1 );
347
- if (len > JSON_FILENAME_LENGTH || len <= 0 ) {
284
+ tmp = strnlen_s (opt .arg , JSON_FILENAME_LENGTH + 1 );
285
+ if (tmp > JSON_FILENAME_LENGTH || tmp <= 0 ) {
348
286
printf ("invalid help option length\n" );
349
287
return 1 ;
350
288
}
351
- strncmp_s (opt .arg , len , "--verbose" , 9 , & diff );
289
+ strncmp_s (opt .arg , tmp , "--verbose" , 9 , & diff );
352
290
if (!diff ) {
353
291
print_usage (AMVP_LOG_LVL_VERBOSE );
354
292
} else {
@@ -379,80 +317,6 @@ int ingest_cli(APP_CONFIG *cfg, int argc, char **argv) {
379
317
case 309 :
380
318
cfg -> sample = 1 ;
381
319
break ;
382
- case 310 :
383
- cfg -> aes = 1 ;
384
- cfg -> empty_alg = 0 ;
385
- break ;
386
- case 311 :
387
- cfg -> tdes = 1 ;
388
- cfg -> empty_alg = 0 ;
389
- break ;
390
- case 312 :
391
- cfg -> hash = 1 ;
392
- cfg -> empty_alg = 0 ;
393
- break ;
394
- case 313 :
395
- cfg -> cmac = 1 ;
396
- cfg -> empty_alg = 0 ;
397
- break ;
398
- case 314 :
399
- cfg -> hmac = 1 ;
400
- cfg -> empty_alg = 0 ;
401
- break ;
402
- case 315 :
403
- cfg -> kdf = 1 ;
404
- cfg -> empty_alg = 0 ;
405
- break ;
406
- case 316 :
407
- cfg -> dsa = 1 ;
408
- cfg -> empty_alg = 0 ;
409
- break ;
410
- case 317 :
411
- cfg -> rsa = 1 ;
412
- cfg -> empty_alg = 0 ;
413
- break ;
414
- case 318 :
415
- cfg -> drbg = 1 ;
416
- cfg -> empty_alg = 0 ;
417
- break ;
418
- case 319 :
419
- cfg -> ecdsa = 1 ;
420
- cfg -> empty_alg = 0 ;
421
- break ;
422
- case 320 :
423
- cfg -> kas_ecc = 1 ;
424
- cfg -> empty_alg = 0 ;
425
- break ;
426
- case 321 :
427
- cfg -> kas_ffc = 1 ;
428
- cfg -> empty_alg = 0 ;
429
- break ;
430
- case 322 :
431
- cfg -> safe_primes = 1 ;
432
- cfg -> empty_alg = 0 ;
433
- break ;
434
- case 323 :
435
- cfg -> kas_ifc = 1 ;
436
- cfg -> empty_alg = 0 ;
437
- break ;
438
- case 324 :
439
- cfg -> kts_ifc = 1 ;
440
- cfg -> empty_alg = 0 ;
441
- break ;
442
- case 325 :
443
- cfg -> kda = 1 ;
444
- cfg -> empty_alg = 0 ;
445
- break ;
446
- case 326 :
447
- cfg -> kmac = 1 ;
448
- cfg -> empty_alg = 0 ;
449
- break ;
450
- case 'a' :
451
- case 350 :
452
- enable_all_algorithms (cfg );
453
- cfg -> empty_alg = 0 ;
454
- cfg -> testall = 1 ;
455
- break ;
456
320
457
321
case 400 :
458
322
cfg -> manual_reg = 1 ;
@@ -600,10 +464,6 @@ int ingest_cli(APP_CONFIG *cfg, int argc, char **argv) {
600
464
601
465
case 419 :
602
466
cfg -> mod_cert_req = 1 ;
603
- if (!check_option_length (opt .arg , c , JSON_FILENAME_LENGTH )) {
604
- return 1 ;
605
- }
606
- strcpy_s (cfg -> mod_cert_req_file , JSON_FILENAME_LENGTH + 1 , opt .arg );
607
467
break ;
608
468
609
469
case 420 :
@@ -630,6 +490,37 @@ int ingest_cli(APP_CONFIG *cfg, int argc, char **argv) {
630
490
strcpy_s (cfg -> get_module_file , JSON_FILENAME_LENGTH + 1 , opt .arg );
631
491
break ;
632
492
493
+ case 423 :
494
+ tmp = atoi (opt .arg );
495
+ if (!tmp ) {
496
+ printf ("Invalid module ID format\n" );
497
+ return 1 ;
498
+ }
499
+ printf ("Module ID: %d\n" , tmp );
500
+ cfg -> module_id = tmp ;
501
+ break ;
502
+
503
+ case 424 :
504
+ tmp = atoi (opt .arg );
505
+ if (!tmp ) {
506
+ printf ("Invalid vendor ID format\n" );
507
+ return 1 ;
508
+ }
509
+ cfg -> vendor_id = tmp ;
510
+ break ;
511
+
512
+ case 425 :
513
+ if (cfg -> num_contacts >= AMVP_MAX_CONTACTS_PER_CERT_REQ ) {
514
+ printf ("Too many contacts provided for cert req\n" );
515
+ return 1 ;
516
+ }
517
+ if (!check_option_length (opt .arg , c , AMVP_CONTACT_STR_MAX_LEN )) {
518
+ return 1 ;
519
+ }
520
+ strcpy_s (cfg -> contact_ids [cfg -> num_contacts ], AMVP_CONTACT_STR_MAX_LEN + 1 , opt .arg );
521
+ cfg -> num_contacts ++ ;
522
+ break ;
523
+
633
524
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
634
525
case 500 :
635
526
cfg -> disable_fips = 1 ;
@@ -671,6 +562,15 @@ int ingest_cli(APP_CONFIG *cfg, int argc, char **argv) {
671
562
return 1 ;
672
563
}
673
564
565
+ if (cfg -> mod_cert_req && (!cfg -> module_id || !cfg -> vendor_id || !cfg -> num_contacts )) {
566
+ printf ("Module cert request requires module module ID, vendor ID, and at least one contact ID to be provided\n" );
567
+ return 1 ;
568
+ }
569
+
570
+ if (!cfg -> mod_cert_req && (cfg -> module_id || cfg -> vendor_id || cfg -> num_contacts )) {
571
+ printf ("Warning: Module ID/Vendor ID/Contact ID provided, but not performing a cert request. These options will be ignored\n" );
572
+ }
573
+
674
574
printf ("\n" );
675
575
676
576
return 0 ;
0 commit comments