xref: /openbsd/usr.bin/openssl/testdsa.h (revision d00f618a)
1*d00f618aStb /* $OpenBSD: testdsa.h,v 1.5 2022/01/10 19:22:26 tb Exp $ */
2dab3f910Sjsing 
3dab3f910Sjsing DSA *get_dsa512(void);
4dab3f910Sjsing DSA *get_dsa1024(void);
5dab3f910Sjsing DSA *get_dsa2048(void);
6dab3f910Sjsing 
749e0d069Stb DSA *get_dsa(const unsigned char *priv, size_t priv_size,
849e0d069Stb     const unsigned char *pub, size_t pub_size,
949e0d069Stb     const unsigned char *p, size_t p_size,
1049e0d069Stb     const unsigned char *q, size_t q_size,
1149e0d069Stb     const unsigned char *g, size_t g_size);
1249e0d069Stb 
1349e0d069Stb static const unsigned char dsa512_priv[] = {
14dab3f910Sjsing 	0x65, 0xe5, 0xc7, 0x38, 0x60, 0x24, 0xb5, 0x89, 0xd4, 0x9c, 0xeb, 0x4c,
15dab3f910Sjsing 	0x9c, 0x1d, 0x7a, 0x22, 0xbd, 0xd1, 0xc2, 0xd2,
16dab3f910Sjsing };
1749e0d069Stb 
1849e0d069Stb static const unsigned char dsa512_pub[] = {
19dab3f910Sjsing 	0x00, 0x95, 0xa7, 0x0d, 0xec, 0x93, 0x68, 0xba, 0x5f, 0xf7, 0x5f, 0x07,
20dab3f910Sjsing 	0xf2, 0x3b, 0xad, 0x6b, 0x01, 0xdc, 0xbe, 0xec, 0xde, 0x04, 0x7a, 0x3a,
21dab3f910Sjsing 	0x27, 0xb3, 0xec, 0x49, 0xfd, 0x08, 0x43, 0x3d, 0x7e, 0xa8, 0x2c, 0x5e,
22dab3f910Sjsing 	0x7b, 0xbb, 0xfc, 0xf4, 0x6e, 0xeb, 0x6c, 0xb0, 0x6e, 0xf8, 0x02, 0x12,
23dab3f910Sjsing 	0x8c, 0x38, 0x5d, 0x83, 0x56, 0x7d, 0xee, 0x53, 0x05, 0x3e, 0x24, 0x84,
24dab3f910Sjsing 	0xbe, 0xba, 0x0a, 0x6b, 0xc8,
25dab3f910Sjsing };
2649e0d069Stb 
2749e0d069Stb static const unsigned char dsa512_p[] = {
28dab3f910Sjsing 	0x9D, 0x1B, 0x69, 0x8E, 0x26, 0xDB, 0xF2, 0x2B, 0x11, 0x70, 0x19, 0x86,
29dab3f910Sjsing 	0xF6, 0x19, 0xC8, 0xF8, 0x19, 0xF2, 0x18, 0x53, 0x94, 0x46, 0x06, 0xD0,
30dab3f910Sjsing 	0x62, 0x50, 0x33, 0x4B, 0x02, 0x3C, 0x52, 0x30, 0x03, 0x8B, 0x3B, 0xF9,
31dab3f910Sjsing 	0x5F, 0xD1, 0x24, 0x06, 0x4F, 0x7B, 0x4C, 0xBA, 0xAA, 0x40, 0x9B, 0xFD,
32dab3f910Sjsing 	0x96, 0xE4, 0x37, 0x33, 0xBB, 0x2D, 0x5A, 0xD7, 0x5A, 0x11, 0x40, 0x66,
33dab3f910Sjsing 	0xA2, 0x76, 0x7D, 0x31,
34dab3f910Sjsing };
3549e0d069Stb 
3649e0d069Stb static const unsigned char dsa512_q[] = {
37dab3f910Sjsing 	0xFB, 0x53, 0xEF, 0x50, 0xB4, 0x40, 0x92, 0x31, 0x56, 0x86, 0x53, 0x7A,
38dab3f910Sjsing 	0xE8, 0x8B, 0x22, 0x9A, 0x49, 0xFB, 0x71, 0x8F,
39dab3f910Sjsing };
4049e0d069Stb 
4149e0d069Stb static const unsigned char dsa512_g[] = {
42dab3f910Sjsing 	0x83, 0x3E, 0x88, 0xE5, 0xC5, 0x89, 0x73, 0xCE, 0x3B, 0x6C, 0x01, 0x49,
43dab3f910Sjsing 	0xBF, 0xB3, 0xC7, 0x9F, 0x0A, 0xEA, 0x44, 0x91, 0xE5, 0x30, 0xAA, 0xD9,
44dab3f910Sjsing 	0xBE, 0x5B, 0x5F, 0xB7, 0x10, 0xD7, 0x89, 0xB7, 0x8E, 0x74, 0xFB, 0xCF,
45dab3f910Sjsing 	0x29, 0x1E, 0xEB, 0xA8, 0x2C, 0x54, 0x51, 0xB8, 0x10, 0xDE, 0xA0, 0xCE,
46dab3f910Sjsing 	0x2F, 0xCC, 0x24, 0x6B, 0x90, 0x77, 0xDE, 0xA2, 0x68, 0xA6, 0x52, 0x12,
47dab3f910Sjsing 	0xA2, 0x03, 0x9D, 0x20,
48dab3f910Sjsing };
49dab3f910Sjsing 
50dab3f910Sjsing DSA *
get_dsa512(void)5149e0d069Stb get_dsa512(void)
52dab3f910Sjsing {
5349e0d069Stb 	return get_dsa(dsa512_priv, sizeof(dsa512_priv),
5449e0d069Stb 	    dsa512_pub, sizeof(dsa512_pub), dsa512_p, sizeof(dsa512_p),
5549e0d069Stb 	    dsa512_q, sizeof(dsa512_q), dsa512_g, sizeof(dsa512_g));
56dab3f910Sjsing }
57dab3f910Sjsing 
5849e0d069Stb static const unsigned char dsa1024_priv[] = {
59dab3f910Sjsing 	0x7d, 0x21, 0xda, 0xbb, 0x62, 0x15, 0x47, 0x36, 0x07, 0x67, 0x12, 0xe8,
60dab3f910Sjsing 	0x8c, 0xaa, 0x1c, 0xcd, 0x38, 0x12, 0x61, 0x18,
61dab3f910Sjsing };
6249e0d069Stb 
6349e0d069Stb static const unsigned char dsa1024_pub[] = {
64dab3f910Sjsing 	0x3c, 0x4e, 0x9c, 0x2a, 0x7f, 0x16, 0xc1, 0x25, 0xeb, 0xac, 0x78, 0x63,
65dab3f910Sjsing 	0x90, 0x14, 0x8c, 0x8b, 0xf4, 0x68, 0x43, 0x3c, 0x2d, 0xee, 0x65, 0x50,
66dab3f910Sjsing 	0x7d, 0x9c, 0x8f, 0x8c, 0x8a, 0x51, 0xd6, 0x11, 0x2b, 0x99, 0xaf, 0x1e,
67dab3f910Sjsing 	0x90, 0x97, 0xb5, 0xd3, 0xa6, 0x20, 0x25, 0xd6, 0xfe, 0x43, 0x02, 0xd5,
68dab3f910Sjsing 	0x91, 0x7d, 0xa7, 0x8c, 0xdb, 0xc9, 0x85, 0xa3, 0x36, 0x48, 0xf7, 0x68,
69dab3f910Sjsing 	0xaa, 0x60, 0xb1, 0xf7, 0x05, 0x68, 0x3a, 0xa3, 0x3f, 0xd3, 0x19, 0x82,
70dab3f910Sjsing 	0xd8, 0x82, 0x7a, 0x77, 0xfb, 0xef, 0xf4, 0x15, 0x0a, 0xeb, 0x06, 0x04,
71dab3f910Sjsing 	0x7f, 0x53, 0x07, 0x0c, 0xbc, 0xcb, 0x2d, 0x83, 0xdb, 0x3e, 0xd1, 0x28,
72dab3f910Sjsing 	0xa5, 0xa1, 0x31, 0xe0, 0x67, 0xfa, 0x50, 0xde, 0x9b, 0x07, 0x83, 0x7e,
73dab3f910Sjsing 	0x2c, 0x0b, 0xc3, 0x13, 0x50, 0x61, 0xe5, 0xad, 0xbd, 0x36, 0xb8, 0x97,
74dab3f910Sjsing 	0x4e, 0x40, 0x7d, 0xe8, 0x83, 0x0d, 0xbc, 0x4b
75dab3f910Sjsing };
7649e0d069Stb 
7749e0d069Stb static const unsigned char dsa1024_p[] = {
78dab3f910Sjsing 	0xA7, 0x3F, 0x6E, 0x85, 0xBF, 0x41, 0x6A, 0x29, 0x7D, 0xF0, 0x9F, 0x47,
79dab3f910Sjsing 	0x19, 0x30, 0x90, 0x9A, 0x09, 0x1D, 0xDA, 0x6A, 0x33, 0x1E, 0xC5, 0x3D,
80dab3f910Sjsing 	0x86, 0x96, 0xB3, 0x15, 0xE0, 0x53, 0x2E, 0x8F, 0xE0, 0x59, 0x82, 0x73,
81dab3f910Sjsing 	0x90, 0x3E, 0x75, 0x31, 0x99, 0x47, 0x7A, 0x52, 0xFB, 0x85, 0xE4, 0xD9,
82dab3f910Sjsing 	0xA6, 0x7B, 0x38, 0x9B, 0x68, 0x8A, 0x84, 0x9B, 0x87, 0xC6, 0x1E, 0xB5,
83dab3f910Sjsing 	0x7E, 0x86, 0x4B, 0x53, 0x5B, 0x59, 0xCF, 0x71, 0x65, 0x19, 0x88, 0x6E,
84dab3f910Sjsing 	0xCE, 0x66, 0xAE, 0x6B, 0x88, 0x36, 0xFB, 0xEC, 0x28, 0xDC, 0xC2, 0xD7,
85dab3f910Sjsing 	0xA5, 0xBB, 0xE5, 0x2C, 0x39, 0x26, 0x4B, 0xDA, 0x9A, 0x70, 0x18, 0x95,
86dab3f910Sjsing 	0x37, 0x95, 0x10, 0x56, 0x23, 0xF6, 0x15, 0xED, 0xBA, 0x04, 0x5E, 0xDE,
87dab3f910Sjsing 	0x39, 0x4F, 0xFD, 0xB7, 0x43, 0x1F, 0xB5, 0xA4, 0x65, 0x6F, 0xCD, 0x80,
88dab3f910Sjsing 	0x11, 0xE4, 0x70, 0x95, 0x5B, 0x50, 0xCD, 0x49,
89dab3f910Sjsing };
9049e0d069Stb 
9149e0d069Stb static const unsigned char dsa1024_q[] = {
92dab3f910Sjsing 	0xF7, 0x07, 0x31, 0xED, 0xFA, 0x6C, 0x06, 0x03, 0xD5, 0x85, 0x8A, 0x1C,
93dab3f910Sjsing 	0xAC, 0x9C, 0x65, 0xE7, 0x50, 0x66, 0x65, 0x6F,
94dab3f910Sjsing };
9549e0d069Stb 
9649e0d069Stb static const unsigned char dsa1024_g[] = {
97dab3f910Sjsing 	0x4D, 0xDF, 0x4C, 0x03, 0xA6, 0x91, 0x8A, 0xF5, 0x19, 0x6F, 0x50, 0x46,
98dab3f910Sjsing 	0x25, 0x99, 0xE5, 0x68, 0x6F, 0x30, 0xE3, 0x69, 0xE1, 0xE5, 0xB3, 0x5D,
99dab3f910Sjsing 	0x98, 0xBB, 0x28, 0x86, 0x48, 0xFC, 0xDE, 0x99, 0x04, 0x3F, 0x5F, 0x88,
100dab3f910Sjsing 	0x0C, 0x9C, 0x73, 0x24, 0x0D, 0x20, 0x5D, 0xB9, 0x2A, 0x9A, 0x3F, 0x18,
101dab3f910Sjsing 	0x96, 0x27, 0xE4, 0x62, 0x87, 0xC1, 0x7B, 0x74, 0x62, 0x53, 0xFC, 0x61,
102dab3f910Sjsing 	0x27, 0xA8, 0x7A, 0x91, 0x09, 0x9D, 0xB6, 0xF1, 0x4D, 0x9C, 0x54, 0x0F,
103dab3f910Sjsing 	0x58, 0x06, 0xEE, 0x49, 0x74, 0x07, 0xCE, 0x55, 0x7E, 0x23, 0xCE, 0x16,
104dab3f910Sjsing 	0xF6, 0xCA, 0xDC, 0x5A, 0x61, 0x01, 0x7E, 0xC9, 0x71, 0xB5, 0x4D, 0xF6,
105dab3f910Sjsing 	0xDC, 0x34, 0x29, 0x87, 0x68, 0xF6, 0x5E, 0x20, 0x93, 0xB3, 0xDB, 0xF5,
106dab3f910Sjsing 	0xE4, 0x09, 0x6C, 0x41, 0x17, 0x95, 0x92, 0xEB, 0x01, 0xB5, 0x73, 0xA5,
107dab3f910Sjsing 	0x6A, 0x7E, 0xD8, 0x32, 0xED, 0x0E, 0x02, 0xB8,
108dab3f910Sjsing };
109dab3f910Sjsing 
110dab3f910Sjsing DSA *
get_dsa1024(void)11149e0d069Stb get_dsa1024(void)
112dab3f910Sjsing {
11349e0d069Stb 	return get_dsa(dsa1024_priv, sizeof(dsa1024_priv),
11449e0d069Stb 	    dsa1024_pub, sizeof(dsa1024_pub), dsa1024_p, sizeof(dsa1024_p),
11549e0d069Stb 	    dsa1024_q, sizeof(dsa1024_q), dsa1024_g, sizeof(dsa1024_g));
116dab3f910Sjsing }
117dab3f910Sjsing 
11849e0d069Stb static const unsigned char dsa2048_priv[] = {
119dab3f910Sjsing 	0x32, 0x67, 0x92, 0xf6, 0xc4, 0xe2, 0xe2, 0xe8, 0xa0, 0x8b, 0x6b, 0x45,
120dab3f910Sjsing 	0x0c, 0x8a, 0x76, 0xb0, 0xee, 0xcf, 0x91, 0xa7,
121dab3f910Sjsing };
12249e0d069Stb 
12349e0d069Stb static const unsigned char dsa2048_pub[] = {
124dab3f910Sjsing 	0x17, 0x8f, 0xa8, 0x11, 0x84, 0x92, 0xec, 0x83, 0x47, 0xc7, 0x6a, 0xb0,
125dab3f910Sjsing 	0x92, 0xaf, 0x5a, 0x20, 0x37, 0xa3, 0x64, 0x79, 0xd2, 0xd0, 0x3d, 0xcd,
126dab3f910Sjsing 	0xe0, 0x61, 0x88, 0x88, 0x21, 0xcc, 0x74, 0x5d, 0xce, 0x4c, 0x51, 0x47,
127dab3f910Sjsing 	0xf0, 0xc5, 0x5c, 0x4c, 0x82, 0x7a, 0xaf, 0x72, 0xad, 0xb9, 0xe0, 0x53,
128dab3f910Sjsing 	0xf2, 0x78, 0xb7, 0xf0, 0xb5, 0x48, 0x7f, 0x8a, 0x3a, 0x18, 0xd1, 0x9f,
129dab3f910Sjsing 	0x8b, 0x7d, 0xa5, 0x47, 0xb7, 0x95, 0xab, 0x98, 0xf8, 0x7b, 0x74, 0x50,
130dab3f910Sjsing 	0x56, 0x8e, 0x57, 0xf0, 0xee, 0xf5, 0xb7, 0xba, 0xab, 0x85, 0x86, 0xf9,
131dab3f910Sjsing 	0x2b, 0xef, 0x41, 0x56, 0xa0, 0xa4, 0x9f, 0xb7, 0x38, 0x00, 0x46, 0x0a,
132dab3f910Sjsing 	0xa6, 0xf1, 0xfc, 0x1f, 0xd8, 0x4e, 0x85, 0x44, 0x92, 0x43, 0x21, 0x5d,
133dab3f910Sjsing 	0x6e, 0xcc, 0xc2, 0xcb, 0x26, 0x31, 0x0d, 0x21, 0xc4, 0xbd, 0x8d, 0x24,
134dab3f910Sjsing 	0xbc, 0xd9, 0x18, 0x19, 0xd7, 0xdc, 0xf1, 0xe7, 0x93, 0x50, 0x48, 0x03,
135dab3f910Sjsing 	0x2c, 0xae, 0x2e, 0xe7, 0x49, 0x88, 0x5f, 0x93, 0x57, 0x27, 0x99, 0x36,
136dab3f910Sjsing 	0xb4, 0x20, 0xab, 0xfc, 0xa7, 0x2b, 0xf2, 0xd9, 0x98, 0xd7, 0xd4, 0x34,
137dab3f910Sjsing 	0x9d, 0x96, 0x50, 0x58, 0x9a, 0xea, 0x54, 0xf3, 0xee, 0xf5, 0x63, 0x14,
138dab3f910Sjsing 	0xee, 0x85, 0x83, 0x74, 0x76, 0xe1, 0x52, 0x95, 0xc3, 0xf7, 0xeb, 0x04,
139dab3f910Sjsing 	0x04, 0x7b, 0xa7, 0x28, 0x1b, 0xcc, 0xea, 0x4a, 0x4e, 0x84, 0xda, 0xd8,
140dab3f910Sjsing 	0x9c, 0x79, 0xd8, 0x9b, 0x66, 0x89, 0x2f, 0xcf, 0xac, 0xd7, 0x79, 0xf9,
141dab3f910Sjsing 	0xa9, 0xd8, 0x45, 0x13, 0x78, 0xb9, 0x00, 0x14, 0xc9, 0x7e, 0x22, 0x51,
142dab3f910Sjsing 	0x86, 0x67, 0xb0, 0x9f, 0x26, 0x11, 0x23, 0xc8, 0x38, 0xd7, 0x70, 0x1d,
143dab3f910Sjsing 	0x15, 0x8e, 0x4d, 0x4f, 0x95, 0x97, 0x40, 0xa1, 0xc2, 0x7e, 0x01, 0x18,
144dab3f910Sjsing 	0x72, 0xf4, 0x10, 0xe6, 0x8d, 0x52, 0x16, 0x7f, 0xf2, 0xc9, 0xf8, 0x33,
145dab3f910Sjsing 	0x8b, 0x33, 0xb7, 0xce,
146dab3f910Sjsing };
14749e0d069Stb 
14849e0d069Stb static const unsigned char dsa2048_p[] = {
149dab3f910Sjsing 	0xA0, 0x25, 0xFA, 0xAD, 0xF4, 0x8E, 0xB9, 0xE5, 0x99, 0xF3, 0x5D, 0x6F,
150dab3f910Sjsing 	0x4F, 0x83, 0x34, 0xE2, 0x7E, 0xCF, 0x6F, 0xBF, 0x30, 0xAF, 0x6F, 0x81,
151dab3f910Sjsing 	0xEB, 0xF8, 0xC4, 0x13, 0xD9, 0xA0, 0x5D, 0x8B, 0x5C, 0x8E, 0xDC, 0xC2,
152dab3f910Sjsing 	0x1D, 0x0B, 0x41, 0x32, 0xB0, 0x1F, 0xFE, 0xEF, 0x0C, 0xC2, 0xA2, 0x7E,
153dab3f910Sjsing 	0x68, 0x5C, 0x28, 0x21, 0xE9, 0xF5, 0xB1, 0x58, 0x12, 0x63, 0x4C, 0x19,
154dab3f910Sjsing 	0x4E, 0xFF, 0x02, 0x4B, 0x92, 0xED, 0xD2, 0x07, 0x11, 0x4D, 0x8C, 0x58,
155dab3f910Sjsing 	0x16, 0x5C, 0x55, 0x8E, 0xAD, 0xA3, 0x67, 0x7D, 0xB9, 0x86, 0x6E, 0x0B,
156dab3f910Sjsing 	0xE6, 0x54, 0x6F, 0x40, 0xAE, 0x0E, 0x67, 0x4C, 0xF9, 0x12, 0x5B, 0x3C,
157dab3f910Sjsing 	0x08, 0x7A, 0xF7, 0xFC, 0x67, 0x86, 0x69, 0xE7, 0x0A, 0x94, 0x40, 0xBF,
158dab3f910Sjsing 	0x8B, 0x76, 0xFE, 0x26, 0xD1, 0xF2, 0xA1, 0x1A, 0x84, 0xA1, 0x43, 0x56,
159dab3f910Sjsing 	0x28, 0xBC, 0x9A, 0x5F, 0xD7, 0x3B, 0x69, 0x89, 0x8A, 0x36, 0x2C, 0x51,
160dab3f910Sjsing 	0xDF, 0x12, 0x77, 0x2F, 0x57, 0x7B, 0xA0, 0xAA, 0xDD, 0x7F, 0xA1, 0x62,
161dab3f910Sjsing 	0x3B, 0x40, 0x7B, 0x68, 0x1A, 0x8F, 0x0D, 0x38, 0xBB, 0x21, 0x5D, 0x18,
162dab3f910Sjsing 	0xFC, 0x0F, 0x46, 0xF7, 0xA3, 0xB0, 0x1D, 0x23, 0xC3, 0xD2, 0xC7, 0x72,
163dab3f910Sjsing 	0x51, 0x18, 0xDF, 0x46, 0x95, 0x79, 0xD9, 0xBD, 0xB5, 0x19, 0x02, 0x2C,
164dab3f910Sjsing 	0x87, 0xDC, 0xE7, 0x57, 0x82, 0x7E, 0xF1, 0x8B, 0x06, 0x3D, 0x00, 0xA5,
165dab3f910Sjsing 	0x7B, 0x6B, 0x26, 0x27, 0x91, 0x0F, 0x6A, 0x77, 0xE4, 0xD5, 0x04, 0xE4,
166dab3f910Sjsing 	0x12, 0x2C, 0x42, 0xFF, 0xD2, 0x88, 0xBB, 0xD3, 0x92, 0xA0, 0xF9, 0xC8,
167dab3f910Sjsing 	0x51, 0x64, 0x14, 0x5C, 0xD8, 0xF9, 0x6C, 0x47, 0x82, 0xB4, 0x1C, 0x7F,
168dab3f910Sjsing 	0x09, 0xB8, 0xF0, 0x25, 0x83, 0x1D, 0x3F, 0x3F, 0x05, 0xB3, 0x21, 0x0A,
169dab3f910Sjsing 	0x5D, 0xA7, 0xD8, 0x54, 0xC3, 0x65, 0x7D, 0xC3, 0xB0, 0x1D, 0xBF, 0xAE,
170dab3f910Sjsing 	0xF8, 0x68, 0xCF, 0x9B,
171dab3f910Sjsing };
17249e0d069Stb 
17349e0d069Stb static const unsigned char dsa2048_q[] = {
174dab3f910Sjsing 	0x97, 0xE7, 0x33, 0x4D, 0xD3, 0x94, 0x3E, 0x0B, 0xDB, 0x62, 0x74, 0xC6,
175dab3f910Sjsing 	0xA1, 0x08, 0xDD, 0x19, 0xA3, 0x75, 0x17, 0x1B,
176dab3f910Sjsing };
17749e0d069Stb 
17849e0d069Stb static const unsigned char dsa2048_g[] = {
179dab3f910Sjsing 	0x2C, 0x78, 0x16, 0x59, 0x34, 0x63, 0xF4, 0xF3, 0x92, 0xFC, 0xB5, 0xA5,
180dab3f910Sjsing 	0x4F, 0x13, 0xDE, 0x2F, 0x1C, 0xA4, 0x3C, 0xAE, 0xAD, 0x38, 0x3F, 0x7E,
181dab3f910Sjsing 	0x90, 0xBF, 0x96, 0xA6, 0xAE, 0x25, 0x90, 0x72, 0xF5, 0x8E, 0x80, 0x0C,
182dab3f910Sjsing 	0x39, 0x1C, 0xD9, 0xEC, 0xBA, 0x90, 0x5B, 0x3A, 0xE8, 0x58, 0x6C, 0x9E,
183dab3f910Sjsing 	0x30, 0x42, 0x37, 0x02, 0x31, 0x82, 0xBC, 0x6A, 0xDF, 0x6A, 0x09, 0x29,
184dab3f910Sjsing 	0xE3, 0xC0, 0x46, 0xD1, 0xCB, 0x85, 0xEC, 0x0C, 0x30, 0x5E, 0xEA, 0xC8,
185dab3f910Sjsing 	0x39, 0x8E, 0x22, 0x9F, 0x22, 0x10, 0xD2, 0x34, 0x61, 0x68, 0x37, 0x3D,
186dab3f910Sjsing 	0x2E, 0x4A, 0x5B, 0x9A, 0xF5, 0xC1, 0x48, 0xC6, 0xF6, 0xDC, 0x63, 0x1A,
187dab3f910Sjsing 	0xD3, 0x96, 0x64, 0xBA, 0x34, 0xC9, 0xD1, 0xA0, 0xD1, 0xAE, 0x6C, 0x2F,
188dab3f910Sjsing 	0x48, 0x17, 0x93, 0x14, 0x43, 0xED, 0xF0, 0x21, 0x30, 0x19, 0xC3, 0x1B,
189dab3f910Sjsing 	0x5F, 0xDE, 0xA3, 0xF0, 0x70, 0x78, 0x18, 0xE1, 0xA8, 0xE4, 0xEE, 0x2E,
190dab3f910Sjsing 	0x00, 0xA5, 0xE4, 0xB3, 0x17, 0xC8, 0x0C, 0x7D, 0x6E, 0x42, 0xDC, 0xB7,
191dab3f910Sjsing 	0x46, 0x00, 0x36, 0x4D, 0xD4, 0x46, 0xAA, 0x3D, 0x3C, 0x46, 0x89, 0x40,
192dab3f910Sjsing 	0xBF, 0x1D, 0x84, 0x77, 0x0A, 0x75, 0xF3, 0x87, 0x1D, 0x08, 0x4C, 0xA6,
193dab3f910Sjsing 	0xD1, 0xA9, 0x1C, 0x1E, 0x12, 0x1E, 0xE1, 0xC7, 0x30, 0x28, 0x76, 0xA5,
194dab3f910Sjsing 	0x7F, 0x6C, 0x85, 0x96, 0x2B, 0x6F, 0xDB, 0x80, 0x66, 0x26, 0xAE, 0xF5,
195dab3f910Sjsing 	0x93, 0xC7, 0x8E, 0xAE, 0x9A, 0xED, 0xE4, 0xCA, 0x04, 0xEA, 0x3B, 0x72,
196dab3f910Sjsing 	0xEF, 0xDC, 0x87, 0xED, 0x0D, 0xA5, 0x4C, 0x4A, 0xDD, 0x71, 0x22, 0x64,
197dab3f910Sjsing 	0x59, 0x69, 0x4E, 0x8E, 0xBF, 0x43, 0xDC, 0xAB, 0x8E, 0x66, 0xBB, 0x01,
198dab3f910Sjsing 	0xB6, 0xF4, 0xE7, 0xFD, 0xD2, 0xAD, 0x9F, 0x36, 0xC1, 0xA0, 0x29, 0x99,
199dab3f910Sjsing 	0xD1, 0x96, 0x70, 0x59, 0x06, 0x78, 0x35, 0xBD, 0x65, 0x55, 0x52, 0x9E,
200dab3f910Sjsing 	0xF8, 0xB2, 0xE5, 0x38,
201dab3f910Sjsing };
202dab3f910Sjsing 
203dab3f910Sjsing DSA *
get_dsa2048(void)20449e0d069Stb get_dsa2048(void)
20549e0d069Stb {
20649e0d069Stb 	return get_dsa(dsa2048_priv, sizeof(dsa2048_priv),
20749e0d069Stb 	    dsa2048_pub, sizeof(dsa2048_pub), dsa2048_p, sizeof(dsa2048_p),
20849e0d069Stb 	    dsa2048_q, sizeof(dsa2048_q), dsa2048_g, sizeof(dsa2048_g));
20949e0d069Stb }
21049e0d069Stb 
21149e0d069Stb DSA *
get_dsa(const unsigned char * priv,size_t priv_size,const unsigned char * pub,size_t pub_size,const unsigned char * p_char,size_t p_size,const unsigned char * q_char,size_t q_size,const unsigned char * g_char,size_t g_size)21249e0d069Stb get_dsa(const unsigned char *priv, size_t priv_size,
21349e0d069Stb     const unsigned char *pub, size_t pub_size,
214*d00f618aStb     const unsigned char *p_char, size_t p_size,
215*d00f618aStb     const unsigned char *q_char, size_t q_size,
216*d00f618aStb     const unsigned char *g_char, size_t g_size)
217dab3f910Sjsing {
218dab3f910Sjsing 	DSA *dsa;
219f746b666Stb 	BIGNUM *priv_key = NULL, *pub_key = NULL;
220f746b666Stb 	BIGNUM *p = NULL, *q = NULL, *g = NULL;
221dab3f910Sjsing 
222dab3f910Sjsing 	if ((dsa = DSA_new()) == NULL)
223dab3f910Sjsing 		return (NULL);
224dedbc3b4Stb 
22549e0d069Stb 	priv_key = BN_bin2bn(priv, priv_size, NULL);
22649e0d069Stb 	pub_key = BN_bin2bn(pub, pub_size, NULL);
227f746b666Stb 	if (priv_key == NULL || pub_key == NULL)
228f746b666Stb 		goto err;
229dedbc3b4Stb 
230f746b666Stb 	if (!DSA_set0_key(dsa, pub_key, priv_key))
231f746b666Stb 		goto err;
232dedbc3b4Stb 	pub_key = NULL;
233dedbc3b4Stb 	priv_key = NULL;
234f746b666Stb 
235*d00f618aStb 	p = BN_bin2bn(p_char, p_size, NULL);
236*d00f618aStb 	q = BN_bin2bn(q_char, q_size, NULL);
237*d00f618aStb 	g = BN_bin2bn(g_char, g_size, NULL);
238f746b666Stb 	if (p == NULL || q == NULL || g == NULL)
239f746b666Stb 		goto err;
240dedbc3b4Stb 
241f746b666Stb 	if (!DSA_set0_pqg(dsa, p, q, g))
242f746b666Stb 		goto err;
243dedbc3b4Stb 	p = NULL;
244dedbc3b4Stb 	q = NULL;
245dedbc3b4Stb 	g = NULL;
246f746b666Stb 
247f746b666Stb 	return dsa;
248f746b666Stb 
249f746b666Stb  err:
250f746b666Stb 	DSA_free(dsa);
251f746b666Stb 	BN_free(priv_key);
252f746b666Stb 	BN_free(pub_key);
253f746b666Stb 	BN_free(p);
254f746b666Stb 	BN_free(q);
255f746b666Stb 	BN_free(g);
256f746b666Stb 
257f746b666Stb 	return NULL;
258dab3f910Sjsing }
259