Home | History | Annotate | Line # | Download | only in apps
      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