summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortb <>2022-07-03 08:15:52 +0000
committertb <>2022-07-03 08:15:52 +0000
commit5f45601ea6aa0b2b60618271d2c77b278d5f4cfc (patch)
tree2c2c19bee38ffa67b91f4b53fcacb2fa6f3b4db5
parent25d91012576b69d64d04218e77db56132510dd90 (diff)
downloadopenbsd-5f45601ea6aa0b2b60618271d2c77b278d5f4cfc.tar.gz
openbsd-5f45601ea6aa0b2b60618271d2c77b278d5f4cfc.tar.bz2
openbsd-5f45601ea6aa0b2b60618271d2c77b278d5f4cfc.zip
Simplify tls1_ec_nid2group_id()
Replace long switch statement duplicating data from nid_list[] with a linear scan. requested by and ok jsing
-rw-r--r--src/lib/libssl/t1_lib.c108
1 files changed, 10 insertions, 98 deletions
diff --git a/src/lib/libssl/t1_lib.c b/src/lib/libssl/t1_lib.c
index 638e81ae82..5a1749c863 100644
--- a/src/lib/libssl/t1_lib.c
+++ b/src/lib/libssl/t1_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: t1_lib.c,v 1.192 2022/07/03 08:13:45 tb Exp $ */ 1/* $OpenBSD: t1_lib.c,v 1.193 2022/07/03 08:15:52 tb Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -372,109 +372,21 @@ tls1_ec_group_id2bits(uint16_t group_id, int *out_bits)
372} 372}
373 373
374int 374int
375tls1_ec_nid2group_id(const int nid, uint16_t *out_group_id) 375tls1_ec_nid2group_id(int nid, uint16_t *out_group_id)
376{ 376{
377 uint16_t group_id; 377 uint16_t group_id;
378 378
379 switch (nid) { 379 if (nid == 0)
380 case NID_sect163k1:
381 group_id = 1;
382 break;
383 case NID_sect163r1:
384 group_id = 2;
385 break;
386 case NID_sect163r2:
387 group_id = 3;
388 break;
389 case NID_sect193r1:
390 group_id = 4;
391 break;
392 case NID_sect193r2:
393 group_id = 5;
394 break;
395 case NID_sect233k1:
396 group_id = 6;
397 break;
398 case NID_sect233r1:
399 group_id = 7;
400 break;
401 case NID_sect239k1:
402 group_id = 8;
403 break;
404 case NID_sect283k1:
405 group_id = 9;
406 break;
407 case NID_sect283r1:
408 group_id = 10;
409 break;
410 case NID_sect409k1:
411 group_id = 11;
412 break;
413 case NID_sect409r1:
414 group_id = 12;
415 break;
416 case NID_sect571k1:
417 group_id = 13;
418 break;
419 case NID_sect571r1:
420 group_id = 14;
421 break;
422 case NID_secp160k1:
423 group_id = 15;
424 break;
425 case NID_secp160r1:
426 group_id = 16;
427 break;
428 case NID_secp160r2:
429 group_id = 17;
430 break;
431 case NID_secp192k1:
432 group_id = 18;
433 break;
434 case NID_X9_62_prime192v1: /* aka secp192r1 */
435 group_id = 19;
436 break;
437 case NID_secp224k1:
438 group_id = 20;
439 break;
440 case NID_secp224r1:
441 group_id = 21;
442 break;
443 case NID_secp256k1:
444 group_id = 22;
445 break;
446 case NID_X9_62_prime256v1: /* aka secp256r1 */
447 group_id = 23;
448 break;
449 case NID_secp384r1:
450 group_id = 24;
451 break;
452 case NID_secp521r1:
453 group_id = 25;
454 break;
455 case NID_brainpoolP256r1:
456 group_id = 26;
457 break;
458 case NID_brainpoolP384r1:
459 group_id = 27;
460 break;
461 case NID_brainpoolP512r1:
462 group_id = 28;
463 break;
464 case NID_X25519:
465 group_id = 29;
466 break;
467 default:
468 group_id = 0;
469 break;
470 }
471
472 if (group_id == 0)
473 return 0; 380 return 0;
474 381
475 *out_group_id = group_id; 382 for (group_id = 0; group_id < NID_LIST_LEN; group_id++) {
383 if (nid_list[group_id].nid == nid) {
384 *out_group_id = group_id;
385 return 1;
386 }
387 }
476 388
477 return 1; 389 return 0;
478} 390}
479 391
480/* 392/*