1 /* 2 * Copyright 1998-2021 The OpenSSL Project Authors. All Rights Reserved. 3 * 4 * Licensed under the Apache License 2.0 (the "License"). You may not use 5 * this file except in compliance with the License. You can obtain a copy 6 * in the file LICENSE in the source distribution or at 7 * https://www.openssl.org/source/license.html 8 */ 9 10 #include <openssl/param_build.h> 11 12 /* used by speed.c */ 13 EVP_PKEY *get_dsa(int); 14 15 static unsigned char dsa512_priv[] = { 16 0x65, 17 0xe5, 18 0xc7, 19 0x38, 20 0x60, 21 0x24, 22 0xb5, 23 0x89, 24 0xd4, 25 0x9c, 26 0xeb, 27 0x4c, 28 0x9c, 29 0x1d, 30 0x7a, 31 0x22, 32 0xbd, 33 0xd1, 34 0xc2, 35 0xd2, 36 }; 37 38 static unsigned char dsa512_pub[] = { 39 0x00, 40 0x95, 41 0xa7, 42 0x0d, 43 0xec, 44 0x93, 45 0x68, 46 0xba, 47 0x5f, 48 0xf7, 49 0x5f, 50 0x07, 51 0xf2, 52 0x3b, 53 0xad, 54 0x6b, 55 0x01, 56 0xdc, 57 0xbe, 58 0xec, 59 0xde, 60 0x04, 61 0x7a, 62 0x3a, 63 0x27, 64 0xb3, 65 0xec, 66 0x49, 67 0xfd, 68 0x08, 69 0x43, 70 0x3d, 71 0x7e, 72 0xa8, 73 0x2c, 74 0x5e, 75 0x7b, 76 0xbb, 77 0xfc, 78 0xf4, 79 0x6e, 80 0xeb, 81 0x6c, 82 0xb0, 83 0x6e, 84 0xf8, 85 0x02, 86 0x12, 87 0x8c, 88 0x38, 89 0x5d, 90 0x83, 91 0x56, 92 0x7d, 93 0xee, 94 0x53, 95 0x05, 96 0x3e, 97 0x24, 98 0x84, 99 0xbe, 100 0xba, 101 0x0a, 102 0x6b, 103 0xc8, 104 }; 105 106 static unsigned char dsa512_p[] = { 107 0x9D, 108 0x1B, 109 0x69, 110 0x8E, 111 0x26, 112 0xDB, 113 0xF2, 114 0x2B, 115 0x11, 116 0x70, 117 0x19, 118 0x86, 119 0xF6, 120 0x19, 121 0xC8, 122 0xF8, 123 0x19, 124 0xF2, 125 0x18, 126 0x53, 127 0x94, 128 0x46, 129 0x06, 130 0xD0, 131 0x62, 132 0x50, 133 0x33, 134 0x4B, 135 0x02, 136 0x3C, 137 0x52, 138 0x30, 139 0x03, 140 0x8B, 141 0x3B, 142 0xF9, 143 0x5F, 144 0xD1, 145 0x24, 146 0x06, 147 0x4F, 148 0x7B, 149 0x4C, 150 0xBA, 151 0xAA, 152 0x40, 153 0x9B, 154 0xFD, 155 0x96, 156 0xE4, 157 0x37, 158 0x33, 159 0xBB, 160 0x2D, 161 0x5A, 162 0xD7, 163 0x5A, 164 0x11, 165 0x40, 166 0x66, 167 0xA2, 168 0x76, 169 0x7D, 170 0x31, 171 }; 172 173 static unsigned char dsa512_q[] = { 174 0xFB, 175 0x53, 176 0xEF, 177 0x50, 178 0xB4, 179 0x40, 180 0x92, 181 0x31, 182 0x56, 183 0x86, 184 0x53, 185 0x7A, 186 0xE8, 187 0x8B, 188 0x22, 189 0x9A, 190 0x49, 191 0xFB, 192 0x71, 193 0x8F, 194 }; 195 196 static unsigned char dsa512_g[] = { 197 0x83, 198 0x3E, 199 0x88, 200 0xE5, 201 0xC5, 202 0x89, 203 0x73, 204 0xCE, 205 0x3B, 206 0x6C, 207 0x01, 208 0x49, 209 0xBF, 210 0xB3, 211 0xC7, 212 0x9F, 213 0x0A, 214 0xEA, 215 0x44, 216 0x91, 217 0xE5, 218 0x30, 219 0xAA, 220 0xD9, 221 0xBE, 222 0x5B, 223 0x5F, 224 0xB7, 225 0x10, 226 0xD7, 227 0x89, 228 0xB7, 229 0x8E, 230 0x74, 231 0xFB, 232 0xCF, 233 0x29, 234 0x1E, 235 0xEB, 236 0xA8, 237 0x2C, 238 0x54, 239 0x51, 240 0xB8, 241 0x10, 242 0xDE, 243 0xA0, 244 0xCE, 245 0x2F, 246 0xCC, 247 0x24, 248 0x6B, 249 0x90, 250 0x77, 251 0xDE, 252 0xA2, 253 0x68, 254 0xA6, 255 0x52, 256 0x12, 257 0xA2, 258 0x03, 259 0x9D, 260 0x20, 261 }; 262 263 static unsigned char dsa1024_priv[] = { 264 0x7d, 265 0x21, 266 0xda, 267 0xbb, 268 0x62, 269 0x15, 270 0x47, 271 0x36, 272 0x07, 273 0x67, 274 0x12, 275 0xe8, 276 0x8c, 277 0xaa, 278 0x1c, 279 0xcd, 280 0x38, 281 0x12, 282 0x61, 283 0x18, 284 }; 285 286 static unsigned char dsa1024_pub[] = { 287 0x3c, 0x4e, 0x9c, 0x2a, 0x7f, 0x16, 0xc1, 0x25, 0xeb, 0xac, 0x78, 0x63, 288 0x90, 0x14, 0x8c, 0x8b, 0xf4, 0x68, 0x43, 0x3c, 0x2d, 0xee, 0x65, 0x50, 289 0x7d, 0x9c, 0x8f, 0x8c, 0x8a, 0x51, 0xd6, 0x11, 0x2b, 0x99, 0xaf, 0x1e, 290 0x90, 0x97, 0xb5, 0xd3, 0xa6, 0x20, 0x25, 0xd6, 0xfe, 0x43, 0x02, 0xd5, 291 0x91, 0x7d, 0xa7, 0x8c, 0xdb, 0xc9, 0x85, 0xa3, 0x36, 0x48, 0xf7, 0x68, 292 0xaa, 0x60, 0xb1, 0xf7, 0x05, 0x68, 0x3a, 0xa3, 0x3f, 0xd3, 0x19, 0x82, 293 0xd8, 0x82, 0x7a, 0x77, 0xfb, 0xef, 0xf4, 0x15, 0x0a, 0xeb, 0x06, 0x04, 294 0x7f, 0x53, 0x07, 0x0c, 0xbc, 0xcb, 0x2d, 0x83, 0xdb, 0x3e, 0xd1, 0x28, 295 0xa5, 0xa1, 0x31, 0xe0, 0x67, 0xfa, 0x50, 0xde, 0x9b, 0x07, 0x83, 0x7e, 296 0x2c, 0x0b, 0xc3, 0x13, 0x50, 0x61, 0xe5, 0xad, 0xbd, 0x36, 0xb8, 0x97, 297 0x4e, 0x40, 0x7d, 0xe8, 0x83, 0x0d, 0xbc, 0x4b 298 }; 299 300 static unsigned char dsa1024_p[] = { 301 0xA7, 302 0x3F, 303 0x6E, 304 0x85, 305 0xBF, 306 0x41, 307 0x6A, 308 0x29, 309 0x7D, 310 0xF0, 311 0x9F, 312 0x47, 313 0x19, 314 0x30, 315 0x90, 316 0x9A, 317 0x09, 318 0x1D, 319 0xDA, 320 0x6A, 321 0x33, 322 0x1E, 323 0xC5, 324 0x3D, 325 0x86, 326 0x96, 327 0xB3, 328 0x15, 329 0xE0, 330 0x53, 331 0x2E, 332 0x8F, 333 0xE0, 334 0x59, 335 0x82, 336 0x73, 337 0x90, 338 0x3E, 339 0x75, 340 0x31, 341 0x99, 342 0x47, 343 0x7A, 344 0x52, 345 0xFB, 346 0x85, 347 0xE4, 348 0xD9, 349 0xA6, 350 0x7B, 351 0x38, 352 0x9B, 353 0x68, 354 0x8A, 355 0x84, 356 0x9B, 357 0x87, 358 0xC6, 359 0x1E, 360 0xB5, 361 0x7E, 362 0x86, 363 0x4B, 364 0x53, 365 0x5B, 366 0x59, 367 0xCF, 368 0x71, 369 0x65, 370 0x19, 371 0x88, 372 0x6E, 373 0xCE, 374 0x66, 375 0xAE, 376 0x6B, 377 0x88, 378 0x36, 379 0xFB, 380 0xEC, 381 0x28, 382 0xDC, 383 0xC2, 384 0xD7, 385 0xA5, 386 0xBB, 387 0xE5, 388 0x2C, 389 0x39, 390 0x26, 391 0x4B, 392 0xDA, 393 0x9A, 394 0x70, 395 0x18, 396 0x95, 397 0x37, 398 0x95, 399 0x10, 400 0x56, 401 0x23, 402 0xF6, 403 0x15, 404 0xED, 405 0xBA, 406 0x04, 407 0x5E, 408 0xDE, 409 0x39, 410 0x4F, 411 0xFD, 412 0xB7, 413 0x43, 414 0x1F, 415 0xB5, 416 0xA4, 417 0x65, 418 0x6F, 419 0xCD, 420 0x80, 421 0x11, 422 0xE4, 423 0x70, 424 0x95, 425 0x5B, 426 0x50, 427 0xCD, 428 0x49, 429 }; 430 431 static unsigned char dsa1024_q[] = { 432 0xF7, 433 0x07, 434 0x31, 435 0xED, 436 0xFA, 437 0x6C, 438 0x06, 439 0x03, 440 0xD5, 441 0x85, 442 0x8A, 443 0x1C, 444 0xAC, 445 0x9C, 446 0x65, 447 0xE7, 448 0x50, 449 0x66, 450 0x65, 451 0x6F, 452 }; 453 454 static unsigned char dsa1024_g[] = { 455 0x4D, 456 0xDF, 457 0x4C, 458 0x03, 459 0xA6, 460 0x91, 461 0x8A, 462 0xF5, 463 0x19, 464 0x6F, 465 0x50, 466 0x46, 467 0x25, 468 0x99, 469 0xE5, 470 0x68, 471 0x6F, 472 0x30, 473 0xE3, 474 0x69, 475 0xE1, 476 0xE5, 477 0xB3, 478 0x5D, 479 0x98, 480 0xBB, 481 0x28, 482 0x86, 483 0x48, 484 0xFC, 485 0xDE, 486 0x99, 487 0x04, 488 0x3F, 489 0x5F, 490 0x88, 491 0x0C, 492 0x9C, 493 0x73, 494 0x24, 495 0x0D, 496 0x20, 497 0x5D, 498 0xB9, 499 0x2A, 500 0x9A, 501 0x3F, 502 0x18, 503 0x96, 504 0x27, 505 0xE4, 506 0x62, 507 0x87, 508 0xC1, 509 0x7B, 510 0x74, 511 0x62, 512 0x53, 513 0xFC, 514 0x61, 515 0x27, 516 0xA8, 517 0x7A, 518 0x91, 519 0x09, 520 0x9D, 521 0xB6, 522 0xF1, 523 0x4D, 524 0x9C, 525 0x54, 526 0x0F, 527 0x58, 528 0x06, 529 0xEE, 530 0x49, 531 0x74, 532 0x07, 533 0xCE, 534 0x55, 535 0x7E, 536 0x23, 537 0xCE, 538 0x16, 539 0xF6, 540 0xCA, 541 0xDC, 542 0x5A, 543 0x61, 544 0x01, 545 0x7E, 546 0xC9, 547 0x71, 548 0xB5, 549 0x4D, 550 0xF6, 551 0xDC, 552 0x34, 553 0x29, 554 0x87, 555 0x68, 556 0xF6, 557 0x5E, 558 0x20, 559 0x93, 560 0xB3, 561 0xDB, 562 0xF5, 563 0xE4, 564 0x09, 565 0x6C, 566 0x41, 567 0x17, 568 0x95, 569 0x92, 570 0xEB, 571 0x01, 572 0xB5, 573 0x73, 574 0xA5, 575 0x6A, 576 0x7E, 577 0xD8, 578 0x32, 579 0xED, 580 0x0E, 581 0x02, 582 0xB8, 583 }; 584 585 static unsigned char dsa2048_priv[] = { 586 0x32, 587 0x67, 588 0x92, 589 0xf6, 590 0xc4, 591 0xe2, 592 0xe2, 593 0xe8, 594 0xa0, 595 0x8b, 596 0x6b, 597 0x45, 598 0x0c, 599 0x8a, 600 0x76, 601 0xb0, 602 0xee, 603 0xcf, 604 0x91, 605 0xa7, 606 }; 607 608 static unsigned char dsa2048_pub[] = { 609 0x17, 610 0x8f, 611 0xa8, 612 0x11, 613 0x84, 614 0x92, 615 0xec, 616 0x83, 617 0x47, 618 0xc7, 619 0x6a, 620 0xb0, 621 0x92, 622 0xaf, 623 0x5a, 624 0x20, 625 0x37, 626 0xa3, 627 0x64, 628 0x79, 629 0xd2, 630 0xd0, 631 0x3d, 632 0xcd, 633 0xe0, 634 0x61, 635 0x88, 636 0x88, 637 0x21, 638 0xcc, 639 0x74, 640 0x5d, 641 0xce, 642 0x4c, 643 0x51, 644 0x47, 645 0xf0, 646 0xc5, 647 0x5c, 648 0x4c, 649 0x82, 650 0x7a, 651 0xaf, 652 0x72, 653 0xad, 654 0xb9, 655 0xe0, 656 0x53, 657 0xf2, 658 0x78, 659 0xb7, 660 0xf0, 661 0xb5, 662 0x48, 663 0x7f, 664 0x8a, 665 0x3a, 666 0x18, 667 0xd1, 668 0x9f, 669 0x8b, 670 0x7d, 671 0xa5, 672 0x47, 673 0xb7, 674 0x95, 675 0xab, 676 0x98, 677 0xf8, 678 0x7b, 679 0x74, 680 0x50, 681 0x56, 682 0x8e, 683 0x57, 684 0xf0, 685 0xee, 686 0xf5, 687 0xb7, 688 0xba, 689 0xab, 690 0x85, 691 0x86, 692 0xf9, 693 0x2b, 694 0xef, 695 0x41, 696 0x56, 697 0xa0, 698 0xa4, 699 0x9f, 700 0xb7, 701 0x38, 702 0x00, 703 0x46, 704 0x0a, 705 0xa6, 706 0xf1, 707 0xfc, 708 0x1f, 709 0xd8, 710 0x4e, 711 0x85, 712 0x44, 713 0x92, 714 0x43, 715 0x21, 716 0x5d, 717 0x6e, 718 0xcc, 719 0xc2, 720 0xcb, 721 0x26, 722 0x31, 723 0x0d, 724 0x21, 725 0xc4, 726 0xbd, 727 0x8d, 728 0x24, 729 0xbc, 730 0xd9, 731 0x18, 732 0x19, 733 0xd7, 734 0xdc, 735 0xf1, 736 0xe7, 737 0x93, 738 0x50, 739 0x48, 740 0x03, 741 0x2c, 742 0xae, 743 0x2e, 744 0xe7, 745 0x49, 746 0x88, 747 0x5f, 748 0x93, 749 0x57, 750 0x27, 751 0x99, 752 0x36, 753 0xb4, 754 0x20, 755 0xab, 756 0xfc, 757 0xa7, 758 0x2b, 759 0xf2, 760 0xd9, 761 0x98, 762 0xd7, 763 0xd4, 764 0x34, 765 0x9d, 766 0x96, 767 0x50, 768 0x58, 769 0x9a, 770 0xea, 771 0x54, 772 0xf3, 773 0xee, 774 0xf5, 775 0x63, 776 0x14, 777 0xee, 778 0x85, 779 0x83, 780 0x74, 781 0x76, 782 0xe1, 783 0x52, 784 0x95, 785 0xc3, 786 0xf7, 787 0xeb, 788 0x04, 789 0x04, 790 0x7b, 791 0xa7, 792 0x28, 793 0x1b, 794 0xcc, 795 0xea, 796 0x4a, 797 0x4e, 798 0x84, 799 0xda, 800 0xd8, 801 0x9c, 802 0x79, 803 0xd8, 804 0x9b, 805 0x66, 806 0x89, 807 0x2f, 808 0xcf, 809 0xac, 810 0xd7, 811 0x79, 812 0xf9, 813 0xa9, 814 0xd8, 815 0x45, 816 0x13, 817 0x78, 818 0xb9, 819 0x00, 820 0x14, 821 0xc9, 822 0x7e, 823 0x22, 824 0x51, 825 0x86, 826 0x67, 827 0xb0, 828 0x9f, 829 0x26, 830 0x11, 831 0x23, 832 0xc8, 833 0x38, 834 0xd7, 835 0x70, 836 0x1d, 837 0x15, 838 0x8e, 839 0x4d, 840 0x4f, 841 0x95, 842 0x97, 843 0x40, 844 0xa1, 845 0xc2, 846 0x7e, 847 0x01, 848 0x18, 849 0x72, 850 0xf4, 851 0x10, 852 0xe6, 853 0x8d, 854 0x52, 855 0x16, 856 0x7f, 857 0xf2, 858 0xc9, 859 0xf8, 860 0x33, 861 0x8b, 862 0x33, 863 0xb7, 864 0xce, 865 }; 866 867 static unsigned char dsa2048_p[] = { 868 0xA0, 869 0x25, 870 0xFA, 871 0xAD, 872 0xF4, 873 0x8E, 874 0xB9, 875 0xE5, 876 0x99, 877 0xF3, 878 0x5D, 879 0x6F, 880 0x4F, 881 0x83, 882 0x34, 883 0xE2, 884 0x7E, 885 0xCF, 886 0x6F, 887 0xBF, 888 0x30, 889 0xAF, 890 0x6F, 891 0x81, 892 0xEB, 893 0xF8, 894 0xC4, 895 0x13, 896 0xD9, 897 0xA0, 898 0x5D, 899 0x8B, 900 0x5C, 901 0x8E, 902 0xDC, 903 0xC2, 904 0x1D, 905 0x0B, 906 0x41, 907 0x32, 908 0xB0, 909 0x1F, 910 0xFE, 911 0xEF, 912 0x0C, 913 0xC2, 914 0xA2, 915 0x7E, 916 0x68, 917 0x5C, 918 0x28, 919 0x21, 920 0xE9, 921 0xF5, 922 0xB1, 923 0x58, 924 0x12, 925 0x63, 926 0x4C, 927 0x19, 928 0x4E, 929 0xFF, 930 0x02, 931 0x4B, 932 0x92, 933 0xED, 934 0xD2, 935 0x07, 936 0x11, 937 0x4D, 938 0x8C, 939 0x58, 940 0x16, 941 0x5C, 942 0x55, 943 0x8E, 944 0xAD, 945 0xA3, 946 0x67, 947 0x7D, 948 0xB9, 949 0x86, 950 0x6E, 951 0x0B, 952 0xE6, 953 0x54, 954 0x6F, 955 0x40, 956 0xAE, 957 0x0E, 958 0x67, 959 0x4C, 960 0xF9, 961 0x12, 962 0x5B, 963 0x3C, 964 0x08, 965 0x7A, 966 0xF7, 967 0xFC, 968 0x67, 969 0x86, 970 0x69, 971 0xE7, 972 0x0A, 973 0x94, 974 0x40, 975 0xBF, 976 0x8B, 977 0x76, 978 0xFE, 979 0x26, 980 0xD1, 981 0xF2, 982 0xA1, 983 0x1A, 984 0x84, 985 0xA1, 986 0x43, 987 0x56, 988 0x28, 989 0xBC, 990 0x9A, 991 0x5F, 992 0xD7, 993 0x3B, 994 0x69, 995 0x89, 996 0x8A, 997 0x36, 998 0x2C, 999 0x51, 1000 0xDF, 1001 0x12, 1002 0x77, 1003 0x2F, 1004 0x57, 1005 0x7B, 1006 0xA0, 1007 0xAA, 1008 0xDD, 1009 0x7F, 1010 0xA1, 1011 0x62, 1012 0x3B, 1013 0x40, 1014 0x7B, 1015 0x68, 1016 0x1A, 1017 0x8F, 1018 0x0D, 1019 0x38, 1020 0xBB, 1021 0x21, 1022 0x5D, 1023 0x18, 1024 0xFC, 1025 0x0F, 1026 0x46, 1027 0xF7, 1028 0xA3, 1029 0xB0, 1030 0x1D, 1031 0x23, 1032 0xC3, 1033 0xD2, 1034 0xC7, 1035 0x72, 1036 0x51, 1037 0x18, 1038 0xDF, 1039 0x46, 1040 0x95, 1041 0x79, 1042 0xD9, 1043 0xBD, 1044 0xB5, 1045 0x19, 1046 0x02, 1047 0x2C, 1048 0x87, 1049 0xDC, 1050 0xE7, 1051 0x57, 1052 0x82, 1053 0x7E, 1054 0xF1, 1055 0x8B, 1056 0x06, 1057 0x3D, 1058 0x00, 1059 0xA5, 1060 0x7B, 1061 0x6B, 1062 0x26, 1063 0x27, 1064 0x91, 1065 0x0F, 1066 0x6A, 1067 0x77, 1068 0xE4, 1069 0xD5, 1070 0x04, 1071 0xE4, 1072 0x12, 1073 0x2C, 1074 0x42, 1075 0xFF, 1076 0xD2, 1077 0x88, 1078 0xBB, 1079 0xD3, 1080 0x92, 1081 0xA0, 1082 0xF9, 1083 0xC8, 1084 0x51, 1085 0x64, 1086 0x14, 1087 0x5C, 1088 0xD8, 1089 0xF9, 1090 0x6C, 1091 0x47, 1092 0x82, 1093 0xB4, 1094 0x1C, 1095 0x7F, 1096 0x09, 1097 0xB8, 1098 0xF0, 1099 0x25, 1100 0x83, 1101 0x1D, 1102 0x3F, 1103 0x3F, 1104 0x05, 1105 0xB3, 1106 0x21, 1107 0x0A, 1108 0x5D, 1109 0xA7, 1110 0xD8, 1111 0x54, 1112 0xC3, 1113 0x65, 1114 0x7D, 1115 0xC3, 1116 0xB0, 1117 0x1D, 1118 0xBF, 1119 0xAE, 1120 0xF8, 1121 0x68, 1122 0xCF, 1123 0x9B, 1124 }; 1125 1126 static unsigned char dsa2048_q[] = { 1127 0x97, 1128 0xE7, 1129 0x33, 1130 0x4D, 1131 0xD3, 1132 0x94, 1133 0x3E, 1134 0x0B, 1135 0xDB, 1136 0x62, 1137 0x74, 1138 0xC6, 1139 0xA1, 1140 0x08, 1141 0xDD, 1142 0x19, 1143 0xA3, 1144 0x75, 1145 0x17, 1146 0x1B, 1147 }; 1148 1149 static unsigned char dsa2048_g[] = { 1150 0x2C, 1151 0x78, 1152 0x16, 1153 0x59, 1154 0x34, 1155 0x63, 1156 0xF4, 1157 0xF3, 1158 0x92, 1159 0xFC, 1160 0xB5, 1161 0xA5, 1162 0x4F, 1163 0x13, 1164 0xDE, 1165 0x2F, 1166 0x1C, 1167 0xA4, 1168 0x3C, 1169 0xAE, 1170 0xAD, 1171 0x38, 1172 0x3F, 1173 0x7E, 1174 0x90, 1175 0xBF, 1176 0x96, 1177 0xA6, 1178 0xAE, 1179 0x25, 1180 0x90, 1181 0x72, 1182 0xF5, 1183 0x8E, 1184 0x80, 1185 0x0C, 1186 0x39, 1187 0x1C, 1188 0xD9, 1189 0xEC, 1190 0xBA, 1191 0x90, 1192 0x5B, 1193 0x3A, 1194 0xE8, 1195 0x58, 1196 0x6C, 1197 0x9E, 1198 0x30, 1199 0x42, 1200 0x37, 1201 0x02, 1202 0x31, 1203 0x82, 1204 0xBC, 1205 0x6A, 1206 0xDF, 1207 0x6A, 1208 0x09, 1209 0x29, 1210 0xE3, 1211 0xC0, 1212 0x46, 1213 0xD1, 1214 0xCB, 1215 0x85, 1216 0xEC, 1217 0x0C, 1218 0x30, 1219 0x5E, 1220 0xEA, 1221 0xC8, 1222 0x39, 1223 0x8E, 1224 0x22, 1225 0x9F, 1226 0x22, 1227 0x10, 1228 0xD2, 1229 0x34, 1230 0x61, 1231 0x68, 1232 0x37, 1233 0x3D, 1234 0x2E, 1235 0x4A, 1236 0x5B, 1237 0x9A, 1238 0xF5, 1239 0xC1, 1240 0x48, 1241 0xC6, 1242 0xF6, 1243 0xDC, 1244 0x63, 1245 0x1A, 1246 0xD3, 1247 0x96, 1248 0x64, 1249 0xBA, 1250 0x34, 1251 0xC9, 1252 0xD1, 1253 0xA0, 1254 0xD1, 1255 0xAE, 1256 0x6C, 1257 0x2F, 1258 0x48, 1259 0x17, 1260 0x93, 1261 0x14, 1262 0x43, 1263 0xED, 1264 0xF0, 1265 0x21, 1266 0x30, 1267 0x19, 1268 0xC3, 1269 0x1B, 1270 0x5F, 1271 0xDE, 1272 0xA3, 1273 0xF0, 1274 0x70, 1275 0x78, 1276 0x18, 1277 0xE1, 1278 0xA8, 1279 0xE4, 1280 0xEE, 1281 0x2E, 1282 0x00, 1283 0xA5, 1284 0xE4, 1285 0xB3, 1286 0x17, 1287 0xC8, 1288 0x0C, 1289 0x7D, 1290 0x6E, 1291 0x42, 1292 0xDC, 1293 0xB7, 1294 0x46, 1295 0x00, 1296 0x36, 1297 0x4D, 1298 0xD4, 1299 0x46, 1300 0xAA, 1301 0x3D, 1302 0x3C, 1303 0x46, 1304 0x89, 1305 0x40, 1306 0xBF, 1307 0x1D, 1308 0x84, 1309 0x77, 1310 0x0A, 1311 0x75, 1312 0xF3, 1313 0x87, 1314 0x1D, 1315 0x08, 1316 0x4C, 1317 0xA6, 1318 0xD1, 1319 0xA9, 1320 0x1C, 1321 0x1E, 1322 0x12, 1323 0x1E, 1324 0xE1, 1325 0xC7, 1326 0x30, 1327 0x28, 1328 0x76, 1329 0xA5, 1330 0x7F, 1331 0x6C, 1332 0x85, 1333 0x96, 1334 0x2B, 1335 0x6F, 1336 0xDB, 1337 0x80, 1338 0x66, 1339 0x26, 1340 0xAE, 1341 0xF5, 1342 0x93, 1343 0xC7, 1344 0x8E, 1345 0xAE, 1346 0x9A, 1347 0xED, 1348 0xE4, 1349 0xCA, 1350 0x04, 1351 0xEA, 1352 0x3B, 1353 0x72, 1354 0xEF, 1355 0xDC, 1356 0x87, 1357 0xED, 1358 0x0D, 1359 0xA5, 1360 0x4C, 1361 0x4A, 1362 0xDD, 1363 0x71, 1364 0x22, 1365 0x64, 1366 0x59, 1367 0x69, 1368 0x4E, 1369 0x8E, 1370 0xBF, 1371 0x43, 1372 0xDC, 1373 0xAB, 1374 0x8E, 1375 0x66, 1376 0xBB, 1377 0x01, 1378 0xB6, 1379 0xF4, 1380 0xE7, 1381 0xFD, 1382 0xD2, 1383 0xAD, 1384 0x9F, 1385 0x36, 1386 0xC1, 1387 0xA0, 1388 0x29, 1389 0x99, 1390 0xD1, 1391 0x96, 1392 0x70, 1393 0x59, 1394 0x06, 1395 0x78, 1396 0x35, 1397 0xBD, 1398 0x65, 1399 0x55, 1400 0x52, 1401 0x9E, 1402 0xF8, 1403 0xB2, 1404 0xE5, 1405 0x38, 1406 }; 1407 1408 typedef struct testdsa_st { 1409 unsigned char *priv; 1410 unsigned char *pub; 1411 unsigned char *p; 1412 unsigned char *g; 1413 unsigned char *q; 1414 int priv_l; 1415 int pub_l; 1416 int p_l; 1417 int g_l; 1418 int q_l; 1419 } testdsa; 1420 1421 #define set_dsa_ptr(st, bits) \ 1422 do { \ 1423 st.priv = dsa##bits##_priv; \ 1424 st.pub = dsa##bits##_pub; \ 1425 st.p = dsa##bits##_p; \ 1426 st.g = dsa##bits##_g; \ 1427 st.q = dsa##bits##_q; \ 1428 st.priv_l = sizeof(dsa##bits##_priv); \ 1429 st.pub_l = sizeof(dsa##bits##_pub); \ 1430 st.p_l = sizeof(dsa##bits##_p); \ 1431 st.g_l = sizeof(dsa##bits##_g); \ 1432 st.q_l = sizeof(dsa##bits##_q); \ 1433 } while (0) 1434 1435 EVP_PKEY *get_dsa(int dsa_bits) 1436 { 1437 EVP_PKEY *pkey = NULL; 1438 BIGNUM *priv_key, *pub_key, *p, *q, *g; 1439 EVP_PKEY_CTX *pctx; 1440 testdsa dsa_t; 1441 OSSL_PARAM_BLD *tmpl = NULL; 1442 OSSL_PARAM *params = NULL; 1443 1444 switch (dsa_bits) { 1445 case 512: 1446 set_dsa_ptr(dsa_t, 512); 1447 break; 1448 case 1024: 1449 set_dsa_ptr(dsa_t, 1024); 1450 break; 1451 case 2048: 1452 set_dsa_ptr(dsa_t, 2048); 1453 break; 1454 default: 1455 return NULL; 1456 } 1457 1458 if ((pctx = EVP_PKEY_CTX_new_from_name(NULL, "DSA", NULL)) == NULL) 1459 return NULL; 1460 1461 priv_key = BN_bin2bn(dsa_t.priv, dsa_t.priv_l, NULL); 1462 pub_key = BN_bin2bn(dsa_t.pub, dsa_t.pub_l, NULL); 1463 p = BN_bin2bn(dsa_t.p, dsa_t.p_l, NULL); 1464 q = BN_bin2bn(dsa_t.q, dsa_t.q_l, NULL); 1465 g = BN_bin2bn(dsa_t.g, dsa_t.g_l, NULL); 1466 if (priv_key == NULL || pub_key == NULL || p == NULL || q == NULL 1467 || g == NULL) { 1468 goto err; 1469 } 1470 if ((tmpl = OSSL_PARAM_BLD_new()) == NULL 1471 || !OSSL_PARAM_BLD_push_BN(tmpl, OSSL_PKEY_PARAM_FFC_P, 1472 p) 1473 || !OSSL_PARAM_BLD_push_BN(tmpl, OSSL_PKEY_PARAM_FFC_Q, 1474 q) 1475 || !OSSL_PARAM_BLD_push_BN(tmpl, OSSL_PKEY_PARAM_FFC_G, 1476 g) 1477 || !OSSL_PARAM_BLD_push_BN(tmpl, OSSL_PKEY_PARAM_PRIV_KEY, 1478 priv_key) 1479 || !OSSL_PARAM_BLD_push_BN(tmpl, OSSL_PKEY_PARAM_PUB_KEY, 1480 pub_key) 1481 || (params = OSSL_PARAM_BLD_to_param(tmpl)) == NULL) 1482 goto err; 1483 1484 if (EVP_PKEY_fromdata_init(pctx) <= 0 1485 || EVP_PKEY_fromdata(pctx, &pkey, EVP_PKEY_KEYPAIR, 1486 params) 1487 <= 0) 1488 pkey = NULL; 1489 err: 1490 OSSL_PARAM_free(params); 1491 OSSL_PARAM_BLD_free(tmpl); 1492 BN_free(priv_key); 1493 BN_free(pub_key); 1494 BN_free(p); 1495 BN_free(q); 1496 BN_free(g); 1497 EVP_PKEY_CTX_free(pctx); 1498 return pkey; 1499 } 1500