1e71b7053SJung-uk Kim /*
2*b077aed3SPierre Pronchery * Copyright 1998-2021 The OpenSSL Project Authors. All Rights Reserved.
3e71b7053SJung-uk Kim *
4*b077aed3SPierre Pronchery * Licensed under the Apache License 2.0 (the "License"). You may not use
5e71b7053SJung-uk Kim * this file except in compliance with the License. You can obtain a copy
6e71b7053SJung-uk Kim * in the file LICENSE in the source distribution or at
7e71b7053SJung-uk Kim * https://www.openssl.org/source/license.html
8e71b7053SJung-uk Kim */
9e71b7053SJung-uk Kim
10*b077aed3SPierre Pronchery #include <openssl/param_build.h>
11*b077aed3SPierre Pronchery
12e71b7053SJung-uk Kim /* used by speed.c */
13*b077aed3SPierre Pronchery EVP_PKEY *get_dsa(int);
14e71b7053SJung-uk Kim
155c87c606SMark Murray static unsigned char dsa512_priv[] = {
165c87c606SMark Murray 0x65, 0xe5, 0xc7, 0x38, 0x60, 0x24, 0xb5, 0x89, 0xd4, 0x9c, 0xeb, 0x4c,
175c87c606SMark Murray 0x9c, 0x1d, 0x7a, 0x22, 0xbd, 0xd1, 0xc2, 0xd2,
185c87c606SMark Murray };
196f9291ceSJung-uk Kim
205c87c606SMark Murray static unsigned char dsa512_pub[] = {
215c87c606SMark Murray 0x00, 0x95, 0xa7, 0x0d, 0xec, 0x93, 0x68, 0xba, 0x5f, 0xf7, 0x5f, 0x07,
225c87c606SMark Murray 0xf2, 0x3b, 0xad, 0x6b, 0x01, 0xdc, 0xbe, 0xec, 0xde, 0x04, 0x7a, 0x3a,
235c87c606SMark Murray 0x27, 0xb3, 0xec, 0x49, 0xfd, 0x08, 0x43, 0x3d, 0x7e, 0xa8, 0x2c, 0x5e,
245c87c606SMark Murray 0x7b, 0xbb, 0xfc, 0xf4, 0x6e, 0xeb, 0x6c, 0xb0, 0x6e, 0xf8, 0x02, 0x12,
255c87c606SMark Murray 0x8c, 0x38, 0x5d, 0x83, 0x56, 0x7d, 0xee, 0x53, 0x05, 0x3e, 0x24, 0x84,
265c87c606SMark Murray 0xbe, 0xba, 0x0a, 0x6b, 0xc8,
275c87c606SMark Murray };
286f9291ceSJung-uk Kim
2974664626SKris Kennaway static unsigned char dsa512_p[] = {
3074664626SKris Kennaway 0x9D, 0x1B, 0x69, 0x8E, 0x26, 0xDB, 0xF2, 0x2B, 0x11, 0x70, 0x19, 0x86,
3174664626SKris Kennaway 0xF6, 0x19, 0xC8, 0xF8, 0x19, 0xF2, 0x18, 0x53, 0x94, 0x46, 0x06, 0xD0,
3274664626SKris Kennaway 0x62, 0x50, 0x33, 0x4B, 0x02, 0x3C, 0x52, 0x30, 0x03, 0x8B, 0x3B, 0xF9,
3374664626SKris Kennaway 0x5F, 0xD1, 0x24, 0x06, 0x4F, 0x7B, 0x4C, 0xBA, 0xAA, 0x40, 0x9B, 0xFD,
3474664626SKris Kennaway 0x96, 0xE4, 0x37, 0x33, 0xBB, 0x2D, 0x5A, 0xD7, 0x5A, 0x11, 0x40, 0x66,
3574664626SKris Kennaway 0xA2, 0x76, 0x7D, 0x31,
3674664626SKris Kennaway };
376f9291ceSJung-uk Kim
3874664626SKris Kennaway static unsigned char dsa512_q[] = {
3974664626SKris Kennaway 0xFB, 0x53, 0xEF, 0x50, 0xB4, 0x40, 0x92, 0x31, 0x56, 0x86, 0x53, 0x7A,
4074664626SKris Kennaway 0xE8, 0x8B, 0x22, 0x9A, 0x49, 0xFB, 0x71, 0x8F,
4174664626SKris Kennaway };
426f9291ceSJung-uk Kim
4374664626SKris Kennaway static unsigned char dsa512_g[] = {
4474664626SKris Kennaway 0x83, 0x3E, 0x88, 0xE5, 0xC5, 0x89, 0x73, 0xCE, 0x3B, 0x6C, 0x01, 0x49,
4574664626SKris Kennaway 0xBF, 0xB3, 0xC7, 0x9F, 0x0A, 0xEA, 0x44, 0x91, 0xE5, 0x30, 0xAA, 0xD9,
4674664626SKris Kennaway 0xBE, 0x5B, 0x5F, 0xB7, 0x10, 0xD7, 0x89, 0xB7, 0x8E, 0x74, 0xFB, 0xCF,
4774664626SKris Kennaway 0x29, 0x1E, 0xEB, 0xA8, 0x2C, 0x54, 0x51, 0xB8, 0x10, 0xDE, 0xA0, 0xCE,
4874664626SKris Kennaway 0x2F, 0xCC, 0x24, 0x6B, 0x90, 0x77, 0xDE, 0xA2, 0x68, 0xA6, 0x52, 0x12,
4974664626SKris Kennaway 0xA2, 0x03, 0x9D, 0x20,
5074664626SKris Kennaway };
5174664626SKris Kennaway
525c87c606SMark Murray static unsigned char dsa1024_priv[] = {
535c87c606SMark Murray 0x7d, 0x21, 0xda, 0xbb, 0x62, 0x15, 0x47, 0x36, 0x07, 0x67, 0x12, 0xe8,
545c87c606SMark Murray 0x8c, 0xaa, 0x1c, 0xcd, 0x38, 0x12, 0x61, 0x18,
555c87c606SMark Murray };
566f9291ceSJung-uk Kim
575c87c606SMark Murray static unsigned char dsa1024_pub[] = {
585c87c606SMark Murray 0x3c, 0x4e, 0x9c, 0x2a, 0x7f, 0x16, 0xc1, 0x25, 0xeb, 0xac, 0x78, 0x63,
595c87c606SMark Murray 0x90, 0x14, 0x8c, 0x8b, 0xf4, 0x68, 0x43, 0x3c, 0x2d, 0xee, 0x65, 0x50,
605c87c606SMark Murray 0x7d, 0x9c, 0x8f, 0x8c, 0x8a, 0x51, 0xd6, 0x11, 0x2b, 0x99, 0xaf, 0x1e,
615c87c606SMark Murray 0x90, 0x97, 0xb5, 0xd3, 0xa6, 0x20, 0x25, 0xd6, 0xfe, 0x43, 0x02, 0xd5,
625c87c606SMark Murray 0x91, 0x7d, 0xa7, 0x8c, 0xdb, 0xc9, 0x85, 0xa3, 0x36, 0x48, 0xf7, 0x68,
635c87c606SMark Murray 0xaa, 0x60, 0xb1, 0xf7, 0x05, 0x68, 0x3a, 0xa3, 0x3f, 0xd3, 0x19, 0x82,
645c87c606SMark Murray 0xd8, 0x82, 0x7a, 0x77, 0xfb, 0xef, 0xf4, 0x15, 0x0a, 0xeb, 0x06, 0x04,
655c87c606SMark Murray 0x7f, 0x53, 0x07, 0x0c, 0xbc, 0xcb, 0x2d, 0x83, 0xdb, 0x3e, 0xd1, 0x28,
665c87c606SMark Murray 0xa5, 0xa1, 0x31, 0xe0, 0x67, 0xfa, 0x50, 0xde, 0x9b, 0x07, 0x83, 0x7e,
675c87c606SMark Murray 0x2c, 0x0b, 0xc3, 0x13, 0x50, 0x61, 0xe5, 0xad, 0xbd, 0x36, 0xb8, 0x97,
685c87c606SMark Murray 0x4e, 0x40, 0x7d, 0xe8, 0x83, 0x0d, 0xbc, 0x4b
695c87c606SMark Murray };
706f9291ceSJung-uk Kim
7174664626SKris Kennaway static unsigned char dsa1024_p[] = {
7274664626SKris Kennaway 0xA7, 0x3F, 0x6E, 0x85, 0xBF, 0x41, 0x6A, 0x29, 0x7D, 0xF0, 0x9F, 0x47,
7374664626SKris Kennaway 0x19, 0x30, 0x90, 0x9A, 0x09, 0x1D, 0xDA, 0x6A, 0x33, 0x1E, 0xC5, 0x3D,
7474664626SKris Kennaway 0x86, 0x96, 0xB3, 0x15, 0xE0, 0x53, 0x2E, 0x8F, 0xE0, 0x59, 0x82, 0x73,
7574664626SKris Kennaway 0x90, 0x3E, 0x75, 0x31, 0x99, 0x47, 0x7A, 0x52, 0xFB, 0x85, 0xE4, 0xD9,
7674664626SKris Kennaway 0xA6, 0x7B, 0x38, 0x9B, 0x68, 0x8A, 0x84, 0x9B, 0x87, 0xC6, 0x1E, 0xB5,
7774664626SKris Kennaway 0x7E, 0x86, 0x4B, 0x53, 0x5B, 0x59, 0xCF, 0x71, 0x65, 0x19, 0x88, 0x6E,
7874664626SKris Kennaway 0xCE, 0x66, 0xAE, 0x6B, 0x88, 0x36, 0xFB, 0xEC, 0x28, 0xDC, 0xC2, 0xD7,
7974664626SKris Kennaway 0xA5, 0xBB, 0xE5, 0x2C, 0x39, 0x26, 0x4B, 0xDA, 0x9A, 0x70, 0x18, 0x95,
8074664626SKris Kennaway 0x37, 0x95, 0x10, 0x56, 0x23, 0xF6, 0x15, 0xED, 0xBA, 0x04, 0x5E, 0xDE,
8174664626SKris Kennaway 0x39, 0x4F, 0xFD, 0xB7, 0x43, 0x1F, 0xB5, 0xA4, 0x65, 0x6F, 0xCD, 0x80,
8274664626SKris Kennaway 0x11, 0xE4, 0x70, 0x95, 0x5B, 0x50, 0xCD, 0x49,
8374664626SKris Kennaway };
846f9291ceSJung-uk Kim
8574664626SKris Kennaway static unsigned char dsa1024_q[] = {
8674664626SKris Kennaway 0xF7, 0x07, 0x31, 0xED, 0xFA, 0x6C, 0x06, 0x03, 0xD5, 0x85, 0x8A, 0x1C,
8774664626SKris Kennaway 0xAC, 0x9C, 0x65, 0xE7, 0x50, 0x66, 0x65, 0x6F,
8874664626SKris Kennaway };
896f9291ceSJung-uk Kim
9074664626SKris Kennaway static unsigned char dsa1024_g[] = {
9174664626SKris Kennaway 0x4D, 0xDF, 0x4C, 0x03, 0xA6, 0x91, 0x8A, 0xF5, 0x19, 0x6F, 0x50, 0x46,
9274664626SKris Kennaway 0x25, 0x99, 0xE5, 0x68, 0x6F, 0x30, 0xE3, 0x69, 0xE1, 0xE5, 0xB3, 0x5D,
9374664626SKris Kennaway 0x98, 0xBB, 0x28, 0x86, 0x48, 0xFC, 0xDE, 0x99, 0x04, 0x3F, 0x5F, 0x88,
9474664626SKris Kennaway 0x0C, 0x9C, 0x73, 0x24, 0x0D, 0x20, 0x5D, 0xB9, 0x2A, 0x9A, 0x3F, 0x18,
9574664626SKris Kennaway 0x96, 0x27, 0xE4, 0x62, 0x87, 0xC1, 0x7B, 0x74, 0x62, 0x53, 0xFC, 0x61,
9674664626SKris Kennaway 0x27, 0xA8, 0x7A, 0x91, 0x09, 0x9D, 0xB6, 0xF1, 0x4D, 0x9C, 0x54, 0x0F,
9774664626SKris Kennaway 0x58, 0x06, 0xEE, 0x49, 0x74, 0x07, 0xCE, 0x55, 0x7E, 0x23, 0xCE, 0x16,
9874664626SKris Kennaway 0xF6, 0xCA, 0xDC, 0x5A, 0x61, 0x01, 0x7E, 0xC9, 0x71, 0xB5, 0x4D, 0xF6,
9974664626SKris Kennaway 0xDC, 0x34, 0x29, 0x87, 0x68, 0xF6, 0x5E, 0x20, 0x93, 0xB3, 0xDB, 0xF5,
10074664626SKris Kennaway 0xE4, 0x09, 0x6C, 0x41, 0x17, 0x95, 0x92, 0xEB, 0x01, 0xB5, 0x73, 0xA5,
10174664626SKris Kennaway 0x6A, 0x7E, 0xD8, 0x32, 0xED, 0x0E, 0x02, 0xB8,
10274664626SKris Kennaway };
10374664626SKris Kennaway
1045c87c606SMark Murray static unsigned char dsa2048_priv[] = {
1055c87c606SMark Murray 0x32, 0x67, 0x92, 0xf6, 0xc4, 0xe2, 0xe2, 0xe8, 0xa0, 0x8b, 0x6b, 0x45,
1065c87c606SMark Murray 0x0c, 0x8a, 0x76, 0xb0, 0xee, 0xcf, 0x91, 0xa7,
1075c87c606SMark Murray };
1086f9291ceSJung-uk Kim
1095c87c606SMark Murray static unsigned char dsa2048_pub[] = {
1105c87c606SMark Murray 0x17, 0x8f, 0xa8, 0x11, 0x84, 0x92, 0xec, 0x83, 0x47, 0xc7, 0x6a, 0xb0,
1115c87c606SMark Murray 0x92, 0xaf, 0x5a, 0x20, 0x37, 0xa3, 0x64, 0x79, 0xd2, 0xd0, 0x3d, 0xcd,
1125c87c606SMark Murray 0xe0, 0x61, 0x88, 0x88, 0x21, 0xcc, 0x74, 0x5d, 0xce, 0x4c, 0x51, 0x47,
1135c87c606SMark Murray 0xf0, 0xc5, 0x5c, 0x4c, 0x82, 0x7a, 0xaf, 0x72, 0xad, 0xb9, 0xe0, 0x53,
1145c87c606SMark Murray 0xf2, 0x78, 0xb7, 0xf0, 0xb5, 0x48, 0x7f, 0x8a, 0x3a, 0x18, 0xd1, 0x9f,
1155c87c606SMark Murray 0x8b, 0x7d, 0xa5, 0x47, 0xb7, 0x95, 0xab, 0x98, 0xf8, 0x7b, 0x74, 0x50,
1165c87c606SMark Murray 0x56, 0x8e, 0x57, 0xf0, 0xee, 0xf5, 0xb7, 0xba, 0xab, 0x85, 0x86, 0xf9,
1175c87c606SMark Murray 0x2b, 0xef, 0x41, 0x56, 0xa0, 0xa4, 0x9f, 0xb7, 0x38, 0x00, 0x46, 0x0a,
1185c87c606SMark Murray 0xa6, 0xf1, 0xfc, 0x1f, 0xd8, 0x4e, 0x85, 0x44, 0x92, 0x43, 0x21, 0x5d,
1195c87c606SMark Murray 0x6e, 0xcc, 0xc2, 0xcb, 0x26, 0x31, 0x0d, 0x21, 0xc4, 0xbd, 0x8d, 0x24,
1205c87c606SMark Murray 0xbc, 0xd9, 0x18, 0x19, 0xd7, 0xdc, 0xf1, 0xe7, 0x93, 0x50, 0x48, 0x03,
1215c87c606SMark Murray 0x2c, 0xae, 0x2e, 0xe7, 0x49, 0x88, 0x5f, 0x93, 0x57, 0x27, 0x99, 0x36,
1225c87c606SMark Murray 0xb4, 0x20, 0xab, 0xfc, 0xa7, 0x2b, 0xf2, 0xd9, 0x98, 0xd7, 0xd4, 0x34,
1235c87c606SMark Murray 0x9d, 0x96, 0x50, 0x58, 0x9a, 0xea, 0x54, 0xf3, 0xee, 0xf5, 0x63, 0x14,
1245c87c606SMark Murray 0xee, 0x85, 0x83, 0x74, 0x76, 0xe1, 0x52, 0x95, 0xc3, 0xf7, 0xeb, 0x04,
1255c87c606SMark Murray 0x04, 0x7b, 0xa7, 0x28, 0x1b, 0xcc, 0xea, 0x4a, 0x4e, 0x84, 0xda, 0xd8,
1265c87c606SMark Murray 0x9c, 0x79, 0xd8, 0x9b, 0x66, 0x89, 0x2f, 0xcf, 0xac, 0xd7, 0x79, 0xf9,
1275c87c606SMark Murray 0xa9, 0xd8, 0x45, 0x13, 0x78, 0xb9, 0x00, 0x14, 0xc9, 0x7e, 0x22, 0x51,
1285c87c606SMark Murray 0x86, 0x67, 0xb0, 0x9f, 0x26, 0x11, 0x23, 0xc8, 0x38, 0xd7, 0x70, 0x1d,
1295c87c606SMark Murray 0x15, 0x8e, 0x4d, 0x4f, 0x95, 0x97, 0x40, 0xa1, 0xc2, 0x7e, 0x01, 0x18,
1305c87c606SMark Murray 0x72, 0xf4, 0x10, 0xe6, 0x8d, 0x52, 0x16, 0x7f, 0xf2, 0xc9, 0xf8, 0x33,
1315c87c606SMark Murray 0x8b, 0x33, 0xb7, 0xce,
1325c87c606SMark Murray };
1336f9291ceSJung-uk Kim
13474664626SKris Kennaway static unsigned char dsa2048_p[] = {
13574664626SKris Kennaway 0xA0, 0x25, 0xFA, 0xAD, 0xF4, 0x8E, 0xB9, 0xE5, 0x99, 0xF3, 0x5D, 0x6F,
13674664626SKris Kennaway 0x4F, 0x83, 0x34, 0xE2, 0x7E, 0xCF, 0x6F, 0xBF, 0x30, 0xAF, 0x6F, 0x81,
13774664626SKris Kennaway 0xEB, 0xF8, 0xC4, 0x13, 0xD9, 0xA0, 0x5D, 0x8B, 0x5C, 0x8E, 0xDC, 0xC2,
13874664626SKris Kennaway 0x1D, 0x0B, 0x41, 0x32, 0xB0, 0x1F, 0xFE, 0xEF, 0x0C, 0xC2, 0xA2, 0x7E,
13974664626SKris Kennaway 0x68, 0x5C, 0x28, 0x21, 0xE9, 0xF5, 0xB1, 0x58, 0x12, 0x63, 0x4C, 0x19,
14074664626SKris Kennaway 0x4E, 0xFF, 0x02, 0x4B, 0x92, 0xED, 0xD2, 0x07, 0x11, 0x4D, 0x8C, 0x58,
14174664626SKris Kennaway 0x16, 0x5C, 0x55, 0x8E, 0xAD, 0xA3, 0x67, 0x7D, 0xB9, 0x86, 0x6E, 0x0B,
14274664626SKris Kennaway 0xE6, 0x54, 0x6F, 0x40, 0xAE, 0x0E, 0x67, 0x4C, 0xF9, 0x12, 0x5B, 0x3C,
14374664626SKris Kennaway 0x08, 0x7A, 0xF7, 0xFC, 0x67, 0x86, 0x69, 0xE7, 0x0A, 0x94, 0x40, 0xBF,
14474664626SKris Kennaway 0x8B, 0x76, 0xFE, 0x26, 0xD1, 0xF2, 0xA1, 0x1A, 0x84, 0xA1, 0x43, 0x56,
14574664626SKris Kennaway 0x28, 0xBC, 0x9A, 0x5F, 0xD7, 0x3B, 0x69, 0x89, 0x8A, 0x36, 0x2C, 0x51,
14674664626SKris Kennaway 0xDF, 0x12, 0x77, 0x2F, 0x57, 0x7B, 0xA0, 0xAA, 0xDD, 0x7F, 0xA1, 0x62,
14774664626SKris Kennaway 0x3B, 0x40, 0x7B, 0x68, 0x1A, 0x8F, 0x0D, 0x38, 0xBB, 0x21, 0x5D, 0x18,
14874664626SKris Kennaway 0xFC, 0x0F, 0x46, 0xF7, 0xA3, 0xB0, 0x1D, 0x23, 0xC3, 0xD2, 0xC7, 0x72,
14974664626SKris Kennaway 0x51, 0x18, 0xDF, 0x46, 0x95, 0x79, 0xD9, 0xBD, 0xB5, 0x19, 0x02, 0x2C,
15074664626SKris Kennaway 0x87, 0xDC, 0xE7, 0x57, 0x82, 0x7E, 0xF1, 0x8B, 0x06, 0x3D, 0x00, 0xA5,
15174664626SKris Kennaway 0x7B, 0x6B, 0x26, 0x27, 0x91, 0x0F, 0x6A, 0x77, 0xE4, 0xD5, 0x04, 0xE4,
15274664626SKris Kennaway 0x12, 0x2C, 0x42, 0xFF, 0xD2, 0x88, 0xBB, 0xD3, 0x92, 0xA0, 0xF9, 0xC8,
15374664626SKris Kennaway 0x51, 0x64, 0x14, 0x5C, 0xD8, 0xF9, 0x6C, 0x47, 0x82, 0xB4, 0x1C, 0x7F,
15474664626SKris Kennaway 0x09, 0xB8, 0xF0, 0x25, 0x83, 0x1D, 0x3F, 0x3F, 0x05, 0xB3, 0x21, 0x0A,
15574664626SKris Kennaway 0x5D, 0xA7, 0xD8, 0x54, 0xC3, 0x65, 0x7D, 0xC3, 0xB0, 0x1D, 0xBF, 0xAE,
15674664626SKris Kennaway 0xF8, 0x68, 0xCF, 0x9B,
15774664626SKris Kennaway };
1586f9291ceSJung-uk Kim
15974664626SKris Kennaway static unsigned char dsa2048_q[] = {
16074664626SKris Kennaway 0x97, 0xE7, 0x33, 0x4D, 0xD3, 0x94, 0x3E, 0x0B, 0xDB, 0x62, 0x74, 0xC6,
16174664626SKris Kennaway 0xA1, 0x08, 0xDD, 0x19, 0xA3, 0x75, 0x17, 0x1B,
16274664626SKris Kennaway };
1636f9291ceSJung-uk Kim
16474664626SKris Kennaway static unsigned char dsa2048_g[] = {
16574664626SKris Kennaway 0x2C, 0x78, 0x16, 0x59, 0x34, 0x63, 0xF4, 0xF3, 0x92, 0xFC, 0xB5, 0xA5,
16674664626SKris Kennaway 0x4F, 0x13, 0xDE, 0x2F, 0x1C, 0xA4, 0x3C, 0xAE, 0xAD, 0x38, 0x3F, 0x7E,
16774664626SKris Kennaway 0x90, 0xBF, 0x96, 0xA6, 0xAE, 0x25, 0x90, 0x72, 0xF5, 0x8E, 0x80, 0x0C,
16874664626SKris Kennaway 0x39, 0x1C, 0xD9, 0xEC, 0xBA, 0x90, 0x5B, 0x3A, 0xE8, 0x58, 0x6C, 0x9E,
16974664626SKris Kennaway 0x30, 0x42, 0x37, 0x02, 0x31, 0x82, 0xBC, 0x6A, 0xDF, 0x6A, 0x09, 0x29,
17074664626SKris Kennaway 0xE3, 0xC0, 0x46, 0xD1, 0xCB, 0x85, 0xEC, 0x0C, 0x30, 0x5E, 0xEA, 0xC8,
17174664626SKris Kennaway 0x39, 0x8E, 0x22, 0x9F, 0x22, 0x10, 0xD2, 0x34, 0x61, 0x68, 0x37, 0x3D,
17274664626SKris Kennaway 0x2E, 0x4A, 0x5B, 0x9A, 0xF5, 0xC1, 0x48, 0xC6, 0xF6, 0xDC, 0x63, 0x1A,
17374664626SKris Kennaway 0xD3, 0x96, 0x64, 0xBA, 0x34, 0xC9, 0xD1, 0xA0, 0xD1, 0xAE, 0x6C, 0x2F,
17474664626SKris Kennaway 0x48, 0x17, 0x93, 0x14, 0x43, 0xED, 0xF0, 0x21, 0x30, 0x19, 0xC3, 0x1B,
17574664626SKris Kennaway 0x5F, 0xDE, 0xA3, 0xF0, 0x70, 0x78, 0x18, 0xE1, 0xA8, 0xE4, 0xEE, 0x2E,
17674664626SKris Kennaway 0x00, 0xA5, 0xE4, 0xB3, 0x17, 0xC8, 0x0C, 0x7D, 0x6E, 0x42, 0xDC, 0xB7,
17774664626SKris Kennaway 0x46, 0x00, 0x36, 0x4D, 0xD4, 0x46, 0xAA, 0x3D, 0x3C, 0x46, 0x89, 0x40,
17874664626SKris Kennaway 0xBF, 0x1D, 0x84, 0x77, 0x0A, 0x75, 0xF3, 0x87, 0x1D, 0x08, 0x4C, 0xA6,
17974664626SKris Kennaway 0xD1, 0xA9, 0x1C, 0x1E, 0x12, 0x1E, 0xE1, 0xC7, 0x30, 0x28, 0x76, 0xA5,
18074664626SKris Kennaway 0x7F, 0x6C, 0x85, 0x96, 0x2B, 0x6F, 0xDB, 0x80, 0x66, 0x26, 0xAE, 0xF5,
18174664626SKris Kennaway 0x93, 0xC7, 0x8E, 0xAE, 0x9A, 0xED, 0xE4, 0xCA, 0x04, 0xEA, 0x3B, 0x72,
18274664626SKris Kennaway 0xEF, 0xDC, 0x87, 0xED, 0x0D, 0xA5, 0x4C, 0x4A, 0xDD, 0x71, 0x22, 0x64,
18374664626SKris Kennaway 0x59, 0x69, 0x4E, 0x8E, 0xBF, 0x43, 0xDC, 0xAB, 0x8E, 0x66, 0xBB, 0x01,
18474664626SKris Kennaway 0xB6, 0xF4, 0xE7, 0xFD, 0xD2, 0xAD, 0x9F, 0x36, 0xC1, 0xA0, 0x29, 0x99,
18574664626SKris Kennaway 0xD1, 0x96, 0x70, 0x59, 0x06, 0x78, 0x35, 0xBD, 0x65, 0x55, 0x52, 0x9E,
18674664626SKris Kennaway 0xF8, 0xB2, 0xE5, 0x38,
18774664626SKris Kennaway };
18874664626SKris Kennaway
189e71b7053SJung-uk Kim typedef struct testdsa_st {
190e71b7053SJung-uk Kim unsigned char *priv;
191e71b7053SJung-uk Kim unsigned char *pub;
192e71b7053SJung-uk Kim unsigned char *p;
193e71b7053SJung-uk Kim unsigned char *g;
194e71b7053SJung-uk Kim unsigned char *q;
195e71b7053SJung-uk Kim int priv_l;
196e71b7053SJung-uk Kim int pub_l;
197e71b7053SJung-uk Kim int p_l;
198e71b7053SJung-uk Kim int g_l;
199e71b7053SJung-uk Kim int q_l;
200e71b7053SJung-uk Kim } testdsa;
201e71b7053SJung-uk Kim
202e71b7053SJung-uk Kim #define set_dsa_ptr(st, bits) \
203e71b7053SJung-uk Kim do { \
204e71b7053SJung-uk Kim st.priv = dsa##bits##_priv; \
205e71b7053SJung-uk Kim st.pub = dsa##bits##_pub; \
206e71b7053SJung-uk Kim st.p = dsa##bits##_p; \
207e71b7053SJung-uk Kim st.g = dsa##bits##_g; \
208e71b7053SJung-uk Kim st.q = dsa##bits##_q; \
209e71b7053SJung-uk Kim st.priv_l = sizeof(dsa##bits##_priv); \
210e71b7053SJung-uk Kim st.pub_l = sizeof(dsa##bits##_pub); \
211e71b7053SJung-uk Kim st.p_l = sizeof(dsa##bits##_p); \
212e71b7053SJung-uk Kim st.g_l = sizeof(dsa##bits##_g); \
213e71b7053SJung-uk Kim st.q_l = sizeof(dsa##bits##_q); \
214e71b7053SJung-uk Kim } while (0)
215e71b7053SJung-uk Kim
get_dsa(int dsa_bits)216*b077aed3SPierre Pronchery EVP_PKEY *get_dsa(int dsa_bits)
21774664626SKris Kennaway {
218*b077aed3SPierre Pronchery EVP_PKEY *pkey = NULL;
219e71b7053SJung-uk Kim BIGNUM *priv_key, *pub_key, *p, *q, *g;
220*b077aed3SPierre Pronchery EVP_PKEY_CTX *pctx;
221e71b7053SJung-uk Kim testdsa dsa_t;
222*b077aed3SPierre Pronchery OSSL_PARAM_BLD *tmpl = NULL;
223*b077aed3SPierre Pronchery OSSL_PARAM *params = NULL;
22474664626SKris Kennaway
225e71b7053SJung-uk Kim switch (dsa_bits) {
226e71b7053SJung-uk Kim case 512:
227e71b7053SJung-uk Kim set_dsa_ptr(dsa_t, 512);
228e71b7053SJung-uk Kim break;
229e71b7053SJung-uk Kim case 1024:
230e71b7053SJung-uk Kim set_dsa_ptr(dsa_t, 1024);
231e71b7053SJung-uk Kim break;
232e71b7053SJung-uk Kim case 2048:
233e71b7053SJung-uk Kim set_dsa_ptr(dsa_t, 2048);
234e71b7053SJung-uk Kim break;
235e71b7053SJung-uk Kim default:
236e71b7053SJung-uk Kim return NULL;
23774664626SKris Kennaway }
23874664626SKris Kennaway
239*b077aed3SPierre Pronchery if ((pctx = EVP_PKEY_CTX_new_from_name(NULL, "DSA", NULL)) == NULL)
240e71b7053SJung-uk Kim return NULL;
241*b077aed3SPierre Pronchery
242e71b7053SJung-uk Kim priv_key = BN_bin2bn(dsa_t.priv, dsa_t.priv_l, NULL);
243e71b7053SJung-uk Kim pub_key = BN_bin2bn(dsa_t.pub, dsa_t.pub_l, NULL);
244e71b7053SJung-uk Kim p = BN_bin2bn(dsa_t.p, dsa_t.p_l, NULL);
245e71b7053SJung-uk Kim q = BN_bin2bn(dsa_t.q, dsa_t.q_l, NULL);
246e71b7053SJung-uk Kim g = BN_bin2bn(dsa_t.g, dsa_t.g_l, NULL);
247*b077aed3SPierre Pronchery if (priv_key == NULL || pub_key == NULL || p == NULL || q == NULL
248*b077aed3SPierre Pronchery || g == NULL) {
249e71b7053SJung-uk Kim goto err;
250e71b7053SJung-uk Kim }
251*b077aed3SPierre Pronchery if ((tmpl = OSSL_PARAM_BLD_new()) == NULL
252*b077aed3SPierre Pronchery || !OSSL_PARAM_BLD_push_BN(tmpl, OSSL_PKEY_PARAM_FFC_P,
253*b077aed3SPierre Pronchery p)
254*b077aed3SPierre Pronchery || !OSSL_PARAM_BLD_push_BN(tmpl, OSSL_PKEY_PARAM_FFC_Q,
255*b077aed3SPierre Pronchery q)
256*b077aed3SPierre Pronchery || !OSSL_PARAM_BLD_push_BN(tmpl, OSSL_PKEY_PARAM_FFC_G,
257*b077aed3SPierre Pronchery g)
258*b077aed3SPierre Pronchery || !OSSL_PARAM_BLD_push_BN(tmpl, OSSL_PKEY_PARAM_PRIV_KEY,
259*b077aed3SPierre Pronchery priv_key)
260*b077aed3SPierre Pronchery || !OSSL_PARAM_BLD_push_BN(tmpl, OSSL_PKEY_PARAM_PUB_KEY,
261*b077aed3SPierre Pronchery pub_key)
262*b077aed3SPierre Pronchery || (params = OSSL_PARAM_BLD_to_param(tmpl)) == NULL)
263e71b7053SJung-uk Kim goto err;
264e71b7053SJung-uk Kim
265*b077aed3SPierre Pronchery if (EVP_PKEY_fromdata_init(pctx) <= 0
266*b077aed3SPierre Pronchery || EVP_PKEY_fromdata(pctx, &pkey, EVP_PKEY_KEYPAIR,
267*b077aed3SPierre Pronchery params) <= 0)
268*b077aed3SPierre Pronchery pkey = NULL;
269e71b7053SJung-uk Kim err:
270*b077aed3SPierre Pronchery OSSL_PARAM_free(params);
271*b077aed3SPierre Pronchery OSSL_PARAM_BLD_free(tmpl);
272e71b7053SJung-uk Kim BN_free(priv_key);
273e71b7053SJung-uk Kim BN_free(pub_key);
274e71b7053SJung-uk Kim BN_free(p);
275e71b7053SJung-uk Kim BN_free(q);
276e71b7053SJung-uk Kim BN_free(g);
277*b077aed3SPierre Pronchery EVP_PKEY_CTX_free(pctx);
278*b077aed3SPierre Pronchery return pkey;
279e71b7053SJung-uk Kim }
280