xref: /dflybsd-src/contrib/wpa_supplicant/src/crypto/dh_groups.c (revision 3a84a4273475ed07d0ab1c2dfeffdfedef35d9cd)
16d49e1aeSJan Lentfer /*
26d49e1aeSJan Lentfer  * Diffie-Hellman groups
36d49e1aeSJan Lentfer  * Copyright (c) 2007, Jouni Malinen <j@w1.fi>
46d49e1aeSJan Lentfer  *
53ff40c12SJohn Marino  * This software may be distributed under the terms of the BSD license.
63ff40c12SJohn Marino  * See README for more details.
76d49e1aeSJan Lentfer  */
86d49e1aeSJan Lentfer 
96d49e1aeSJan Lentfer #include "includes.h"
106d49e1aeSJan Lentfer 
116d49e1aeSJan Lentfer #include "common.h"
126d49e1aeSJan Lentfer #include "crypto.h"
133ff40c12SJohn Marino #include "random.h"
146d49e1aeSJan Lentfer #include "dh_groups.h"
156d49e1aeSJan Lentfer 
166d49e1aeSJan Lentfer 
176d49e1aeSJan Lentfer #ifdef ALL_DH_GROUPS
186d49e1aeSJan Lentfer 
196d49e1aeSJan Lentfer /* RFC 4306, B.1. Group 1 - 768 Bit MODP
206d49e1aeSJan Lentfer  * Generator: 2
216d49e1aeSJan Lentfer  * Prime: 2^768 - 2 ^704 - 1 + 2^64 * { [2^638 pi] + 149686 }
226d49e1aeSJan Lentfer  */
236d49e1aeSJan Lentfer static const u8 dh_group1_generator[1] = { 0x02 };
246d49e1aeSJan Lentfer static const u8 dh_group1_prime[96] = {
256d49e1aeSJan Lentfer 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
266d49e1aeSJan Lentfer 	0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34,
276d49e1aeSJan Lentfer 	0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1,
286d49e1aeSJan Lentfer 	0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74,
296d49e1aeSJan Lentfer 	0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22,
306d49e1aeSJan Lentfer 	0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD,
316d49e1aeSJan Lentfer 	0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B,
326d49e1aeSJan Lentfer 	0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37,
336d49e1aeSJan Lentfer 	0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45,
346d49e1aeSJan Lentfer 	0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6,
356d49e1aeSJan Lentfer 	0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x3A, 0x36, 0x20,
366d49e1aeSJan Lentfer 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
376d49e1aeSJan Lentfer };
383ff40c12SJohn Marino static const u8 dh_group1_order[96] = {
393ff40c12SJohn Marino 	0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
403ff40c12SJohn Marino 	0xE4, 0x87, 0xED, 0x51, 0x10, 0xB4, 0x61, 0x1A,
413ff40c12SJohn Marino 	0x62, 0x63, 0x31, 0x45, 0xC0, 0x6E, 0x0E, 0x68,
423ff40c12SJohn Marino 	0x94, 0x81, 0x27, 0x04, 0x45, 0x33, 0xE6, 0x3A,
433ff40c12SJohn Marino 	0x01, 0x05, 0xDF, 0x53, 0x1D, 0x89, 0xCD, 0x91,
443ff40c12SJohn Marino 	0x28, 0xA5, 0x04, 0x3C, 0xC7, 0x1A, 0x02, 0x6E,
453ff40c12SJohn Marino 	0xF7, 0xCA, 0x8C, 0xD9, 0xE6, 0x9D, 0x21, 0x8D,
463ff40c12SJohn Marino 	0x98, 0x15, 0x85, 0x36, 0xF9, 0x2F, 0x8A, 0x1B,
473ff40c12SJohn Marino 	0xA7, 0xF0, 0x9A, 0xB6, 0xB6, 0xA8, 0xE1, 0x22,
483ff40c12SJohn Marino 	0xF2, 0x42, 0xDA, 0xBB, 0x31, 0x2F, 0x3F, 0x63,
493ff40c12SJohn Marino 	0x7A, 0x26, 0x21, 0x74, 0xD3, 0x1D, 0x1B, 0x10,
503ff40c12SJohn Marino 	0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
513ff40c12SJohn Marino };
526d49e1aeSJan Lentfer 
536d49e1aeSJan Lentfer /* RFC 4306, B.2. Group 2 - 1024 Bit MODP
546d49e1aeSJan Lentfer  * Generator: 2
556d49e1aeSJan Lentfer  * Prime: 2^1024 - 2^960 - 1 + 2^64 * { [2^894 pi] + 129093 }
566d49e1aeSJan Lentfer  */
576d49e1aeSJan Lentfer static const u8 dh_group2_generator[1] = { 0x02 };
586d49e1aeSJan Lentfer static const u8 dh_group2_prime[128] = {
596d49e1aeSJan Lentfer 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
606d49e1aeSJan Lentfer 	0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34,
616d49e1aeSJan Lentfer 	0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1,
626d49e1aeSJan Lentfer 	0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74,
636d49e1aeSJan Lentfer 	0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22,
646d49e1aeSJan Lentfer 	0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD,
656d49e1aeSJan Lentfer 	0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B,
666d49e1aeSJan Lentfer 	0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37,
676d49e1aeSJan Lentfer 	0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45,
686d49e1aeSJan Lentfer 	0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6,
696d49e1aeSJan Lentfer 	0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B,
706d49e1aeSJan Lentfer 	0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED,
716d49e1aeSJan Lentfer 	0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5,
726d49e1aeSJan Lentfer 	0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6,
736d49e1aeSJan Lentfer 	0x49, 0x28, 0x66, 0x51, 0xEC, 0xE6, 0x53, 0x81,
746d49e1aeSJan Lentfer 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
756d49e1aeSJan Lentfer };
763ff40c12SJohn Marino static const u8 dh_group2_order[128] = {
773ff40c12SJohn Marino 	0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
783ff40c12SJohn Marino 	0xE4, 0x87, 0xED, 0x51, 0x10, 0xB4, 0x61, 0x1A,
793ff40c12SJohn Marino 	0x62, 0x63, 0x31, 0x45, 0xC0, 0x6E, 0x0E, 0x68,
803ff40c12SJohn Marino 	0x94, 0x81, 0x27, 0x04, 0x45, 0x33, 0xE6, 0x3A,
813ff40c12SJohn Marino 	0x01, 0x05, 0xDF, 0x53, 0x1D, 0x89, 0xCD, 0x91,
823ff40c12SJohn Marino 	0x28, 0xA5, 0x04, 0x3C, 0xC7, 0x1A, 0x02, 0x6E,
833ff40c12SJohn Marino 	0xF7, 0xCA, 0x8C, 0xD9, 0xE6, 0x9D, 0x21, 0x8D,
843ff40c12SJohn Marino 	0x98, 0x15, 0x85, 0x36, 0xF9, 0x2F, 0x8A, 0x1B,
853ff40c12SJohn Marino 	0xA7, 0xF0, 0x9A, 0xB6, 0xB6, 0xA8, 0xE1, 0x22,
863ff40c12SJohn Marino 	0xF2, 0x42, 0xDA, 0xBB, 0x31, 0x2F, 0x3F, 0x63,
873ff40c12SJohn Marino 	0x7A, 0x26, 0x21, 0x74, 0xD3, 0x1B, 0xF6, 0xB5,
883ff40c12SJohn Marino 	0x85, 0xFF, 0xAE, 0x5B, 0x7A, 0x03, 0x5B, 0xF6,
893ff40c12SJohn Marino 	0xF7, 0x1C, 0x35, 0xFD, 0xAD, 0x44, 0xCF, 0xD2,
903ff40c12SJohn Marino 	0xD7, 0x4F, 0x92, 0x08, 0xBE, 0x25, 0x8F, 0xF3,
913ff40c12SJohn Marino 	0x24, 0x94, 0x33, 0x28, 0xF6, 0x73, 0x29, 0xC0,
923ff40c12SJohn Marino 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
933ff40c12SJohn Marino };
946d49e1aeSJan Lentfer 
956d49e1aeSJan Lentfer #endif /* ALL_DH_GROUPS */
966d49e1aeSJan Lentfer 
976d49e1aeSJan Lentfer /* RFC 3526, 2. Group 5 - 1536 Bit MODP
986d49e1aeSJan Lentfer  * Generator: 2
996d49e1aeSJan Lentfer  * Prime: 2^1536 - 2^1472 - 1 + 2^64 * { [2^1406 pi] + 741804 }
1006d49e1aeSJan Lentfer  */
1016d49e1aeSJan Lentfer static const u8 dh_group5_generator[1] = { 0x02 };
1026d49e1aeSJan Lentfer static const u8 dh_group5_prime[192] = {
1036d49e1aeSJan Lentfer 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1046d49e1aeSJan Lentfer 	0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34,
1056d49e1aeSJan Lentfer 	0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1,
1066d49e1aeSJan Lentfer 	0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74,
1076d49e1aeSJan Lentfer 	0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22,
1086d49e1aeSJan Lentfer 	0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD,
1096d49e1aeSJan Lentfer 	0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B,
1106d49e1aeSJan Lentfer 	0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37,
1116d49e1aeSJan Lentfer 	0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45,
1126d49e1aeSJan Lentfer 	0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6,
1136d49e1aeSJan Lentfer 	0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B,
1146d49e1aeSJan Lentfer 	0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED,
1156d49e1aeSJan Lentfer 	0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5,
1166d49e1aeSJan Lentfer 	0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6,
1176d49e1aeSJan Lentfer 	0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D,
1186d49e1aeSJan Lentfer 	0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05,
1196d49e1aeSJan Lentfer 	0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A,
1206d49e1aeSJan Lentfer 	0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F,
1216d49e1aeSJan Lentfer 	0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96,
1226d49e1aeSJan Lentfer 	0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB,
1236d49e1aeSJan Lentfer 	0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D,
1246d49e1aeSJan Lentfer 	0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04,
1256d49e1aeSJan Lentfer 	0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x23, 0x73, 0x27,
1266d49e1aeSJan Lentfer 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
1276d49e1aeSJan Lentfer };
1283ff40c12SJohn Marino static const u8 dh_group5_order[192] = {
1293ff40c12SJohn Marino 	0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1303ff40c12SJohn Marino 	0xE4, 0x87, 0xED, 0x51, 0x10, 0xB4, 0x61, 0x1A,
1313ff40c12SJohn Marino 	0x62, 0x63, 0x31, 0x45, 0xC0, 0x6E, 0x0E, 0x68,
1323ff40c12SJohn Marino 	0x94, 0x81, 0x27, 0x04, 0x45, 0x33, 0xE6, 0x3A,
1333ff40c12SJohn Marino 	0x01, 0x05, 0xDF, 0x53, 0x1D, 0x89, 0xCD, 0x91,
1343ff40c12SJohn Marino 	0x28, 0xA5, 0x04, 0x3C, 0xC7, 0x1A, 0x02, 0x6E,
1353ff40c12SJohn Marino 	0xF7, 0xCA, 0x8C, 0xD9, 0xE6, 0x9D, 0x21, 0x8D,
1363ff40c12SJohn Marino 	0x98, 0x15, 0x85, 0x36, 0xF9, 0x2F, 0x8A, 0x1B,
1373ff40c12SJohn Marino 	0xA7, 0xF0, 0x9A, 0xB6, 0xB6, 0xA8, 0xE1, 0x22,
1383ff40c12SJohn Marino 	0xF2, 0x42, 0xDA, 0xBB, 0x31, 0x2F, 0x3F, 0x63,
1393ff40c12SJohn Marino 	0x7A, 0x26, 0x21, 0x74, 0xD3, 0x1B, 0xF6, 0xB5,
1403ff40c12SJohn Marino 	0x85, 0xFF, 0xAE, 0x5B, 0x7A, 0x03, 0x5B, 0xF6,
1413ff40c12SJohn Marino 	0xF7, 0x1C, 0x35, 0xFD, 0xAD, 0x44, 0xCF, 0xD2,
1423ff40c12SJohn Marino 	0xD7, 0x4F, 0x92, 0x08, 0xBE, 0x25, 0x8F, 0xF3,
1433ff40c12SJohn Marino 	0x24, 0x94, 0x33, 0x28, 0xF6, 0x72, 0x2D, 0x9E,
1443ff40c12SJohn Marino 	0xE1, 0x00, 0x3E, 0x5C, 0x50, 0xB1, 0xDF, 0x82,
1453ff40c12SJohn Marino 	0xCC, 0x6D, 0x24, 0x1B, 0x0E, 0x2A, 0xE9, 0xCD,
1463ff40c12SJohn Marino 	0x34, 0x8B, 0x1F, 0xD4, 0x7E, 0x92, 0x67, 0xAF,
1473ff40c12SJohn Marino 	0xC1, 0xB2, 0xAE, 0x91, 0xEE, 0x51, 0xD6, 0xCB,
1483ff40c12SJohn Marino 	0x0E, 0x31, 0x79, 0xAB, 0x10, 0x42, 0xA9, 0x5D,
1493ff40c12SJohn Marino 	0xCF, 0x6A, 0x94, 0x83, 0xB8, 0x4B, 0x4B, 0x36,
1503ff40c12SJohn Marino 	0xB3, 0x86, 0x1A, 0xA7, 0x25, 0x5E, 0x4C, 0x02,
1513ff40c12SJohn Marino 	0x78, 0xBA, 0x36, 0x04, 0x65, 0x11, 0xB9, 0x93,
1523ff40c12SJohn Marino 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
1533ff40c12SJohn Marino };
1546d49e1aeSJan Lentfer 
1556d49e1aeSJan Lentfer #ifdef ALL_DH_GROUPS
1566d49e1aeSJan Lentfer 
1576d49e1aeSJan Lentfer /* RFC 3526, 3. Group 14 - 2048 Bit MODP
1586d49e1aeSJan Lentfer  * Generator: 2
1596d49e1aeSJan Lentfer  * Prime: 2^2048 - 2^1984 - 1 + 2^64 * { [2^1918 pi] + 124476 }
1606d49e1aeSJan Lentfer  */
1616d49e1aeSJan Lentfer static const u8 dh_group14_generator[1] = { 0x02 };
1626d49e1aeSJan Lentfer static const u8 dh_group14_prime[256] = {
1636d49e1aeSJan Lentfer 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1646d49e1aeSJan Lentfer 	0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34,
1656d49e1aeSJan Lentfer 	0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1,
1666d49e1aeSJan Lentfer 	0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74,
1676d49e1aeSJan Lentfer 	0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22,
1686d49e1aeSJan Lentfer 	0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD,
1696d49e1aeSJan Lentfer 	0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B,
1706d49e1aeSJan Lentfer 	0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37,
1716d49e1aeSJan Lentfer 	0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45,
1726d49e1aeSJan Lentfer 	0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6,
1736d49e1aeSJan Lentfer 	0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B,
1746d49e1aeSJan Lentfer 	0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED,
1756d49e1aeSJan Lentfer 	0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5,
1766d49e1aeSJan Lentfer 	0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6,
1776d49e1aeSJan Lentfer 	0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D,
1786d49e1aeSJan Lentfer 	0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05,
1796d49e1aeSJan Lentfer 	0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A,
1806d49e1aeSJan Lentfer 	0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F,
1816d49e1aeSJan Lentfer 	0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96,
1826d49e1aeSJan Lentfer 	0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB,
1836d49e1aeSJan Lentfer 	0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D,
1846d49e1aeSJan Lentfer 	0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04,
1856d49e1aeSJan Lentfer 	0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C,
1866d49e1aeSJan Lentfer 	0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B,
1876d49e1aeSJan Lentfer 	0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03,
1886d49e1aeSJan Lentfer 	0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F,
1896d49e1aeSJan Lentfer 	0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9,
1906d49e1aeSJan Lentfer 	0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18,
1916d49e1aeSJan Lentfer 	0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5,
1926d49e1aeSJan Lentfer 	0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10,
1936d49e1aeSJan Lentfer 	0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAC, 0xAA, 0x68,
1946d49e1aeSJan Lentfer 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
1956d49e1aeSJan Lentfer };
1963ff40c12SJohn Marino static const u8 dh_group14_order[256] = {
1973ff40c12SJohn Marino 	0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1983ff40c12SJohn Marino 	0xE4, 0x87, 0xED, 0x51, 0x10, 0xB4, 0x61, 0x1A,
1993ff40c12SJohn Marino 	0x62, 0x63, 0x31, 0x45, 0xC0, 0x6E, 0x0E, 0x68,
2003ff40c12SJohn Marino 	0x94, 0x81, 0x27, 0x04, 0x45, 0x33, 0xE6, 0x3A,
2013ff40c12SJohn Marino 	0x01, 0x05, 0xDF, 0x53, 0x1D, 0x89, 0xCD, 0x91,
2023ff40c12SJohn Marino 	0x28, 0xA5, 0x04, 0x3C, 0xC7, 0x1A, 0x02, 0x6E,
2033ff40c12SJohn Marino 	0xF7, 0xCA, 0x8C, 0xD9, 0xE6, 0x9D, 0x21, 0x8D,
2043ff40c12SJohn Marino 	0x98, 0x15, 0x85, 0x36, 0xF9, 0x2F, 0x8A, 0x1B,
2053ff40c12SJohn Marino 	0xA7, 0xF0, 0x9A, 0xB6, 0xB6, 0xA8, 0xE1, 0x22,
2063ff40c12SJohn Marino 	0xF2, 0x42, 0xDA, 0xBB, 0x31, 0x2F, 0x3F, 0x63,
2073ff40c12SJohn Marino 	0x7A, 0x26, 0x21, 0x74, 0xD3, 0x1B, 0xF6, 0xB5,
2083ff40c12SJohn Marino 	0x85, 0xFF, 0xAE, 0x5B, 0x7A, 0x03, 0x5B, 0xF6,
2093ff40c12SJohn Marino 	0xF7, 0x1C, 0x35, 0xFD, 0xAD, 0x44, 0xCF, 0xD2,
2103ff40c12SJohn Marino 	0xD7, 0x4F, 0x92, 0x08, 0xBE, 0x25, 0x8F, 0xF3,
2113ff40c12SJohn Marino 	0x24, 0x94, 0x33, 0x28, 0xF6, 0x72, 0x2D, 0x9E,
2123ff40c12SJohn Marino 	0xE1, 0x00, 0x3E, 0x5C, 0x50, 0xB1, 0xDF, 0x82,
2133ff40c12SJohn Marino 	0xCC, 0x6D, 0x24, 0x1B, 0x0E, 0x2A, 0xE9, 0xCD,
2143ff40c12SJohn Marino 	0x34, 0x8B, 0x1F, 0xD4, 0x7E, 0x92, 0x67, 0xAF,
2153ff40c12SJohn Marino 	0xC1, 0xB2, 0xAE, 0x91, 0xEE, 0x51, 0xD6, 0xCB,
2163ff40c12SJohn Marino 	0x0E, 0x31, 0x79, 0xAB, 0x10, 0x42, 0xA9, 0x5D,
2173ff40c12SJohn Marino 	0xCF, 0x6A, 0x94, 0x83, 0xB8, 0x4B, 0x4B, 0x36,
2183ff40c12SJohn Marino 	0xB3, 0x86, 0x1A, 0xA7, 0x25, 0x5E, 0x4C, 0x02,
2193ff40c12SJohn Marino 	0x78, 0xBA, 0x36, 0x04, 0x65, 0x0C, 0x10, 0xBE,
2203ff40c12SJohn Marino 	0x19, 0x48, 0x2F, 0x23, 0x17, 0x1B, 0x67, 0x1D,
2213ff40c12SJohn Marino 	0xF1, 0xCF, 0x3B, 0x96, 0x0C, 0x07, 0x43, 0x01,
2223ff40c12SJohn Marino 	0xCD, 0x93, 0xC1, 0xD1, 0x76, 0x03, 0xD1, 0x47,
2233ff40c12SJohn Marino 	0xDA, 0xE2, 0xAE, 0xF8, 0x37, 0xA6, 0x29, 0x64,
2243ff40c12SJohn Marino 	0xEF, 0x15, 0xE5, 0xFB, 0x4A, 0xAC, 0x0B, 0x8C,
2253ff40c12SJohn Marino 	0x1C, 0xCA, 0xA4, 0xBE, 0x75, 0x4A, 0xB5, 0x72,
2263ff40c12SJohn Marino 	0x8A, 0xE9, 0x13, 0x0C, 0x4C, 0x7D, 0x02, 0x88,
2273ff40c12SJohn Marino 	0x0A, 0xB9, 0x47, 0x2D, 0x45, 0x56, 0x55, 0x34,
2283ff40c12SJohn Marino 	0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
2293ff40c12SJohn Marino };
2306d49e1aeSJan Lentfer 
2316d49e1aeSJan Lentfer /* RFC 3526, 4. Group 15 - 3072 Bit MODP
2326d49e1aeSJan Lentfer  * Generator: 2
2336d49e1aeSJan Lentfer  * Prime: 2^3072 - 2^3008 - 1 + 2^64 * { [2^2942 pi] + 1690314 }
2346d49e1aeSJan Lentfer  */
2356d49e1aeSJan Lentfer static const u8 dh_group15_generator[1] = { 0x02 };
2366d49e1aeSJan Lentfer static const u8 dh_group15_prime[384] = {
2376d49e1aeSJan Lentfer 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
2386d49e1aeSJan Lentfer 	0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34,
2396d49e1aeSJan Lentfer 	0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1,
2406d49e1aeSJan Lentfer 	0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74,
2416d49e1aeSJan Lentfer 	0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22,
2426d49e1aeSJan Lentfer 	0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD,
2436d49e1aeSJan Lentfer 	0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B,
2446d49e1aeSJan Lentfer 	0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37,
2456d49e1aeSJan Lentfer 	0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45,
2466d49e1aeSJan Lentfer 	0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6,
2476d49e1aeSJan Lentfer 	0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B,
2486d49e1aeSJan Lentfer 	0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED,
2496d49e1aeSJan Lentfer 	0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5,
2506d49e1aeSJan Lentfer 	0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6,
2516d49e1aeSJan Lentfer 	0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D,
2526d49e1aeSJan Lentfer 	0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05,
2536d49e1aeSJan Lentfer 	0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A,
2546d49e1aeSJan Lentfer 	0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F,
2556d49e1aeSJan Lentfer 	0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96,
2566d49e1aeSJan Lentfer 	0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB,
2576d49e1aeSJan Lentfer 	0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D,
2586d49e1aeSJan Lentfer 	0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04,
2596d49e1aeSJan Lentfer 	0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C,
2606d49e1aeSJan Lentfer 	0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B,
2616d49e1aeSJan Lentfer 	0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03,
2626d49e1aeSJan Lentfer 	0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F,
2636d49e1aeSJan Lentfer 	0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9,
2646d49e1aeSJan Lentfer 	0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18,
2656d49e1aeSJan Lentfer 	0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5,
2666d49e1aeSJan Lentfer 	0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10,
2676d49e1aeSJan Lentfer 	0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D,
2686d49e1aeSJan Lentfer 	0xAD, 0x33, 0x17, 0x0D, 0x04, 0x50, 0x7A, 0x33,
2696d49e1aeSJan Lentfer 	0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64,
2706d49e1aeSJan Lentfer 	0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A,
2716d49e1aeSJan Lentfer 	0x8A, 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D,
2726d49e1aeSJan Lentfer 	0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7,
2736d49e1aeSJan Lentfer 	0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7,
2746d49e1aeSJan Lentfer 	0x1E, 0x8C, 0x94, 0xE0, 0x4A, 0x25, 0x61, 0x9D,
2756d49e1aeSJan Lentfer 	0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B,
2766d49e1aeSJan Lentfer 	0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64,
2776d49e1aeSJan Lentfer 	0xD8, 0x76, 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64,
2786d49e1aeSJan Lentfer 	0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C,
2796d49e1aeSJan Lentfer 	0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C,
2806d49e1aeSJan Lentfer 	0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, 0x46, 0xE2,
2816d49e1aeSJan Lentfer 	0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31,
2826d49e1aeSJan Lentfer 	0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E,
2836d49e1aeSJan Lentfer 	0x4B, 0x82, 0xD1, 0x20, 0xA9, 0x3A, 0xD2, 0xCA,
2846d49e1aeSJan Lentfer 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
2856d49e1aeSJan Lentfer };
2863ff40c12SJohn Marino static const u8 dh_group15_order[384] = {
2873ff40c12SJohn Marino 	0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
2883ff40c12SJohn Marino 	0xE4, 0x87, 0xED, 0x51, 0x10, 0xB4, 0x61, 0x1A,
2893ff40c12SJohn Marino 	0x62, 0x63, 0x31, 0x45, 0xC0, 0x6E, 0x0E, 0x68,
2903ff40c12SJohn Marino 	0x94, 0x81, 0x27, 0x04, 0x45, 0x33, 0xE6, 0x3A,
2913ff40c12SJohn Marino 	0x01, 0x05, 0xDF, 0x53, 0x1D, 0x89, 0xCD, 0x91,
2923ff40c12SJohn Marino 	0x28, 0xA5, 0x04, 0x3C, 0xC7, 0x1A, 0x02, 0x6E,
2933ff40c12SJohn Marino 	0xF7, 0xCA, 0x8C, 0xD9, 0xE6, 0x9D, 0x21, 0x8D,
2943ff40c12SJohn Marino 	0x98, 0x15, 0x85, 0x36, 0xF9, 0x2F, 0x8A, 0x1B,
2953ff40c12SJohn Marino 	0xA7, 0xF0, 0x9A, 0xB6, 0xB6, 0xA8, 0xE1, 0x22,
2963ff40c12SJohn Marino 	0xF2, 0x42, 0xDA, 0xBB, 0x31, 0x2F, 0x3F, 0x63,
2973ff40c12SJohn Marino 	0x7A, 0x26, 0x21, 0x74, 0xD3, 0x1B, 0xF6, 0xB5,
2983ff40c12SJohn Marino 	0x85, 0xFF, 0xAE, 0x5B, 0x7A, 0x03, 0x5B, 0xF6,
2993ff40c12SJohn Marino 	0xF7, 0x1C, 0x35, 0xFD, 0xAD, 0x44, 0xCF, 0xD2,
3003ff40c12SJohn Marino 	0xD7, 0x4F, 0x92, 0x08, 0xBE, 0x25, 0x8F, 0xF3,
3013ff40c12SJohn Marino 	0x24, 0x94, 0x33, 0x28, 0xF6, 0x72, 0x2D, 0x9E,
3023ff40c12SJohn Marino 	0xE1, 0x00, 0x3E, 0x5C, 0x50, 0xB1, 0xDF, 0x82,
3033ff40c12SJohn Marino 	0xCC, 0x6D, 0x24, 0x1B, 0x0E, 0x2A, 0xE9, 0xCD,
3043ff40c12SJohn Marino 	0x34, 0x8B, 0x1F, 0xD4, 0x7E, 0x92, 0x67, 0xAF,
3053ff40c12SJohn Marino 	0xC1, 0xB2, 0xAE, 0x91, 0xEE, 0x51, 0xD6, 0xCB,
3063ff40c12SJohn Marino 	0x0E, 0x31, 0x79, 0xAB, 0x10, 0x42, 0xA9, 0x5D,
3073ff40c12SJohn Marino 	0xCF, 0x6A, 0x94, 0x83, 0xB8, 0x4B, 0x4B, 0x36,
3083ff40c12SJohn Marino 	0xB3, 0x86, 0x1A, 0xA7, 0x25, 0x5E, 0x4C, 0x02,
3093ff40c12SJohn Marino 	0x78, 0xBA, 0x36, 0x04, 0x65, 0x0C, 0x10, 0xBE,
3103ff40c12SJohn Marino 	0x19, 0x48, 0x2F, 0x23, 0x17, 0x1B, 0x67, 0x1D,
3113ff40c12SJohn Marino 	0xF1, 0xCF, 0x3B, 0x96, 0x0C, 0x07, 0x43, 0x01,
3123ff40c12SJohn Marino 	0xCD, 0x93, 0xC1, 0xD1, 0x76, 0x03, 0xD1, 0x47,
3133ff40c12SJohn Marino 	0xDA, 0xE2, 0xAE, 0xF8, 0x37, 0xA6, 0x29, 0x64,
3143ff40c12SJohn Marino 	0xEF, 0x15, 0xE5, 0xFB, 0x4A, 0xAC, 0x0B, 0x8C,
3153ff40c12SJohn Marino 	0x1C, 0xCA, 0xA4, 0xBE, 0x75, 0x4A, 0xB5, 0x72,
3163ff40c12SJohn Marino 	0x8A, 0xE9, 0x13, 0x0C, 0x4C, 0x7D, 0x02, 0x88,
3173ff40c12SJohn Marino 	0x0A, 0xB9, 0x47, 0x2D, 0x45, 0x55, 0x62, 0x16,
3183ff40c12SJohn Marino 	0xD6, 0x99, 0x8B, 0x86, 0x82, 0x28, 0x3D, 0x19,
3193ff40c12SJohn Marino 	0xD4, 0x2A, 0x90, 0xD5, 0xEF, 0x8E, 0x5D, 0x32,
3203ff40c12SJohn Marino 	0x76, 0x7D, 0xC2, 0x82, 0x2C, 0x6D, 0xF7, 0x85,
3213ff40c12SJohn Marino 	0x45, 0x75, 0x38, 0xAB, 0xAE, 0x83, 0x06, 0x3E,
3223ff40c12SJohn Marino 	0xD9, 0xCB, 0x87, 0xC2, 0xD3, 0x70, 0xF2, 0x63,
3233ff40c12SJohn Marino 	0xD5, 0xFA, 0xD7, 0x46, 0x6D, 0x84, 0x99, 0xEB,
3243ff40c12SJohn Marino 	0x8F, 0x46, 0x4A, 0x70, 0x25, 0x12, 0xB0, 0xCE,
3253ff40c12SJohn Marino 	0xE7, 0x71, 0xE9, 0x13, 0x0D, 0x69, 0x77, 0x35,
3263ff40c12SJohn Marino 	0xF8, 0x97, 0xFD, 0x03, 0x6C, 0xC5, 0x04, 0x32,
3273ff40c12SJohn Marino 	0x6C, 0x3B, 0x01, 0x39, 0x9F, 0x64, 0x35, 0x32,
3283ff40c12SJohn Marino 	0x29, 0x0F, 0x95, 0x8C, 0x0B, 0xBD, 0x90, 0x06,
3293ff40c12SJohn Marino 	0x5D, 0xF0, 0x8B, 0xAB, 0xBD, 0x30, 0xAE, 0xB6,
3303ff40c12SJohn Marino 	0x3B, 0x84, 0xC4, 0x60, 0x5D, 0x6C, 0xA3, 0x71,
3313ff40c12SJohn Marino 	0x04, 0x71, 0x27, 0xD0, 0x3A, 0x72, 0xD5, 0x98,
3323ff40c12SJohn Marino 	0xA1, 0xED, 0xAD, 0xFE, 0x70, 0x7E, 0x88, 0x47,
3333ff40c12SJohn Marino 	0x25, 0xC1, 0x68, 0x90, 0x54, 0x9D, 0x69, 0x65,
3343ff40c12SJohn Marino 	0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
3353ff40c12SJohn Marino };
3366d49e1aeSJan Lentfer 
3376d49e1aeSJan Lentfer /* RFC 3526, 5. Group 16 - 4096 Bit MODP
3386d49e1aeSJan Lentfer  * Generator: 2
3396d49e1aeSJan Lentfer  * Prime: 2^4096 - 2^4032 - 1 + 2^64 * { [2^3966 pi] + 240904 }
3406d49e1aeSJan Lentfer  */
3416d49e1aeSJan Lentfer static const u8 dh_group16_generator[1] = { 0x02 };
3426d49e1aeSJan Lentfer static const u8 dh_group16_prime[512] = {
3436d49e1aeSJan Lentfer 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
3446d49e1aeSJan Lentfer 	0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34,
3456d49e1aeSJan Lentfer 	0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1,
3466d49e1aeSJan Lentfer 	0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74,
3476d49e1aeSJan Lentfer 	0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22,
3486d49e1aeSJan Lentfer 	0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD,
3496d49e1aeSJan Lentfer 	0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B,
3506d49e1aeSJan Lentfer 	0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37,
3516d49e1aeSJan Lentfer 	0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45,
3526d49e1aeSJan Lentfer 	0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6,
3536d49e1aeSJan Lentfer 	0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B,
3546d49e1aeSJan Lentfer 	0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED,
3556d49e1aeSJan Lentfer 	0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5,
3566d49e1aeSJan Lentfer 	0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6,
3576d49e1aeSJan Lentfer 	0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D,
3586d49e1aeSJan Lentfer 	0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05,
3596d49e1aeSJan Lentfer 	0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A,
3606d49e1aeSJan Lentfer 	0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F,
3616d49e1aeSJan Lentfer 	0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96,
3626d49e1aeSJan Lentfer 	0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB,
3636d49e1aeSJan Lentfer 	0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D,
3646d49e1aeSJan Lentfer 	0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04,
3656d49e1aeSJan Lentfer 	0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C,
3666d49e1aeSJan Lentfer 	0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B,
3676d49e1aeSJan Lentfer 	0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03,
3686d49e1aeSJan Lentfer 	0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F,
3696d49e1aeSJan Lentfer 	0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9,
3706d49e1aeSJan Lentfer 	0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18,
3716d49e1aeSJan Lentfer 	0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5,
3726d49e1aeSJan Lentfer 	0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10,
3736d49e1aeSJan Lentfer 	0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D,
3746d49e1aeSJan Lentfer 	0xAD, 0x33, 0x17, 0x0D, 0x04, 0x50, 0x7A, 0x33,
3756d49e1aeSJan Lentfer 	0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64,
3766d49e1aeSJan Lentfer 	0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A,
3776d49e1aeSJan Lentfer 	0x8A, 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D,
3786d49e1aeSJan Lentfer 	0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7,
3796d49e1aeSJan Lentfer 	0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7,
3806d49e1aeSJan Lentfer 	0x1E, 0x8C, 0x94, 0xE0, 0x4A, 0x25, 0x61, 0x9D,
3816d49e1aeSJan Lentfer 	0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B,
3826d49e1aeSJan Lentfer 	0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64,
3836d49e1aeSJan Lentfer 	0xD8, 0x76, 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64,
3846d49e1aeSJan Lentfer 	0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C,
3856d49e1aeSJan Lentfer 	0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C,
3866d49e1aeSJan Lentfer 	0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, 0x46, 0xE2,
3876d49e1aeSJan Lentfer 	0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31,
3886d49e1aeSJan Lentfer 	0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E,
3896d49e1aeSJan Lentfer 	0x4B, 0x82, 0xD1, 0x20, 0xA9, 0x21, 0x08, 0x01,
3906d49e1aeSJan Lentfer 	0x1A, 0x72, 0x3C, 0x12, 0xA7, 0x87, 0xE6, 0xD7,
3916d49e1aeSJan Lentfer 	0x88, 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26,
3926d49e1aeSJan Lentfer 	0x99, 0xC3, 0x27, 0x18, 0x6A, 0xF4, 0xE2, 0x3C,
3936d49e1aeSJan Lentfer 	0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, 0x0B, 0xDA,
3946d49e1aeSJan Lentfer 	0x25, 0x83, 0xE9, 0xCA, 0x2A, 0xD4, 0x4C, 0xE8,
3956d49e1aeSJan Lentfer 	0xDB, 0xBB, 0xC2, 0xDB, 0x04, 0xDE, 0x8E, 0xF9,
3966d49e1aeSJan Lentfer 	0x2E, 0x8E, 0xFC, 0x14, 0x1F, 0xBE, 0xCA, 0xA6,
3976d49e1aeSJan Lentfer 	0x28, 0x7C, 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D,
3986d49e1aeSJan Lentfer 	0x99, 0xB2, 0x96, 0x4F, 0xA0, 0x90, 0xC3, 0xA2,
3996d49e1aeSJan Lentfer 	0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, 0xED,
4006d49e1aeSJan Lentfer 	0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, 0xD7, 0xAF,
4016d49e1aeSJan Lentfer 	0xB8, 0x1B, 0xDD, 0x76, 0x21, 0x70, 0x48, 0x1C,
4026d49e1aeSJan Lentfer 	0xD0, 0x06, 0x91, 0x27, 0xD5, 0xB0, 0x5A, 0xA9,
4036d49e1aeSJan Lentfer 	0x93, 0xB4, 0xEA, 0x98, 0x8D, 0x8F, 0xDD, 0xC1,
4046d49e1aeSJan Lentfer 	0x86, 0xFF, 0xB7, 0xDC, 0x90, 0xA6, 0xC0, 0x8F,
4056d49e1aeSJan Lentfer 	0x4D, 0xF4, 0x35, 0xC9, 0x34, 0x06, 0x31, 0x99,
4066d49e1aeSJan Lentfer 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
4076d49e1aeSJan Lentfer };
4083ff40c12SJohn Marino static const u8 dh_group16_order[512] = {
4093ff40c12SJohn Marino 	0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
4103ff40c12SJohn Marino 	0xE4, 0x87, 0xED, 0x51, 0x10, 0xB4, 0x61, 0x1A,
4113ff40c12SJohn Marino 	0x62, 0x63, 0x31, 0x45, 0xC0, 0x6E, 0x0E, 0x68,
4123ff40c12SJohn Marino 	0x94, 0x81, 0x27, 0x04, 0x45, 0x33, 0xE6, 0x3A,
4133ff40c12SJohn Marino 	0x01, 0x05, 0xDF, 0x53, 0x1D, 0x89, 0xCD, 0x91,
4143ff40c12SJohn Marino 	0x28, 0xA5, 0x04, 0x3C, 0xC7, 0x1A, 0x02, 0x6E,
4153ff40c12SJohn Marino 	0xF7, 0xCA, 0x8C, 0xD9, 0xE6, 0x9D, 0x21, 0x8D,
4163ff40c12SJohn Marino 	0x98, 0x15, 0x85, 0x36, 0xF9, 0x2F, 0x8A, 0x1B,
4173ff40c12SJohn Marino 	0xA7, 0xF0, 0x9A, 0xB6, 0xB6, 0xA8, 0xE1, 0x22,
4183ff40c12SJohn Marino 	0xF2, 0x42, 0xDA, 0xBB, 0x31, 0x2F, 0x3F, 0x63,
4193ff40c12SJohn Marino 	0x7A, 0x26, 0x21, 0x74, 0xD3, 0x1B, 0xF6, 0xB5,
4203ff40c12SJohn Marino 	0x85, 0xFF, 0xAE, 0x5B, 0x7A, 0x03, 0x5B, 0xF6,
4213ff40c12SJohn Marino 	0xF7, 0x1C, 0x35, 0xFD, 0xAD, 0x44, 0xCF, 0xD2,
4223ff40c12SJohn Marino 	0xD7, 0x4F, 0x92, 0x08, 0xBE, 0x25, 0x8F, 0xF3,
4233ff40c12SJohn Marino 	0x24, 0x94, 0x33, 0x28, 0xF6, 0x72, 0x2D, 0x9E,
4243ff40c12SJohn Marino 	0xE1, 0x00, 0x3E, 0x5C, 0x50, 0xB1, 0xDF, 0x82,
4253ff40c12SJohn Marino 	0xCC, 0x6D, 0x24, 0x1B, 0x0E, 0x2A, 0xE9, 0xCD,
4263ff40c12SJohn Marino 	0x34, 0x8B, 0x1F, 0xD4, 0x7E, 0x92, 0x67, 0xAF,
4273ff40c12SJohn Marino 	0xC1, 0xB2, 0xAE, 0x91, 0xEE, 0x51, 0xD6, 0xCB,
4283ff40c12SJohn Marino 	0x0E, 0x31, 0x79, 0xAB, 0x10, 0x42, 0xA9, 0x5D,
4293ff40c12SJohn Marino 	0xCF, 0x6A, 0x94, 0x83, 0xB8, 0x4B, 0x4B, 0x36,
4303ff40c12SJohn Marino 	0xB3, 0x86, 0x1A, 0xA7, 0x25, 0x5E, 0x4C, 0x02,
4313ff40c12SJohn Marino 	0x78, 0xBA, 0x36, 0x04, 0x65, 0x0C, 0x10, 0xBE,
4323ff40c12SJohn Marino 	0x19, 0x48, 0x2F, 0x23, 0x17, 0x1B, 0x67, 0x1D,
4333ff40c12SJohn Marino 	0xF1, 0xCF, 0x3B, 0x96, 0x0C, 0x07, 0x43, 0x01,
4343ff40c12SJohn Marino 	0xCD, 0x93, 0xC1, 0xD1, 0x76, 0x03, 0xD1, 0x47,
4353ff40c12SJohn Marino 	0xDA, 0xE2, 0xAE, 0xF8, 0x37, 0xA6, 0x29, 0x64,
4363ff40c12SJohn Marino 	0xEF, 0x15, 0xE5, 0xFB, 0x4A, 0xAC, 0x0B, 0x8C,
4373ff40c12SJohn Marino 	0x1C, 0xCA, 0xA4, 0xBE, 0x75, 0x4A, 0xB5, 0x72,
4383ff40c12SJohn Marino 	0x8A, 0xE9, 0x13, 0x0C, 0x4C, 0x7D, 0x02, 0x88,
4393ff40c12SJohn Marino 	0x0A, 0xB9, 0x47, 0x2D, 0x45, 0x55, 0x62, 0x16,
4403ff40c12SJohn Marino 	0xD6, 0x99, 0x8B, 0x86, 0x82, 0x28, 0x3D, 0x19,
4413ff40c12SJohn Marino 	0xD4, 0x2A, 0x90, 0xD5, 0xEF, 0x8E, 0x5D, 0x32,
4423ff40c12SJohn Marino 	0x76, 0x7D, 0xC2, 0x82, 0x2C, 0x6D, 0xF7, 0x85,
4433ff40c12SJohn Marino 	0x45, 0x75, 0x38, 0xAB, 0xAE, 0x83, 0x06, 0x3E,
4443ff40c12SJohn Marino 	0xD9, 0xCB, 0x87, 0xC2, 0xD3, 0x70, 0xF2, 0x63,
4453ff40c12SJohn Marino 	0xD5, 0xFA, 0xD7, 0x46, 0x6D, 0x84, 0x99, 0xEB,
4463ff40c12SJohn Marino 	0x8F, 0x46, 0x4A, 0x70, 0x25, 0x12, 0xB0, 0xCE,
4473ff40c12SJohn Marino 	0xE7, 0x71, 0xE9, 0x13, 0x0D, 0x69, 0x77, 0x35,
4483ff40c12SJohn Marino 	0xF8, 0x97, 0xFD, 0x03, 0x6C, 0xC5, 0x04, 0x32,
4493ff40c12SJohn Marino 	0x6C, 0x3B, 0x01, 0x39, 0x9F, 0x64, 0x35, 0x32,
4503ff40c12SJohn Marino 	0x29, 0x0F, 0x95, 0x8C, 0x0B, 0xBD, 0x90, 0x06,
4513ff40c12SJohn Marino 	0x5D, 0xF0, 0x8B, 0xAB, 0xBD, 0x30, 0xAE, 0xB6,
4523ff40c12SJohn Marino 	0x3B, 0x84, 0xC4, 0x60, 0x5D, 0x6C, 0xA3, 0x71,
4533ff40c12SJohn Marino 	0x04, 0x71, 0x27, 0xD0, 0x3A, 0x72, 0xD5, 0x98,
4543ff40c12SJohn Marino 	0xA1, 0xED, 0xAD, 0xFE, 0x70, 0x7E, 0x88, 0x47,
4553ff40c12SJohn Marino 	0x25, 0xC1, 0x68, 0x90, 0x54, 0x90, 0x84, 0x00,
4563ff40c12SJohn Marino 	0x8D, 0x39, 0x1E, 0x09, 0x53, 0xC3, 0xF3, 0x6B,
4573ff40c12SJohn Marino 	0xC4, 0x38, 0xCD, 0x08, 0x5E, 0xDD, 0x2D, 0x93,
4583ff40c12SJohn Marino 	0x4C, 0xE1, 0x93, 0x8C, 0x35, 0x7A, 0x71, 0x1E,
4593ff40c12SJohn Marino 	0x0D, 0x4A, 0x34, 0x1A, 0x5B, 0x0A, 0x85, 0xED,
4603ff40c12SJohn Marino 	0x12, 0xC1, 0xF4, 0xE5, 0x15, 0x6A, 0x26, 0x74,
4613ff40c12SJohn Marino 	0x6D, 0xDD, 0xE1, 0x6D, 0x82, 0x6F, 0x47, 0x7C,
4623ff40c12SJohn Marino 	0x97, 0x47, 0x7E, 0x0A, 0x0F, 0xDF, 0x65, 0x53,
4633ff40c12SJohn Marino 	0x14, 0x3E, 0x2C, 0xA3, 0xA7, 0x35, 0xE0, 0x2E,
4643ff40c12SJohn Marino 	0xCC, 0xD9, 0x4B, 0x27, 0xD0, 0x48, 0x61, 0xD1,
4653ff40c12SJohn Marino 	0x11, 0x9D, 0xD0, 0xC3, 0x28, 0xAD, 0xF3, 0xF6,
4663ff40c12SJohn Marino 	0x8F, 0xB0, 0x94, 0xB8, 0x67, 0x71, 0x6B, 0xD7,
4673ff40c12SJohn Marino 	0xDC, 0x0D, 0xEE, 0xBB, 0x10, 0xB8, 0x24, 0x0E,
4683ff40c12SJohn Marino 	0x68, 0x03, 0x48, 0x93, 0xEA, 0xD8, 0x2D, 0x54,
4693ff40c12SJohn Marino 	0xC9, 0xDA, 0x75, 0x4C, 0x46, 0xC7, 0xEE, 0xE0,
4703ff40c12SJohn Marino 	0xC3, 0x7F, 0xDB, 0xEE, 0x48, 0x53, 0x60, 0x47,
4713ff40c12SJohn Marino 	0xA6, 0xFA, 0x1A, 0xE4, 0x9A, 0x03, 0x18, 0xCC,
4723ff40c12SJohn Marino 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
4733ff40c12SJohn Marino };
4746d49e1aeSJan Lentfer 
4756d49e1aeSJan Lentfer /* RFC 3526, 6. Group 17 - 6144 Bit MODP
4766d49e1aeSJan Lentfer  * Generator: 2
4776d49e1aeSJan Lentfer  * Prime: 2^6144 - 2^6080 - 1 + 2^64 * { [2^6014 pi] + 929484 }
4786d49e1aeSJan Lentfer  */
4796d49e1aeSJan Lentfer static const u8 dh_group17_generator[1] = { 0x02 };
4806d49e1aeSJan Lentfer static const u8 dh_group17_prime[768] = {
4816d49e1aeSJan Lentfer 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
4826d49e1aeSJan Lentfer 	0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34,
4836d49e1aeSJan Lentfer 	0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1,
4846d49e1aeSJan Lentfer 	0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74,
4856d49e1aeSJan Lentfer 	0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22,
4866d49e1aeSJan Lentfer 	0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD,
4876d49e1aeSJan Lentfer 	0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B,
4886d49e1aeSJan Lentfer 	0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37,
4896d49e1aeSJan Lentfer 	0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45,
4906d49e1aeSJan Lentfer 	0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6,
4916d49e1aeSJan Lentfer 	0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B,
4926d49e1aeSJan Lentfer 	0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED,
4936d49e1aeSJan Lentfer 	0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5,
4946d49e1aeSJan Lentfer 	0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6,
4956d49e1aeSJan Lentfer 	0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D,
4966d49e1aeSJan Lentfer 	0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05,
4976d49e1aeSJan Lentfer 	0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A,
4986d49e1aeSJan Lentfer 	0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F,
4996d49e1aeSJan Lentfer 	0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96,
5006d49e1aeSJan Lentfer 	0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB,
5016d49e1aeSJan Lentfer 	0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D,
5026d49e1aeSJan Lentfer 	0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04,
5036d49e1aeSJan Lentfer 	0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C,
5046d49e1aeSJan Lentfer 	0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B,
5056d49e1aeSJan Lentfer 	0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03,
5066d49e1aeSJan Lentfer 	0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F,
5076d49e1aeSJan Lentfer 	0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9,
5086d49e1aeSJan Lentfer 	0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18,
5096d49e1aeSJan Lentfer 	0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5,
5106d49e1aeSJan Lentfer 	0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10,
5116d49e1aeSJan Lentfer 	0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D,
5126d49e1aeSJan Lentfer 	0xAD, 0x33, 0x17, 0x0D, 0x04, 0x50, 0x7A, 0x33,
5136d49e1aeSJan Lentfer 	0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64,
5146d49e1aeSJan Lentfer 	0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A,
5156d49e1aeSJan Lentfer 	0x8A, 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D,
5166d49e1aeSJan Lentfer 	0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7,
5176d49e1aeSJan Lentfer 	0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7,
5186d49e1aeSJan Lentfer 	0x1E, 0x8C, 0x94, 0xE0, 0x4A, 0x25, 0x61, 0x9D,
5196d49e1aeSJan Lentfer 	0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B,
5206d49e1aeSJan Lentfer 	0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64,
5216d49e1aeSJan Lentfer 	0xD8, 0x76, 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64,
5226d49e1aeSJan Lentfer 	0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C,
5236d49e1aeSJan Lentfer 	0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C,
5246d49e1aeSJan Lentfer 	0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, 0x46, 0xE2,
5256d49e1aeSJan Lentfer 	0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31,
5266d49e1aeSJan Lentfer 	0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E,
5276d49e1aeSJan Lentfer 	0x4B, 0x82, 0xD1, 0x20, 0xA9, 0x21, 0x08, 0x01,
5286d49e1aeSJan Lentfer 	0x1A, 0x72, 0x3C, 0x12, 0xA7, 0x87, 0xE6, 0xD7,
5296d49e1aeSJan Lentfer 	0x88, 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26,
5306d49e1aeSJan Lentfer 	0x99, 0xC3, 0x27, 0x18, 0x6A, 0xF4, 0xE2, 0x3C,
5316d49e1aeSJan Lentfer 	0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, 0x0B, 0xDA,
5326d49e1aeSJan Lentfer 	0x25, 0x83, 0xE9, 0xCA, 0x2A, 0xD4, 0x4C, 0xE8,
5336d49e1aeSJan Lentfer 	0xDB, 0xBB, 0xC2, 0xDB, 0x04, 0xDE, 0x8E, 0xF9,
5346d49e1aeSJan Lentfer 	0x2E, 0x8E, 0xFC, 0x14, 0x1F, 0xBE, 0xCA, 0xA6,
5356d49e1aeSJan Lentfer 	0x28, 0x7C, 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D,
5366d49e1aeSJan Lentfer 	0x99, 0xB2, 0x96, 0x4F, 0xA0, 0x90, 0xC3, 0xA2,
5376d49e1aeSJan Lentfer 	0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, 0xED,
5386d49e1aeSJan Lentfer 	0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, 0xD7, 0xAF,
5396d49e1aeSJan Lentfer 	0xB8, 0x1B, 0xDD, 0x76, 0x21, 0x70, 0x48, 0x1C,
5406d49e1aeSJan Lentfer 	0xD0, 0x06, 0x91, 0x27, 0xD5, 0xB0, 0x5A, 0xA9,
5416d49e1aeSJan Lentfer 	0x93, 0xB4, 0xEA, 0x98, 0x8D, 0x8F, 0xDD, 0xC1,
5426d49e1aeSJan Lentfer 	0x86, 0xFF, 0xB7, 0xDC, 0x90, 0xA6, 0xC0, 0x8F,
5436d49e1aeSJan Lentfer 	0x4D, 0xF4, 0x35, 0xC9, 0x34, 0x02, 0x84, 0x92,
5446d49e1aeSJan Lentfer 	0x36, 0xC3, 0xFA, 0xB4, 0xD2, 0x7C, 0x70, 0x26,
5456d49e1aeSJan Lentfer 	0xC1, 0xD4, 0xDC, 0xB2, 0x60, 0x26, 0x46, 0xDE,
5466d49e1aeSJan Lentfer 	0xC9, 0x75, 0x1E, 0x76, 0x3D, 0xBA, 0x37, 0xBD,
5476d49e1aeSJan Lentfer 	0xF8, 0xFF, 0x94, 0x06, 0xAD, 0x9E, 0x53, 0x0E,
5486d49e1aeSJan Lentfer 	0xE5, 0xDB, 0x38, 0x2F, 0x41, 0x30, 0x01, 0xAE,
5496d49e1aeSJan Lentfer 	0xB0, 0x6A, 0x53, 0xED, 0x90, 0x27, 0xD8, 0x31,
5506d49e1aeSJan Lentfer 	0x17, 0x97, 0x27, 0xB0, 0x86, 0x5A, 0x89, 0x18,
5516d49e1aeSJan Lentfer 	0xDA, 0x3E, 0xDB, 0xEB, 0xCF, 0x9B, 0x14, 0xED,
5526d49e1aeSJan Lentfer 	0x44, 0xCE, 0x6C, 0xBA, 0xCE, 0xD4, 0xBB, 0x1B,
5536d49e1aeSJan Lentfer 	0xDB, 0x7F, 0x14, 0x47, 0xE6, 0xCC, 0x25, 0x4B,
5546d49e1aeSJan Lentfer 	0x33, 0x20, 0x51, 0x51, 0x2B, 0xD7, 0xAF, 0x42,
5556d49e1aeSJan Lentfer 	0x6F, 0xB8, 0xF4, 0x01, 0x37, 0x8C, 0xD2, 0xBF,
5566d49e1aeSJan Lentfer 	0x59, 0x83, 0xCA, 0x01, 0xC6, 0x4B, 0x92, 0xEC,
5576d49e1aeSJan Lentfer 	0xF0, 0x32, 0xEA, 0x15, 0xD1, 0x72, 0x1D, 0x03,
5586d49e1aeSJan Lentfer 	0xF4, 0x82, 0xD7, 0xCE, 0x6E, 0x74, 0xFE, 0xF6,
5596d49e1aeSJan Lentfer 	0xD5, 0x5E, 0x70, 0x2F, 0x46, 0x98, 0x0C, 0x82,
5606d49e1aeSJan Lentfer 	0xB5, 0xA8, 0x40, 0x31, 0x90, 0x0B, 0x1C, 0x9E,
5616d49e1aeSJan Lentfer 	0x59, 0xE7, 0xC9, 0x7F, 0xBE, 0xC7, 0xE8, 0xF3,
5626d49e1aeSJan Lentfer 	0x23, 0xA9, 0x7A, 0x7E, 0x36, 0xCC, 0x88, 0xBE,
5636d49e1aeSJan Lentfer 	0x0F, 0x1D, 0x45, 0xB7, 0xFF, 0x58, 0x5A, 0xC5,
5646d49e1aeSJan Lentfer 	0x4B, 0xD4, 0x07, 0xB2, 0x2B, 0x41, 0x54, 0xAA,
5656d49e1aeSJan Lentfer 	0xCC, 0x8F, 0x6D, 0x7E, 0xBF, 0x48, 0xE1, 0xD8,
5666d49e1aeSJan Lentfer 	0x14, 0xCC, 0x5E, 0xD2, 0x0F, 0x80, 0x37, 0xE0,
5676d49e1aeSJan Lentfer 	0xA7, 0x97, 0x15, 0xEE, 0xF2, 0x9B, 0xE3, 0x28,
5686d49e1aeSJan Lentfer 	0x06, 0xA1, 0xD5, 0x8B, 0xB7, 0xC5, 0xDA, 0x76,
5696d49e1aeSJan Lentfer 	0xF5, 0x50, 0xAA, 0x3D, 0x8A, 0x1F, 0xBF, 0xF0,
5706d49e1aeSJan Lentfer 	0xEB, 0x19, 0xCC, 0xB1, 0xA3, 0x13, 0xD5, 0x5C,
5716d49e1aeSJan Lentfer 	0xDA, 0x56, 0xC9, 0xEC, 0x2E, 0xF2, 0x96, 0x32,
5726d49e1aeSJan Lentfer 	0x38, 0x7F, 0xE8, 0xD7, 0x6E, 0x3C, 0x04, 0x68,
5736d49e1aeSJan Lentfer 	0x04, 0x3E, 0x8F, 0x66, 0x3F, 0x48, 0x60, 0xEE,
5746d49e1aeSJan Lentfer 	0x12, 0xBF, 0x2D, 0x5B, 0x0B, 0x74, 0x74, 0xD6,
5756d49e1aeSJan Lentfer 	0xE6, 0x94, 0xF9, 0x1E, 0x6D, 0xCC, 0x40, 0x24,
5766d49e1aeSJan Lentfer 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
5776d49e1aeSJan Lentfer };
5783ff40c12SJohn Marino static const u8 dh_group17_order[768] = {
5793ff40c12SJohn Marino 	0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
5803ff40c12SJohn Marino 	0xE4, 0x87, 0xED, 0x51, 0x10, 0xB4, 0x61, 0x1A,
5813ff40c12SJohn Marino 	0x62, 0x63, 0x31, 0x45, 0xC0, 0x6E, 0x0E, 0x68,
5823ff40c12SJohn Marino 	0x94, 0x81, 0x27, 0x04, 0x45, 0x33, 0xE6, 0x3A,
5833ff40c12SJohn Marino 	0x01, 0x05, 0xDF, 0x53, 0x1D, 0x89, 0xCD, 0x91,
5843ff40c12SJohn Marino 	0x28, 0xA5, 0x04, 0x3C, 0xC7, 0x1A, 0x02, 0x6E,
5853ff40c12SJohn Marino 	0xF7, 0xCA, 0x8C, 0xD9, 0xE6, 0x9D, 0x21, 0x8D,
5863ff40c12SJohn Marino 	0x98, 0x15, 0x85, 0x36, 0xF9, 0x2F, 0x8A, 0x1B,
5873ff40c12SJohn Marino 	0xA7, 0xF0, 0x9A, 0xB6, 0xB6, 0xA8, 0xE1, 0x22,
5883ff40c12SJohn Marino 	0xF2, 0x42, 0xDA, 0xBB, 0x31, 0x2F, 0x3F, 0x63,
5893ff40c12SJohn Marino 	0x7A, 0x26, 0x21, 0x74, 0xD3, 0x1B, 0xF6, 0xB5,
5903ff40c12SJohn Marino 	0x85, 0xFF, 0xAE, 0x5B, 0x7A, 0x03, 0x5B, 0xF6,
5913ff40c12SJohn Marino 	0xF7, 0x1C, 0x35, 0xFD, 0xAD, 0x44, 0xCF, 0xD2,
5923ff40c12SJohn Marino 	0xD7, 0x4F, 0x92, 0x08, 0xBE, 0x25, 0x8F, 0xF3,
5933ff40c12SJohn Marino 	0x24, 0x94, 0x33, 0x28, 0xF6, 0x72, 0x2D, 0x9E,
5943ff40c12SJohn Marino 	0xE1, 0x00, 0x3E, 0x5C, 0x50, 0xB1, 0xDF, 0x82,
5953ff40c12SJohn Marino 	0xCC, 0x6D, 0x24, 0x1B, 0x0E, 0x2A, 0xE9, 0xCD,
5963ff40c12SJohn Marino 	0x34, 0x8B, 0x1F, 0xD4, 0x7E, 0x92, 0x67, 0xAF,
5973ff40c12SJohn Marino 	0xC1, 0xB2, 0xAE, 0x91, 0xEE, 0x51, 0xD6, 0xCB,
5983ff40c12SJohn Marino 	0x0E, 0x31, 0x79, 0xAB, 0x10, 0x42, 0xA9, 0x5D,
5993ff40c12SJohn Marino 	0xCF, 0x6A, 0x94, 0x83, 0xB8, 0x4B, 0x4B, 0x36,
6003ff40c12SJohn Marino 	0xB3, 0x86, 0x1A, 0xA7, 0x25, 0x5E, 0x4C, 0x02,
6013ff40c12SJohn Marino 	0x78, 0xBA, 0x36, 0x04, 0x65, 0x0C, 0x10, 0xBE,
6023ff40c12SJohn Marino 	0x19, 0x48, 0x2F, 0x23, 0x17, 0x1B, 0x67, 0x1D,
6033ff40c12SJohn Marino 	0xF1, 0xCF, 0x3B, 0x96, 0x0C, 0x07, 0x43, 0x01,
6043ff40c12SJohn Marino 	0xCD, 0x93, 0xC1, 0xD1, 0x76, 0x03, 0xD1, 0x47,
6053ff40c12SJohn Marino 	0xDA, 0xE2, 0xAE, 0xF8, 0x37, 0xA6, 0x29, 0x64,
6063ff40c12SJohn Marino 	0xEF, 0x15, 0xE5, 0xFB, 0x4A, 0xAC, 0x0B, 0x8C,
6073ff40c12SJohn Marino 	0x1C, 0xCA, 0xA4, 0xBE, 0x75, 0x4A, 0xB5, 0x72,
6083ff40c12SJohn Marino 	0x8A, 0xE9, 0x13, 0x0C, 0x4C, 0x7D, 0x02, 0x88,
6093ff40c12SJohn Marino 	0x0A, 0xB9, 0x47, 0x2D, 0x45, 0x55, 0x62, 0x16,
6103ff40c12SJohn Marino 	0xD6, 0x99, 0x8B, 0x86, 0x82, 0x28, 0x3D, 0x19,
6113ff40c12SJohn Marino 	0xD4, 0x2A, 0x90, 0xD5, 0xEF, 0x8E, 0x5D, 0x32,
6123ff40c12SJohn Marino 	0x76, 0x7D, 0xC2, 0x82, 0x2C, 0x6D, 0xF7, 0x85,
6133ff40c12SJohn Marino 	0x45, 0x75, 0x38, 0xAB, 0xAE, 0x83, 0x06, 0x3E,
6143ff40c12SJohn Marino 	0xD9, 0xCB, 0x87, 0xC2, 0xD3, 0x70, 0xF2, 0x63,
6153ff40c12SJohn Marino 	0xD5, 0xFA, 0xD7, 0x46, 0x6D, 0x84, 0x99, 0xEB,
6163ff40c12SJohn Marino 	0x8F, 0x46, 0x4A, 0x70, 0x25, 0x12, 0xB0, 0xCE,
6173ff40c12SJohn Marino 	0xE7, 0x71, 0xE9, 0x13, 0x0D, 0x69, 0x77, 0x35,
6183ff40c12SJohn Marino 	0xF8, 0x97, 0xFD, 0x03, 0x6C, 0xC5, 0x04, 0x32,
6193ff40c12SJohn Marino 	0x6C, 0x3B, 0x01, 0x39, 0x9F, 0x64, 0x35, 0x32,
6203ff40c12SJohn Marino 	0x29, 0x0F, 0x95, 0x8C, 0x0B, 0xBD, 0x90, 0x06,
6213ff40c12SJohn Marino 	0x5D, 0xF0, 0x8B, 0xAB, 0xBD, 0x30, 0xAE, 0xB6,
6223ff40c12SJohn Marino 	0x3B, 0x84, 0xC4, 0x60, 0x5D, 0x6C, 0xA3, 0x71,
6233ff40c12SJohn Marino 	0x04, 0x71, 0x27, 0xD0, 0x3A, 0x72, 0xD5, 0x98,
6243ff40c12SJohn Marino 	0xA1, 0xED, 0xAD, 0xFE, 0x70, 0x7E, 0x88, 0x47,
6253ff40c12SJohn Marino 	0x25, 0xC1, 0x68, 0x90, 0x54, 0x90, 0x84, 0x00,
6263ff40c12SJohn Marino 	0x8D, 0x39, 0x1E, 0x09, 0x53, 0xC3, 0xF3, 0x6B,
6273ff40c12SJohn Marino 	0xC4, 0x38, 0xCD, 0x08, 0x5E, 0xDD, 0x2D, 0x93,
6283ff40c12SJohn Marino 	0x4C, 0xE1, 0x93, 0x8C, 0x35, 0x7A, 0x71, 0x1E,
6293ff40c12SJohn Marino 	0x0D, 0x4A, 0x34, 0x1A, 0x5B, 0x0A, 0x85, 0xED,
6303ff40c12SJohn Marino 	0x12, 0xC1, 0xF4, 0xE5, 0x15, 0x6A, 0x26, 0x74,
6313ff40c12SJohn Marino 	0x6D, 0xDD, 0xE1, 0x6D, 0x82, 0x6F, 0x47, 0x7C,
6323ff40c12SJohn Marino 	0x97, 0x47, 0x7E, 0x0A, 0x0F, 0xDF, 0x65, 0x53,
6333ff40c12SJohn Marino 	0x14, 0x3E, 0x2C, 0xA3, 0xA7, 0x35, 0xE0, 0x2E,
6343ff40c12SJohn Marino 	0xCC, 0xD9, 0x4B, 0x27, 0xD0, 0x48, 0x61, 0xD1,
6353ff40c12SJohn Marino 	0x11, 0x9D, 0xD0, 0xC3, 0x28, 0xAD, 0xF3, 0xF6,
6363ff40c12SJohn Marino 	0x8F, 0xB0, 0x94, 0xB8, 0x67, 0x71, 0x6B, 0xD7,
6373ff40c12SJohn Marino 	0xDC, 0x0D, 0xEE, 0xBB, 0x10, 0xB8, 0x24, 0x0E,
6383ff40c12SJohn Marino 	0x68, 0x03, 0x48, 0x93, 0xEA, 0xD8, 0x2D, 0x54,
6393ff40c12SJohn Marino 	0xC9, 0xDA, 0x75, 0x4C, 0x46, 0xC7, 0xEE, 0xE0,
6403ff40c12SJohn Marino 	0xC3, 0x7F, 0xDB, 0xEE, 0x48, 0x53, 0x60, 0x47,
6413ff40c12SJohn Marino 	0xA6, 0xFA, 0x1A, 0xE4, 0x9A, 0x01, 0x42, 0x49,
6423ff40c12SJohn Marino 	0x1B, 0x61, 0xFD, 0x5A, 0x69, 0x3E, 0x38, 0x13,
6433ff40c12SJohn Marino 	0x60, 0xEA, 0x6E, 0x59, 0x30, 0x13, 0x23, 0x6F,
6443ff40c12SJohn Marino 	0x64, 0xBA, 0x8F, 0x3B, 0x1E, 0xDD, 0x1B, 0xDE,
6453ff40c12SJohn Marino 	0xFC, 0x7F, 0xCA, 0x03, 0x56, 0xCF, 0x29, 0x87,
6463ff40c12SJohn Marino 	0x72, 0xED, 0x9C, 0x17, 0xA0, 0x98, 0x00, 0xD7,
6473ff40c12SJohn Marino 	0x58, 0x35, 0x29, 0xF6, 0xC8, 0x13, 0xEC, 0x18,
6483ff40c12SJohn Marino 	0x8B, 0xCB, 0x93, 0xD8, 0x43, 0x2D, 0x44, 0x8C,
6493ff40c12SJohn Marino 	0x6D, 0x1F, 0x6D, 0xF5, 0xE7, 0xCD, 0x8A, 0x76,
6503ff40c12SJohn Marino 	0xA2, 0x67, 0x36, 0x5D, 0x67, 0x6A, 0x5D, 0x8D,
6513ff40c12SJohn Marino 	0xED, 0xBF, 0x8A, 0x23, 0xF3, 0x66, 0x12, 0xA5,
6523ff40c12SJohn Marino 	0x99, 0x90, 0x28, 0xA8, 0x95, 0xEB, 0xD7, 0xA1,
6533ff40c12SJohn Marino 	0x37, 0xDC, 0x7A, 0x00, 0x9B, 0xC6, 0x69, 0x5F,
6543ff40c12SJohn Marino 	0xAC, 0xC1, 0xE5, 0x00, 0xE3, 0x25, 0xC9, 0x76,
6553ff40c12SJohn Marino 	0x78, 0x19, 0x75, 0x0A, 0xE8, 0xB9, 0x0E, 0x81,
6563ff40c12SJohn Marino 	0xFA, 0x41, 0x6B, 0xE7, 0x37, 0x3A, 0x7F, 0x7B,
6573ff40c12SJohn Marino 	0x6A, 0xAF, 0x38, 0x17, 0xA3, 0x4C, 0x06, 0x41,
6583ff40c12SJohn Marino 	0x5A, 0xD4, 0x20, 0x18, 0xC8, 0x05, 0x8E, 0x4F,
6593ff40c12SJohn Marino 	0x2C, 0xF3, 0xE4, 0xBF, 0xDF, 0x63, 0xF4, 0x79,
6603ff40c12SJohn Marino 	0x91, 0xD4, 0xBD, 0x3F, 0x1B, 0x66, 0x44, 0x5F,
6613ff40c12SJohn Marino 	0x07, 0x8E, 0xA2, 0xDB, 0xFF, 0xAC, 0x2D, 0x62,
6623ff40c12SJohn Marino 	0xA5, 0xEA, 0x03, 0xD9, 0x15, 0xA0, 0xAA, 0x55,
6633ff40c12SJohn Marino 	0x66, 0x47, 0xB6, 0xBF, 0x5F, 0xA4, 0x70, 0xEC,
6643ff40c12SJohn Marino 	0x0A, 0x66, 0x2F, 0x69, 0x07, 0xC0, 0x1B, 0xF0,
6653ff40c12SJohn Marino 	0x53, 0xCB, 0x8A, 0xF7, 0x79, 0x4D, 0xF1, 0x94,
6663ff40c12SJohn Marino 	0x03, 0x50, 0xEA, 0xC5, 0xDB, 0xE2, 0xED, 0x3B,
6673ff40c12SJohn Marino 	0x7A, 0xA8, 0x55, 0x1E, 0xC5, 0x0F, 0xDF, 0xF8,
6683ff40c12SJohn Marino 	0x75, 0x8C, 0xE6, 0x58, 0xD1, 0x89, 0xEA, 0xAE,
6693ff40c12SJohn Marino 	0x6D, 0x2B, 0x64, 0xF6, 0x17, 0x79, 0x4B, 0x19,
6703ff40c12SJohn Marino 	0x1C, 0x3F, 0xF4, 0x6B, 0xB7, 0x1E, 0x02, 0x34,
6713ff40c12SJohn Marino 	0x02, 0x1F, 0x47, 0xB3, 0x1F, 0xA4, 0x30, 0x77,
6723ff40c12SJohn Marino 	0x09, 0x5F, 0x96, 0xAD, 0x85, 0xBA, 0x3A, 0x6B,
6733ff40c12SJohn Marino 	0x73, 0x4A, 0x7C, 0x8F, 0x36, 0xE6, 0x20, 0x12,
6743ff40c12SJohn Marino 	0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
6753ff40c12SJohn Marino };
6766d49e1aeSJan Lentfer 
6776d49e1aeSJan Lentfer /* RFC 3526, 7. Group 18 - 8192 Bit MODP
6786d49e1aeSJan Lentfer  * Generator: 2
6796d49e1aeSJan Lentfer  * Prime: 2^8192 - 2^8128 - 1 + 2^64 * { [2^8062 pi] + 4743158 }
6806d49e1aeSJan Lentfer  */
6816d49e1aeSJan Lentfer static const u8 dh_group18_generator[1] = { 0x02 };
6826d49e1aeSJan Lentfer static const u8 dh_group18_prime[1024] = {
6836d49e1aeSJan Lentfer 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
6846d49e1aeSJan Lentfer 	0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34,
6856d49e1aeSJan Lentfer 	0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1,
6866d49e1aeSJan Lentfer 	0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74,
6876d49e1aeSJan Lentfer 	0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22,
6886d49e1aeSJan Lentfer 	0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD,
6896d49e1aeSJan Lentfer 	0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B,
6906d49e1aeSJan Lentfer 	0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37,
6916d49e1aeSJan Lentfer 	0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45,
6926d49e1aeSJan Lentfer 	0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6,
6936d49e1aeSJan Lentfer 	0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B,
6946d49e1aeSJan Lentfer 	0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED,
6956d49e1aeSJan Lentfer 	0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5,
6966d49e1aeSJan Lentfer 	0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6,
6976d49e1aeSJan Lentfer 	0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D,
6986d49e1aeSJan Lentfer 	0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05,
6996d49e1aeSJan Lentfer 	0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A,
7006d49e1aeSJan Lentfer 	0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F,
7016d49e1aeSJan Lentfer 	0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96,
7026d49e1aeSJan Lentfer 	0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB,
7036d49e1aeSJan Lentfer 	0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D,
7046d49e1aeSJan Lentfer 	0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04,
7056d49e1aeSJan Lentfer 	0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C,
7066d49e1aeSJan Lentfer 	0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B,
7076d49e1aeSJan Lentfer 	0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03,
7086d49e1aeSJan Lentfer 	0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F,
7096d49e1aeSJan Lentfer 	0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9,
7106d49e1aeSJan Lentfer 	0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18,
7116d49e1aeSJan Lentfer 	0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5,
7126d49e1aeSJan Lentfer 	0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10,
7136d49e1aeSJan Lentfer 	0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D,
7146d49e1aeSJan Lentfer 	0xAD, 0x33, 0x17, 0x0D, 0x04, 0x50, 0x7A, 0x33,
7156d49e1aeSJan Lentfer 	0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64,
7166d49e1aeSJan Lentfer 	0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A,
7176d49e1aeSJan Lentfer 	0x8A, 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D,
7186d49e1aeSJan Lentfer 	0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7,
7196d49e1aeSJan Lentfer 	0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7,
7206d49e1aeSJan Lentfer 	0x1E, 0x8C, 0x94, 0xE0, 0x4A, 0x25, 0x61, 0x9D,
7216d49e1aeSJan Lentfer 	0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B,
7226d49e1aeSJan Lentfer 	0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64,
7236d49e1aeSJan Lentfer 	0xD8, 0x76, 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64,
7246d49e1aeSJan Lentfer 	0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C,
7256d49e1aeSJan Lentfer 	0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C,
7266d49e1aeSJan Lentfer 	0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, 0x46, 0xE2,
7276d49e1aeSJan Lentfer 	0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31,
7286d49e1aeSJan Lentfer 	0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E,
7296d49e1aeSJan Lentfer 	0x4B, 0x82, 0xD1, 0x20, 0xA9, 0x21, 0x08, 0x01,
7306d49e1aeSJan Lentfer 	0x1A, 0x72, 0x3C, 0x12, 0xA7, 0x87, 0xE6, 0xD7,
7316d49e1aeSJan Lentfer 	0x88, 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26,
7326d49e1aeSJan Lentfer 	0x99, 0xC3, 0x27, 0x18, 0x6A, 0xF4, 0xE2, 0x3C,
7336d49e1aeSJan Lentfer 	0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, 0x0B, 0xDA,
7346d49e1aeSJan Lentfer 	0x25, 0x83, 0xE9, 0xCA, 0x2A, 0xD4, 0x4C, 0xE8,
7356d49e1aeSJan Lentfer 	0xDB, 0xBB, 0xC2, 0xDB, 0x04, 0xDE, 0x8E, 0xF9,
7366d49e1aeSJan Lentfer 	0x2E, 0x8E, 0xFC, 0x14, 0x1F, 0xBE, 0xCA, 0xA6,
7376d49e1aeSJan Lentfer 	0x28, 0x7C, 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D,
7386d49e1aeSJan Lentfer 	0x99, 0xB2, 0x96, 0x4F, 0xA0, 0x90, 0xC3, 0xA2,
7396d49e1aeSJan Lentfer 	0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, 0xED,
7406d49e1aeSJan Lentfer 	0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, 0xD7, 0xAF,
7416d49e1aeSJan Lentfer 	0xB8, 0x1B, 0xDD, 0x76, 0x21, 0x70, 0x48, 0x1C,
7426d49e1aeSJan Lentfer 	0xD0, 0x06, 0x91, 0x27, 0xD5, 0xB0, 0x5A, 0xA9,
7436d49e1aeSJan Lentfer 	0x93, 0xB4, 0xEA, 0x98, 0x8D, 0x8F, 0xDD, 0xC1,
7446d49e1aeSJan Lentfer 	0x86, 0xFF, 0xB7, 0xDC, 0x90, 0xA6, 0xC0, 0x8F,
7456d49e1aeSJan Lentfer 	0x4D, 0xF4, 0x35, 0xC9, 0x34, 0x02, 0x84, 0x92,
7466d49e1aeSJan Lentfer 	0x36, 0xC3, 0xFA, 0xB4, 0xD2, 0x7C, 0x70, 0x26,
7476d49e1aeSJan Lentfer 	0xC1, 0xD4, 0xDC, 0xB2, 0x60, 0x26, 0x46, 0xDE,
7486d49e1aeSJan Lentfer 	0xC9, 0x75, 0x1E, 0x76, 0x3D, 0xBA, 0x37, 0xBD,
7496d49e1aeSJan Lentfer 	0xF8, 0xFF, 0x94, 0x06, 0xAD, 0x9E, 0x53, 0x0E,
7506d49e1aeSJan Lentfer 	0xE5, 0xDB, 0x38, 0x2F, 0x41, 0x30, 0x01, 0xAE,
7516d49e1aeSJan Lentfer 	0xB0, 0x6A, 0x53, 0xED, 0x90, 0x27, 0xD8, 0x31,
7526d49e1aeSJan Lentfer 	0x17, 0x97, 0x27, 0xB0, 0x86, 0x5A, 0x89, 0x18,
7536d49e1aeSJan Lentfer 	0xDA, 0x3E, 0xDB, 0xEB, 0xCF, 0x9B, 0x14, 0xED,
7546d49e1aeSJan Lentfer 	0x44, 0xCE, 0x6C, 0xBA, 0xCE, 0xD4, 0xBB, 0x1B,
7556d49e1aeSJan Lentfer 	0xDB, 0x7F, 0x14, 0x47, 0xE6, 0xCC, 0x25, 0x4B,
7566d49e1aeSJan Lentfer 	0x33, 0x20, 0x51, 0x51, 0x2B, 0xD7, 0xAF, 0x42,
7576d49e1aeSJan Lentfer 	0x6F, 0xB8, 0xF4, 0x01, 0x37, 0x8C, 0xD2, 0xBF,
7586d49e1aeSJan Lentfer 	0x59, 0x83, 0xCA, 0x01, 0xC6, 0x4B, 0x92, 0xEC,
7596d49e1aeSJan Lentfer 	0xF0, 0x32, 0xEA, 0x15, 0xD1, 0x72, 0x1D, 0x03,
7606d49e1aeSJan Lentfer 	0xF4, 0x82, 0xD7, 0xCE, 0x6E, 0x74, 0xFE, 0xF6,
7616d49e1aeSJan Lentfer 	0xD5, 0x5E, 0x70, 0x2F, 0x46, 0x98, 0x0C, 0x82,
7626d49e1aeSJan Lentfer 	0xB5, 0xA8, 0x40, 0x31, 0x90, 0x0B, 0x1C, 0x9E,
7636d49e1aeSJan Lentfer 	0x59, 0xE7, 0xC9, 0x7F, 0xBE, 0xC7, 0xE8, 0xF3,
7646d49e1aeSJan Lentfer 	0x23, 0xA9, 0x7A, 0x7E, 0x36, 0xCC, 0x88, 0xBE,
7656d49e1aeSJan Lentfer 	0x0F, 0x1D, 0x45, 0xB7, 0xFF, 0x58, 0x5A, 0xC5,
7666d49e1aeSJan Lentfer 	0x4B, 0xD4, 0x07, 0xB2, 0x2B, 0x41, 0x54, 0xAA,
7676d49e1aeSJan Lentfer 	0xCC, 0x8F, 0x6D, 0x7E, 0xBF, 0x48, 0xE1, 0xD8,
7686d49e1aeSJan Lentfer 	0x14, 0xCC, 0x5E, 0xD2, 0x0F, 0x80, 0x37, 0xE0,
7696d49e1aeSJan Lentfer 	0xA7, 0x97, 0x15, 0xEE, 0xF2, 0x9B, 0xE3, 0x28,
7706d49e1aeSJan Lentfer 	0x06, 0xA1, 0xD5, 0x8B, 0xB7, 0xC5, 0xDA, 0x76,
7716d49e1aeSJan Lentfer 	0xF5, 0x50, 0xAA, 0x3D, 0x8A, 0x1F, 0xBF, 0xF0,
7726d49e1aeSJan Lentfer 	0xEB, 0x19, 0xCC, 0xB1, 0xA3, 0x13, 0xD5, 0x5C,
7736d49e1aeSJan Lentfer 	0xDA, 0x56, 0xC9, 0xEC, 0x2E, 0xF2, 0x96, 0x32,
7746d49e1aeSJan Lentfer 	0x38, 0x7F, 0xE8, 0xD7, 0x6E, 0x3C, 0x04, 0x68,
7756d49e1aeSJan Lentfer 	0x04, 0x3E, 0x8F, 0x66, 0x3F, 0x48, 0x60, 0xEE,
7766d49e1aeSJan Lentfer 	0x12, 0xBF, 0x2D, 0x5B, 0x0B, 0x74, 0x74, 0xD6,
7776d49e1aeSJan Lentfer 	0xE6, 0x94, 0xF9, 0x1E, 0x6D, 0xBE, 0x11, 0x59,
7786d49e1aeSJan Lentfer 	0x74, 0xA3, 0x92, 0x6F, 0x12, 0xFE, 0xE5, 0xE4,
7796d49e1aeSJan Lentfer 	0x38, 0x77, 0x7C, 0xB6, 0xA9, 0x32, 0xDF, 0x8C,
7806d49e1aeSJan Lentfer 	0xD8, 0xBE, 0xC4, 0xD0, 0x73, 0xB9, 0x31, 0xBA,
7816d49e1aeSJan Lentfer 	0x3B, 0xC8, 0x32, 0xB6, 0x8D, 0x9D, 0xD3, 0x00,
7826d49e1aeSJan Lentfer 	0x74, 0x1F, 0xA7, 0xBF, 0x8A, 0xFC, 0x47, 0xED,
7836d49e1aeSJan Lentfer 	0x25, 0x76, 0xF6, 0x93, 0x6B, 0xA4, 0x24, 0x66,
7846d49e1aeSJan Lentfer 	0x3A, 0xAB, 0x63, 0x9C, 0x5A, 0xE4, 0xF5, 0x68,
7856d49e1aeSJan Lentfer 	0x34, 0x23, 0xB4, 0x74, 0x2B, 0xF1, 0xC9, 0x78,
7866d49e1aeSJan Lentfer 	0x23, 0x8F, 0x16, 0xCB, 0xE3, 0x9D, 0x65, 0x2D,
7876d49e1aeSJan Lentfer 	0xE3, 0xFD, 0xB8, 0xBE, 0xFC, 0x84, 0x8A, 0xD9,
7886d49e1aeSJan Lentfer 	0x22, 0x22, 0x2E, 0x04, 0xA4, 0x03, 0x7C, 0x07,
7896d49e1aeSJan Lentfer 	0x13, 0xEB, 0x57, 0xA8, 0x1A, 0x23, 0xF0, 0xC7,
7906d49e1aeSJan Lentfer 	0x34, 0x73, 0xFC, 0x64, 0x6C, 0xEA, 0x30, 0x6B,
7916d49e1aeSJan Lentfer 	0x4B, 0xCB, 0xC8, 0x86, 0x2F, 0x83, 0x85, 0xDD,
7926d49e1aeSJan Lentfer 	0xFA, 0x9D, 0x4B, 0x7F, 0xA2, 0xC0, 0x87, 0xE8,
7936d49e1aeSJan Lentfer 	0x79, 0x68, 0x33, 0x03, 0xED, 0x5B, 0xDD, 0x3A,
7946d49e1aeSJan Lentfer 	0x06, 0x2B, 0x3C, 0xF5, 0xB3, 0xA2, 0x78, 0xA6,
7956d49e1aeSJan Lentfer 	0x6D, 0x2A, 0x13, 0xF8, 0x3F, 0x44, 0xF8, 0x2D,
7966d49e1aeSJan Lentfer 	0xDF, 0x31, 0x0E, 0xE0, 0x74, 0xAB, 0x6A, 0x36,
7976d49e1aeSJan Lentfer 	0x45, 0x97, 0xE8, 0x99, 0xA0, 0x25, 0x5D, 0xC1,
7986d49e1aeSJan Lentfer 	0x64, 0xF3, 0x1C, 0xC5, 0x08, 0x46, 0x85, 0x1D,
7996d49e1aeSJan Lentfer 	0xF9, 0xAB, 0x48, 0x19, 0x5D, 0xED, 0x7E, 0xA1,
8006d49e1aeSJan Lentfer 	0xB1, 0xD5, 0x10, 0xBD, 0x7E, 0xE7, 0x4D, 0x73,
8016d49e1aeSJan Lentfer 	0xFA, 0xF3, 0x6B, 0xC3, 0x1E, 0xCF, 0xA2, 0x68,
8026d49e1aeSJan Lentfer 	0x35, 0x90, 0x46, 0xF4, 0xEB, 0x87, 0x9F, 0x92,
8036d49e1aeSJan Lentfer 	0x40, 0x09, 0x43, 0x8B, 0x48, 0x1C, 0x6C, 0xD7,
8046d49e1aeSJan Lentfer 	0x88, 0x9A, 0x00, 0x2E, 0xD5, 0xEE, 0x38, 0x2B,
8056d49e1aeSJan Lentfer 	0xC9, 0x19, 0x0D, 0xA6, 0xFC, 0x02, 0x6E, 0x47,
8066d49e1aeSJan Lentfer 	0x95, 0x58, 0xE4, 0x47, 0x56, 0x77, 0xE9, 0xAA,
8076d49e1aeSJan Lentfer 	0x9E, 0x30, 0x50, 0xE2, 0x76, 0x56, 0x94, 0xDF,
8086d49e1aeSJan Lentfer 	0xC8, 0x1F, 0x56, 0xE8, 0x80, 0xB9, 0x6E, 0x71,
8096d49e1aeSJan Lentfer 	0x60, 0xC9, 0x80, 0xDD, 0x98, 0xED, 0xD3, 0xDF,
8106d49e1aeSJan Lentfer 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
8116d49e1aeSJan Lentfer };
8123ff40c12SJohn Marino static const u8 dh_group18_order[1024] = {
8133ff40c12SJohn Marino 	0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
8143ff40c12SJohn Marino 	0xE4, 0x87, 0xED, 0x51, 0x10, 0xB4, 0x61, 0x1A,
8153ff40c12SJohn Marino 	0x62, 0x63, 0x31, 0x45, 0xC0, 0x6E, 0x0E, 0x68,
8163ff40c12SJohn Marino 	0x94, 0x81, 0x27, 0x04, 0x45, 0x33, 0xE6, 0x3A,
8173ff40c12SJohn Marino 	0x01, 0x05, 0xDF, 0x53, 0x1D, 0x89, 0xCD, 0x91,
8183ff40c12SJohn Marino 	0x28, 0xA5, 0x04, 0x3C, 0xC7, 0x1A, 0x02, 0x6E,
8193ff40c12SJohn Marino 	0xF7, 0xCA, 0x8C, 0xD9, 0xE6, 0x9D, 0x21, 0x8D,
8203ff40c12SJohn Marino 	0x98, 0x15, 0x85, 0x36, 0xF9, 0x2F, 0x8A, 0x1B,
8213ff40c12SJohn Marino 	0xA7, 0xF0, 0x9A, 0xB6, 0xB6, 0xA8, 0xE1, 0x22,
8223ff40c12SJohn Marino 	0xF2, 0x42, 0xDA, 0xBB, 0x31, 0x2F, 0x3F, 0x63,
8233ff40c12SJohn Marino 	0x7A, 0x26, 0x21, 0x74, 0xD3, 0x1B, 0xF6, 0xB5,
8243ff40c12SJohn Marino 	0x85, 0xFF, 0xAE, 0x5B, 0x7A, 0x03, 0x5B, 0xF6,
8253ff40c12SJohn Marino 	0xF7, 0x1C, 0x35, 0xFD, 0xAD, 0x44, 0xCF, 0xD2,
8263ff40c12SJohn Marino 	0xD7, 0x4F, 0x92, 0x08, 0xBE, 0x25, 0x8F, 0xF3,
8273ff40c12SJohn Marino 	0x24, 0x94, 0x33, 0x28, 0xF6, 0x72, 0x2D, 0x9E,
8283ff40c12SJohn Marino 	0xE1, 0x00, 0x3E, 0x5C, 0x50, 0xB1, 0xDF, 0x82,
8293ff40c12SJohn Marino 	0xCC, 0x6D, 0x24, 0x1B, 0x0E, 0x2A, 0xE9, 0xCD,
8303ff40c12SJohn Marino 	0x34, 0x8B, 0x1F, 0xD4, 0x7E, 0x92, 0x67, 0xAF,
8313ff40c12SJohn Marino 	0xC1, 0xB2, 0xAE, 0x91, 0xEE, 0x51, 0xD6, 0xCB,
8323ff40c12SJohn Marino 	0x0E, 0x31, 0x79, 0xAB, 0x10, 0x42, 0xA9, 0x5D,
8333ff40c12SJohn Marino 	0xCF, 0x6A, 0x94, 0x83, 0xB8, 0x4B, 0x4B, 0x36,
8343ff40c12SJohn Marino 	0xB3, 0x86, 0x1A, 0xA7, 0x25, 0x5E, 0x4C, 0x02,
8353ff40c12SJohn Marino 	0x78, 0xBA, 0x36, 0x04, 0x65, 0x0C, 0x10, 0xBE,
8363ff40c12SJohn Marino 	0x19, 0x48, 0x2F, 0x23, 0x17, 0x1B, 0x67, 0x1D,
8373ff40c12SJohn Marino 	0xF1, 0xCF, 0x3B, 0x96, 0x0C, 0x07, 0x43, 0x01,
8383ff40c12SJohn Marino 	0xCD, 0x93, 0xC1, 0xD1, 0x76, 0x03, 0xD1, 0x47,
8393ff40c12SJohn Marino 	0xDA, 0xE2, 0xAE, 0xF8, 0x37, 0xA6, 0x29, 0x64,
8403ff40c12SJohn Marino 	0xEF, 0x15, 0xE5, 0xFB, 0x4A, 0xAC, 0x0B, 0x8C,
8413ff40c12SJohn Marino 	0x1C, 0xCA, 0xA4, 0xBE, 0x75, 0x4A, 0xB5, 0x72,
8423ff40c12SJohn Marino 	0x8A, 0xE9, 0x13, 0x0C, 0x4C, 0x7D, 0x02, 0x88,
8433ff40c12SJohn Marino 	0x0A, 0xB9, 0x47, 0x2D, 0x45, 0x55, 0x62, 0x16,
8443ff40c12SJohn Marino 	0xD6, 0x99, 0x8B, 0x86, 0x82, 0x28, 0x3D, 0x19,
8453ff40c12SJohn Marino 	0xD4, 0x2A, 0x90, 0xD5, 0xEF, 0x8E, 0x5D, 0x32,
8463ff40c12SJohn Marino 	0x76, 0x7D, 0xC2, 0x82, 0x2C, 0x6D, 0xF7, 0x85,
8473ff40c12SJohn Marino 	0x45, 0x75, 0x38, 0xAB, 0xAE, 0x83, 0x06, 0x3E,
8483ff40c12SJohn Marino 	0xD9, 0xCB, 0x87, 0xC2, 0xD3, 0x70, 0xF2, 0x63,
8493ff40c12SJohn Marino 	0xD5, 0xFA, 0xD7, 0x46, 0x6D, 0x84, 0x99, 0xEB,
8503ff40c12SJohn Marino 	0x8F, 0x46, 0x4A, 0x70, 0x25, 0x12, 0xB0, 0xCE,
8513ff40c12SJohn Marino 	0xE7, 0x71, 0xE9, 0x13, 0x0D, 0x69, 0x77, 0x35,
8523ff40c12SJohn Marino 	0xF8, 0x97, 0xFD, 0x03, 0x6C, 0xC5, 0x04, 0x32,
8533ff40c12SJohn Marino 	0x6C, 0x3B, 0x01, 0x39, 0x9F, 0x64, 0x35, 0x32,
8543ff40c12SJohn Marino 	0x29, 0x0F, 0x95, 0x8C, 0x0B, 0xBD, 0x90, 0x06,
8553ff40c12SJohn Marino 	0x5D, 0xF0, 0x8B, 0xAB, 0xBD, 0x30, 0xAE, 0xB6,
8563ff40c12SJohn Marino 	0x3B, 0x84, 0xC4, 0x60, 0x5D, 0x6C, 0xA3, 0x71,
8573ff40c12SJohn Marino 	0x04, 0x71, 0x27, 0xD0, 0x3A, 0x72, 0xD5, 0x98,
8583ff40c12SJohn Marino 	0xA1, 0xED, 0xAD, 0xFE, 0x70, 0x7E, 0x88, 0x47,
8593ff40c12SJohn Marino 	0x25, 0xC1, 0x68, 0x90, 0x54, 0x90, 0x84, 0x00,
8603ff40c12SJohn Marino 	0x8D, 0x39, 0x1E, 0x09, 0x53, 0xC3, 0xF3, 0x6B,
8613ff40c12SJohn Marino 	0xC4, 0x38, 0xCD, 0x08, 0x5E, 0xDD, 0x2D, 0x93,
8623ff40c12SJohn Marino 	0x4C, 0xE1, 0x93, 0x8C, 0x35, 0x7A, 0x71, 0x1E,
8633ff40c12SJohn Marino 	0x0D, 0x4A, 0x34, 0x1A, 0x5B, 0x0A, 0x85, 0xED,
8643ff40c12SJohn Marino 	0x12, 0xC1, 0xF4, 0xE5, 0x15, 0x6A, 0x26, 0x74,
8653ff40c12SJohn Marino 	0x6D, 0xDD, 0xE1, 0x6D, 0x82, 0x6F, 0x47, 0x7C,
8663ff40c12SJohn Marino 	0x97, 0x47, 0x7E, 0x0A, 0x0F, 0xDF, 0x65, 0x53,
8673ff40c12SJohn Marino 	0x14, 0x3E, 0x2C, 0xA3, 0xA7, 0x35, 0xE0, 0x2E,
8683ff40c12SJohn Marino 	0xCC, 0xD9, 0x4B, 0x27, 0xD0, 0x48, 0x61, 0xD1,
8693ff40c12SJohn Marino 	0x11, 0x9D, 0xD0, 0xC3, 0x28, 0xAD, 0xF3, 0xF6,
8703ff40c12SJohn Marino 	0x8F, 0xB0, 0x94, 0xB8, 0x67, 0x71, 0x6B, 0xD7,
8713ff40c12SJohn Marino 	0xDC, 0x0D, 0xEE, 0xBB, 0x10, 0xB8, 0x24, 0x0E,
8723ff40c12SJohn Marino 	0x68, 0x03, 0x48, 0x93, 0xEA, 0xD8, 0x2D, 0x54,
8733ff40c12SJohn Marino 	0xC9, 0xDA, 0x75, 0x4C, 0x46, 0xC7, 0xEE, 0xE0,
8743ff40c12SJohn Marino 	0xC3, 0x7F, 0xDB, 0xEE, 0x48, 0x53, 0x60, 0x47,
8753ff40c12SJohn Marino 	0xA6, 0xFA, 0x1A, 0xE4, 0x9A, 0x01, 0x42, 0x49,
8763ff40c12SJohn Marino 	0x1B, 0x61, 0xFD, 0x5A, 0x69, 0x3E, 0x38, 0x13,
8773ff40c12SJohn Marino 	0x60, 0xEA, 0x6E, 0x59, 0x30, 0x13, 0x23, 0x6F,
8783ff40c12SJohn Marino 	0x64, 0xBA, 0x8F, 0x3B, 0x1E, 0xDD, 0x1B, 0xDE,
8793ff40c12SJohn Marino 	0xFC, 0x7F, 0xCA, 0x03, 0x56, 0xCF, 0x29, 0x87,
8803ff40c12SJohn Marino 	0x72, 0xED, 0x9C, 0x17, 0xA0, 0x98, 0x00, 0xD7,
8813ff40c12SJohn Marino 	0x58, 0x35, 0x29, 0xF6, 0xC8, 0x13, 0xEC, 0x18,
8823ff40c12SJohn Marino 	0x8B, 0xCB, 0x93, 0xD8, 0x43, 0x2D, 0x44, 0x8C,
8833ff40c12SJohn Marino 	0x6D, 0x1F, 0x6D, 0xF5, 0xE7, 0xCD, 0x8A, 0x76,
8843ff40c12SJohn Marino 	0xA2, 0x67, 0x36, 0x5D, 0x67, 0x6A, 0x5D, 0x8D,
8853ff40c12SJohn Marino 	0xED, 0xBF, 0x8A, 0x23, 0xF3, 0x66, 0x12, 0xA5,
8863ff40c12SJohn Marino 	0x99, 0x90, 0x28, 0xA8, 0x95, 0xEB, 0xD7, 0xA1,
8873ff40c12SJohn Marino 	0x37, 0xDC, 0x7A, 0x00, 0x9B, 0xC6, 0x69, 0x5F,
8883ff40c12SJohn Marino 	0xAC, 0xC1, 0xE5, 0x00, 0xE3, 0x25, 0xC9, 0x76,
8893ff40c12SJohn Marino 	0x78, 0x19, 0x75, 0x0A, 0xE8, 0xB9, 0x0E, 0x81,
8903ff40c12SJohn Marino 	0xFA, 0x41, 0x6B, 0xE7, 0x37, 0x3A, 0x7F, 0x7B,
8913ff40c12SJohn Marino 	0x6A, 0xAF, 0x38, 0x17, 0xA3, 0x4C, 0x06, 0x41,
8923ff40c12SJohn Marino 	0x5A, 0xD4, 0x20, 0x18, 0xC8, 0x05, 0x8E, 0x4F,
8933ff40c12SJohn Marino 	0x2C, 0xF3, 0xE4, 0xBF, 0xDF, 0x63, 0xF4, 0x79,
8943ff40c12SJohn Marino 	0x91, 0xD4, 0xBD, 0x3F, 0x1B, 0x66, 0x44, 0x5F,
8953ff40c12SJohn Marino 	0x07, 0x8E, 0xA2, 0xDB, 0xFF, 0xAC, 0x2D, 0x62,
8963ff40c12SJohn Marino 	0xA5, 0xEA, 0x03, 0xD9, 0x15, 0xA0, 0xAA, 0x55,
8973ff40c12SJohn Marino 	0x66, 0x47, 0xB6, 0xBF, 0x5F, 0xA4, 0x70, 0xEC,
8983ff40c12SJohn Marino 	0x0A, 0x66, 0x2F, 0x69, 0x07, 0xC0, 0x1B, 0xF0,
8993ff40c12SJohn Marino 	0x53, 0xCB, 0x8A, 0xF7, 0x79, 0x4D, 0xF1, 0x94,
9003ff40c12SJohn Marino 	0x03, 0x50, 0xEA, 0xC5, 0xDB, 0xE2, 0xED, 0x3B,
9013ff40c12SJohn Marino 	0x7A, 0xA8, 0x55, 0x1E, 0xC5, 0x0F, 0xDF, 0xF8,
9023ff40c12SJohn Marino 	0x75, 0x8C, 0xE6, 0x58, 0xD1, 0x89, 0xEA, 0xAE,
9033ff40c12SJohn Marino 	0x6D, 0x2B, 0x64, 0xF6, 0x17, 0x79, 0x4B, 0x19,
9043ff40c12SJohn Marino 	0x1C, 0x3F, 0xF4, 0x6B, 0xB7, 0x1E, 0x02, 0x34,
9053ff40c12SJohn Marino 	0x02, 0x1F, 0x47, 0xB3, 0x1F, 0xA4, 0x30, 0x77,
9063ff40c12SJohn Marino 	0x09, 0x5F, 0x96, 0xAD, 0x85, 0xBA, 0x3A, 0x6B,
9073ff40c12SJohn Marino 	0x73, 0x4A, 0x7C, 0x8F, 0x36, 0xDF, 0x08, 0xAC,
9083ff40c12SJohn Marino 	0xBA, 0x51, 0xC9, 0x37, 0x89, 0x7F, 0x72, 0xF2,
9093ff40c12SJohn Marino 	0x1C, 0x3B, 0xBE, 0x5B, 0x54, 0x99, 0x6F, 0xC6,
9103ff40c12SJohn Marino 	0x6C, 0x5F, 0x62, 0x68, 0x39, 0xDC, 0x98, 0xDD,
9113ff40c12SJohn Marino 	0x1D, 0xE4, 0x19, 0x5B, 0x46, 0xCE, 0xE9, 0x80,
9123ff40c12SJohn Marino 	0x3A, 0x0F, 0xD3, 0xDF, 0xC5, 0x7E, 0x23, 0xF6,
9133ff40c12SJohn Marino 	0x92, 0xBB, 0x7B, 0x49, 0xB5, 0xD2, 0x12, 0x33,
9143ff40c12SJohn Marino 	0x1D, 0x55, 0xB1, 0xCE, 0x2D, 0x72, 0x7A, 0xB4,
9153ff40c12SJohn Marino 	0x1A, 0x11, 0xDA, 0x3A, 0x15, 0xF8, 0xE4, 0xBC,
9163ff40c12SJohn Marino 	0x11, 0xC7, 0x8B, 0x65, 0xF1, 0xCE, 0xB2, 0x96,
9173ff40c12SJohn Marino 	0xF1, 0xFE, 0xDC, 0x5F, 0x7E, 0x42, 0x45, 0x6C,
9183ff40c12SJohn Marino 	0x91, 0x11, 0x17, 0x02, 0x52, 0x01, 0xBE, 0x03,
9193ff40c12SJohn Marino 	0x89, 0xF5, 0xAB, 0xD4, 0x0D, 0x11, 0xF8, 0x63,
9203ff40c12SJohn Marino 	0x9A, 0x39, 0xFE, 0x32, 0x36, 0x75, 0x18, 0x35,
9213ff40c12SJohn Marino 	0xA5, 0xE5, 0xE4, 0x43, 0x17, 0xC1, 0xC2, 0xEE,
9223ff40c12SJohn Marino 	0xFD, 0x4E, 0xA5, 0xBF, 0xD1, 0x60, 0x43, 0xF4,
9233ff40c12SJohn Marino 	0x3C, 0xB4, 0x19, 0x81, 0xF6, 0xAD, 0xEE, 0x9D,
9243ff40c12SJohn Marino 	0x03, 0x15, 0x9E, 0x7A, 0xD9, 0xD1, 0x3C, 0x53,
9253ff40c12SJohn Marino 	0x36, 0x95, 0x09, 0xFC, 0x1F, 0xA2, 0x7C, 0x16,
9263ff40c12SJohn Marino 	0xEF, 0x98, 0x87, 0x70, 0x3A, 0x55, 0xB5, 0x1B,
9273ff40c12SJohn Marino 	0x22, 0xCB, 0xF4, 0x4C, 0xD0, 0x12, 0xAE, 0xE0,
9283ff40c12SJohn Marino 	0xB2, 0x79, 0x8E, 0x62, 0x84, 0x23, 0x42, 0x8E,
9293ff40c12SJohn Marino 	0xFC, 0xD5, 0xA4, 0x0C, 0xAE, 0xF6, 0xBF, 0x50,
9303ff40c12SJohn Marino 	0xD8, 0xEA, 0x88, 0x5E, 0xBF, 0x73, 0xA6, 0xB9,
9313ff40c12SJohn Marino 	0xFD, 0x79, 0xB5, 0xE1, 0x8F, 0x67, 0xD1, 0x34,
9323ff40c12SJohn Marino 	0x1A, 0xC8, 0x23, 0x7A, 0x75, 0xC3, 0xCF, 0xC9,
9333ff40c12SJohn Marino 	0x20, 0x04, 0xA1, 0xC5, 0xA4, 0x0E, 0x36, 0x6B,
9343ff40c12SJohn Marino 	0xC4, 0x4D, 0x00, 0x17, 0x6A, 0xF7, 0x1C, 0x15,
9353ff40c12SJohn Marino 	0xE4, 0x8C, 0x86, 0xD3, 0x7E, 0x01, 0x37, 0x23,
9363ff40c12SJohn Marino 	0xCA, 0xAC, 0x72, 0x23, 0xAB, 0x3B, 0xF4, 0xD5,
9373ff40c12SJohn Marino 	0x4F, 0x18, 0x28, 0x71, 0x3B, 0x2B, 0x4A, 0x6F,
9383ff40c12SJohn Marino 	0xE4, 0x0F, 0xAB, 0x74, 0x40, 0x5C, 0xB7, 0x38,
9393ff40c12SJohn Marino 	0xB0, 0x64, 0xC0, 0x6E, 0xCC, 0x76, 0xE9, 0xEF,
9403ff40c12SJohn Marino 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
9413ff40c12SJohn Marino };
9423ff40c12SJohn Marino 
9433ff40c12SJohn Marino /*
9443ff40c12SJohn Marino  * RFC 5114, 2.1.
9453ff40c12SJohn Marino  * Group 22 - 1024-bit MODP Group with 160-bit Prime Order Subgroup
9463ff40c12SJohn Marino  */
9473ff40c12SJohn Marino static const u8 dh_group22_generator[] = {
9483ff40c12SJohn Marino 	0xA4, 0xD1, 0xCB, 0xD5, 0xC3, 0xFD, 0x34, 0x12,
9493ff40c12SJohn Marino 	0x67, 0x65, 0xA4, 0x42, 0xEF, 0xB9, 0x99, 0x05,
9503ff40c12SJohn Marino 	0xF8, 0x10, 0x4D, 0xD2, 0x58, 0xAC, 0x50, 0x7F,
9513ff40c12SJohn Marino 	0xD6, 0x40, 0x6C, 0xFF, 0x14, 0x26, 0x6D, 0x31,
9523ff40c12SJohn Marino 	0x26, 0x6F, 0xEA, 0x1E, 0x5C, 0x41, 0x56, 0x4B,
9533ff40c12SJohn Marino 	0x77, 0x7E, 0x69, 0x0F, 0x55, 0x04, 0xF2, 0x13,
9543ff40c12SJohn Marino 	0x16, 0x02, 0x17, 0xB4, 0xB0, 0x1B, 0x88, 0x6A,
9553ff40c12SJohn Marino 	0x5E, 0x91, 0x54, 0x7F, 0x9E, 0x27, 0x49, 0xF4,
9563ff40c12SJohn Marino 	0xD7, 0xFB, 0xD7, 0xD3, 0xB9, 0xA9, 0x2E, 0xE1,
9573ff40c12SJohn Marino 	0x90, 0x9D, 0x0D, 0x22, 0x63, 0xF8, 0x0A, 0x76,
9583ff40c12SJohn Marino 	0xA6, 0xA2, 0x4C, 0x08, 0x7A, 0x09, 0x1F, 0x53,
9593ff40c12SJohn Marino 	0x1D, 0xBF, 0x0A, 0x01, 0x69, 0xB6, 0xA2, 0x8A,
9603ff40c12SJohn Marino 	0xD6, 0x62, 0xA4, 0xD1, 0x8E, 0x73, 0xAF, 0xA3,
9613ff40c12SJohn Marino 	0x2D, 0x77, 0x9D, 0x59, 0x18, 0xD0, 0x8B, 0xC8,
9623ff40c12SJohn Marino 	0x85, 0x8F, 0x4D, 0xCE, 0xF9, 0x7C, 0x2A, 0x24,
9633ff40c12SJohn Marino 	0x85, 0x5E, 0x6E, 0xEB, 0x22, 0xB3, 0xB2, 0xE5
9643ff40c12SJohn Marino };
9653ff40c12SJohn Marino static const u8 dh_group22_prime[] = {
9663ff40c12SJohn Marino 	0xB1, 0x0B, 0x8F, 0x96, 0xA0, 0x80, 0xE0, 0x1D,
9673ff40c12SJohn Marino 	0xDE, 0x92, 0xDE, 0x5E, 0xAE, 0x5D, 0x54, 0xEC,
9683ff40c12SJohn Marino 	0x52, 0xC9, 0x9F, 0xBC, 0xFB, 0x06, 0xA3, 0xC6,
9693ff40c12SJohn Marino 	0x9A, 0x6A, 0x9D, 0xCA, 0x52, 0xD2, 0x3B, 0x61,
9703ff40c12SJohn Marino 	0x60, 0x73, 0xE2, 0x86, 0x75, 0xA2, 0x3D, 0x18,
9713ff40c12SJohn Marino 	0x98, 0x38, 0xEF, 0x1E, 0x2E, 0xE6, 0x52, 0xC0,
9723ff40c12SJohn Marino 	0x13, 0xEC, 0xB4, 0xAE, 0xA9, 0x06, 0x11, 0x23,
9733ff40c12SJohn Marino 	0x24, 0x97, 0x5C, 0x3C, 0xD4, 0x9B, 0x83, 0xBF,
9743ff40c12SJohn Marino 	0xAC, 0xCB, 0xDD, 0x7D, 0x90, 0xC4, 0xBD, 0x70,
9753ff40c12SJohn Marino 	0x98, 0x48, 0x8E, 0x9C, 0x21, 0x9A, 0x73, 0x72,
9763ff40c12SJohn Marino 	0x4E, 0xFF, 0xD6, 0xFA, 0xE5, 0x64, 0x47, 0x38,
9773ff40c12SJohn Marino 	0xFA, 0xA3, 0x1A, 0x4F, 0xF5, 0x5B, 0xCC, 0xC0,
9783ff40c12SJohn Marino 	0xA1, 0x51, 0xAF, 0x5F, 0x0D, 0xC8, 0xB4, 0xBD,
9793ff40c12SJohn Marino 	0x45, 0xBF, 0x37, 0xDF, 0x36, 0x5C, 0x1A, 0x65,
9803ff40c12SJohn Marino 	0xE6, 0x8C, 0xFD, 0xA7, 0x6D, 0x4D, 0xA7, 0x08,
9813ff40c12SJohn Marino 	0xDF, 0x1F, 0xB2, 0xBC, 0x2E, 0x4A, 0x43, 0x71
9823ff40c12SJohn Marino };
9833ff40c12SJohn Marino static const u8 dh_group22_order[] = {
9843ff40c12SJohn Marino 	0xF5, 0x18, 0xAA, 0x87, 0x81, 0xA8, 0xDF, 0x27,
9853ff40c12SJohn Marino 	0x8A, 0xBA, 0x4E, 0x7D, 0x64, 0xB7, 0xCB, 0x9D,
9863ff40c12SJohn Marino 	0x49, 0x46, 0x23, 0x53
9873ff40c12SJohn Marino };
9883ff40c12SJohn Marino 
9893ff40c12SJohn Marino /*
9903ff40c12SJohn Marino  * RFC 5114, 2.2.
9913ff40c12SJohn Marino  * Group 23 - 2048-bit MODP Group with 224-bit Prime Order Subgroup
9923ff40c12SJohn Marino  */
9933ff40c12SJohn Marino static const u8 dh_group23_generator[] = {
9943ff40c12SJohn Marino 	0xAC, 0x40, 0x32, 0xEF, 0x4F, 0x2D, 0x9A, 0xE3,
9953ff40c12SJohn Marino 	0x9D, 0xF3, 0x0B, 0x5C, 0x8F, 0xFD, 0xAC, 0x50,
9963ff40c12SJohn Marino 	0x6C, 0xDE, 0xBE, 0x7B, 0x89, 0x99, 0x8C, 0xAF,
9973ff40c12SJohn Marino 	0x74, 0x86, 0x6A, 0x08, 0xCF, 0xE4, 0xFF, 0xE3,
9983ff40c12SJohn Marino 	0xA6, 0x82, 0x4A, 0x4E, 0x10, 0xB9, 0xA6, 0xF0,
9993ff40c12SJohn Marino 	0xDD, 0x92, 0x1F, 0x01, 0xA7, 0x0C, 0x4A, 0xFA,
10003ff40c12SJohn Marino 	0xAB, 0x73, 0x9D, 0x77, 0x00, 0xC2, 0x9F, 0x52,
10013ff40c12SJohn Marino 	0xC5, 0x7D, 0xB1, 0x7C, 0x62, 0x0A, 0x86, 0x52,
10023ff40c12SJohn Marino 	0xBE, 0x5E, 0x90, 0x01, 0xA8, 0xD6, 0x6A, 0xD7,
10033ff40c12SJohn Marino 	0xC1, 0x76, 0x69, 0x10, 0x19, 0x99, 0x02, 0x4A,
10043ff40c12SJohn Marino 	0xF4, 0xD0, 0x27, 0x27, 0x5A, 0xC1, 0x34, 0x8B,
10053ff40c12SJohn Marino 	0xB8, 0xA7, 0x62, 0xD0, 0x52, 0x1B, 0xC9, 0x8A,
10063ff40c12SJohn Marino 	0xE2, 0x47, 0x15, 0x04, 0x22, 0xEA, 0x1E, 0xD4,
10073ff40c12SJohn Marino 	0x09, 0x93, 0x9D, 0x54, 0xDA, 0x74, 0x60, 0xCD,
10083ff40c12SJohn Marino 	0xB5, 0xF6, 0xC6, 0xB2, 0x50, 0x71, 0x7C, 0xBE,
10093ff40c12SJohn Marino 	0xF1, 0x80, 0xEB, 0x34, 0x11, 0x8E, 0x98, 0xD1,
10103ff40c12SJohn Marino 	0x19, 0x52, 0x9A, 0x45, 0xD6, 0xF8, 0x34, 0x56,
10113ff40c12SJohn Marino 	0x6E, 0x30, 0x25, 0xE3, 0x16, 0xA3, 0x30, 0xEF,
10123ff40c12SJohn Marino 	0xBB, 0x77, 0xA8, 0x6F, 0x0C, 0x1A, 0xB1, 0x5B,
10133ff40c12SJohn Marino 	0x05, 0x1A, 0xE3, 0xD4, 0x28, 0xC8, 0xF8, 0xAC,
10143ff40c12SJohn Marino 	0xB7, 0x0A, 0x81, 0x37, 0x15, 0x0B, 0x8E, 0xEB,
10153ff40c12SJohn Marino 	0x10, 0xE1, 0x83, 0xED, 0xD1, 0x99, 0x63, 0xDD,
10163ff40c12SJohn Marino 	0xD9, 0xE2, 0x63, 0xE4, 0x77, 0x05, 0x89, 0xEF,
10173ff40c12SJohn Marino 	0x6A, 0xA2, 0x1E, 0x7F, 0x5F, 0x2F, 0xF3, 0x81,
10183ff40c12SJohn Marino 	0xB5, 0x39, 0xCC, 0xE3, 0x40, 0x9D, 0x13, 0xCD,
10193ff40c12SJohn Marino 	0x56, 0x6A, 0xFB, 0xB4, 0x8D, 0x6C, 0x01, 0x91,
10203ff40c12SJohn Marino 	0x81, 0xE1, 0xBC, 0xFE, 0x94, 0xB3, 0x02, 0x69,
10213ff40c12SJohn Marino 	0xED, 0xFE, 0x72, 0xFE, 0x9B, 0x6A, 0xA4, 0xBD,
10223ff40c12SJohn Marino 	0x7B, 0x5A, 0x0F, 0x1C, 0x71, 0xCF, 0xFF, 0x4C,
10233ff40c12SJohn Marino 	0x19, 0xC4, 0x18, 0xE1, 0xF6, 0xEC, 0x01, 0x79,
10243ff40c12SJohn Marino 	0x81, 0xBC, 0x08, 0x7F, 0x2A, 0x70, 0x65, 0xB3,
10253ff40c12SJohn Marino 	0x84, 0xB8, 0x90, 0xD3, 0x19, 0x1F, 0x2B, 0xFA
10263ff40c12SJohn Marino };
10273ff40c12SJohn Marino static const u8 dh_group23_prime[] = {
10283ff40c12SJohn Marino 	0xAD, 0x10, 0x7E, 0x1E, 0x91, 0x23, 0xA9, 0xD0,
10293ff40c12SJohn Marino 	0xD6, 0x60, 0xFA, 0xA7, 0x95, 0x59, 0xC5, 0x1F,
10303ff40c12SJohn Marino 	0xA2, 0x0D, 0x64, 0xE5, 0x68, 0x3B, 0x9F, 0xD1,
10313ff40c12SJohn Marino 	0xB5, 0x4B, 0x15, 0x97, 0xB6, 0x1D, 0x0A, 0x75,
10323ff40c12SJohn Marino 	0xE6, 0xFA, 0x14, 0x1D, 0xF9, 0x5A, 0x56, 0xDB,
10333ff40c12SJohn Marino 	0xAF, 0x9A, 0x3C, 0x40, 0x7B, 0xA1, 0xDF, 0x15,
10343ff40c12SJohn Marino 	0xEB, 0x3D, 0x68, 0x8A, 0x30, 0x9C, 0x18, 0x0E,
10353ff40c12SJohn Marino 	0x1D, 0xE6, 0xB8, 0x5A, 0x12, 0x74, 0xA0, 0xA6,
10363ff40c12SJohn Marino 	0x6D, 0x3F, 0x81, 0x52, 0xAD, 0x6A, 0xC2, 0x12,
10373ff40c12SJohn Marino 	0x90, 0x37, 0xC9, 0xED, 0xEF, 0xDA, 0x4D, 0xF8,
10383ff40c12SJohn Marino 	0xD9, 0x1E, 0x8F, 0xEF, 0x55, 0xB7, 0x39, 0x4B,
10393ff40c12SJohn Marino 	0x7A, 0xD5, 0xB7, 0xD0, 0xB6, 0xC1, 0x22, 0x07,
10403ff40c12SJohn Marino 	0xC9, 0xF9, 0x8D, 0x11, 0xED, 0x34, 0xDB, 0xF6,
10413ff40c12SJohn Marino 	0xC6, 0xBA, 0x0B, 0x2C, 0x8B, 0xBC, 0x27, 0xBE,
10423ff40c12SJohn Marino 	0x6A, 0x00, 0xE0, 0xA0, 0xB9, 0xC4, 0x97, 0x08,
10433ff40c12SJohn Marino 	0xB3, 0xBF, 0x8A, 0x31, 0x70, 0x91, 0x88, 0x36,
10443ff40c12SJohn Marino 	0x81, 0x28, 0x61, 0x30, 0xBC, 0x89, 0x85, 0xDB,
10453ff40c12SJohn Marino 	0x16, 0x02, 0xE7, 0x14, 0x41, 0x5D, 0x93, 0x30,
10463ff40c12SJohn Marino 	0x27, 0x82, 0x73, 0xC7, 0xDE, 0x31, 0xEF, 0xDC,
10473ff40c12SJohn Marino 	0x73, 0x10, 0xF7, 0x12, 0x1F, 0xD5, 0xA0, 0x74,
10483ff40c12SJohn Marino 	0x15, 0x98, 0x7D, 0x9A, 0xDC, 0x0A, 0x48, 0x6D,
10493ff40c12SJohn Marino 	0xCD, 0xF9, 0x3A, 0xCC, 0x44, 0x32, 0x83, 0x87,
10503ff40c12SJohn Marino 	0x31, 0x5D, 0x75, 0xE1, 0x98, 0xC6, 0x41, 0xA4,
10513ff40c12SJohn Marino 	0x80, 0xCD, 0x86, 0xA1, 0xB9, 0xE5, 0x87, 0xE8,
10523ff40c12SJohn Marino 	0xBE, 0x60, 0xE6, 0x9C, 0xC9, 0x28, 0xB2, 0xB9,
10533ff40c12SJohn Marino 	0xC5, 0x21, 0x72, 0xE4, 0x13, 0x04, 0x2E, 0x9B,
10543ff40c12SJohn Marino 	0x23, 0xF1, 0x0B, 0x0E, 0x16, 0xE7, 0x97, 0x63,
10553ff40c12SJohn Marino 	0xC9, 0xB5, 0x3D, 0xCF, 0x4B, 0xA8, 0x0A, 0x29,
10563ff40c12SJohn Marino 	0xE3, 0xFB, 0x73, 0xC1, 0x6B, 0x8E, 0x75, 0xB9,
10573ff40c12SJohn Marino 	0x7E, 0xF3, 0x63, 0xE2, 0xFF, 0xA3, 0x1F, 0x71,
10583ff40c12SJohn Marino 	0xCF, 0x9D, 0xE5, 0x38, 0x4E, 0x71, 0xB8, 0x1C,
10593ff40c12SJohn Marino 	0x0A, 0xC4, 0xDF, 0xFE, 0x0C, 0x10, 0xE6, 0x4F
10603ff40c12SJohn Marino };
10613ff40c12SJohn Marino static const u8 dh_group23_order[] = {
10623ff40c12SJohn Marino 	0x80, 0x1C, 0x0D, 0x34, 0xC5, 0x8D, 0x93, 0xFE,
10633ff40c12SJohn Marino 	0x99, 0x71, 0x77, 0x10, 0x1F, 0x80, 0x53, 0x5A,
10643ff40c12SJohn Marino 	0x47, 0x38, 0xCE, 0xBC, 0xBF, 0x38, 0x9A, 0x99,
10653ff40c12SJohn Marino 	0xB3, 0x63, 0x71, 0xEB
10663ff40c12SJohn Marino };
10673ff40c12SJohn Marino 
10683ff40c12SJohn Marino /*
10693ff40c12SJohn Marino  * RFC 5114, 2.3.
10703ff40c12SJohn Marino  * Group 24 - 2048-bit MODP Group with 256-bit Prime Order Subgroup
10713ff40c12SJohn Marino  */
10723ff40c12SJohn Marino static const u8 dh_group24_generator[] = {
10733ff40c12SJohn Marino 	0x3F, 0xB3, 0x2C, 0x9B, 0x73, 0x13, 0x4D, 0x0B,
10743ff40c12SJohn Marino 	0x2E, 0x77, 0x50, 0x66, 0x60, 0xED, 0xBD, 0x48,
10753ff40c12SJohn Marino 	0x4C, 0xA7, 0xB1, 0x8F, 0x21, 0xEF, 0x20, 0x54,
10763ff40c12SJohn Marino 	0x07, 0xF4, 0x79, 0x3A, 0x1A, 0x0B, 0xA1, 0x25,
10773ff40c12SJohn Marino 	0x10, 0xDB, 0xC1, 0x50, 0x77, 0xBE, 0x46, 0x3F,
10783ff40c12SJohn Marino 	0xFF, 0x4F, 0xED, 0x4A, 0xAC, 0x0B, 0xB5, 0x55,
10793ff40c12SJohn Marino 	0xBE, 0x3A, 0x6C, 0x1B, 0x0C, 0x6B, 0x47, 0xB1,
10803ff40c12SJohn Marino 	0xBC, 0x37, 0x73, 0xBF, 0x7E, 0x8C, 0x6F, 0x62,
10813ff40c12SJohn Marino 	0x90, 0x12, 0x28, 0xF8, 0xC2, 0x8C, 0xBB, 0x18,
10823ff40c12SJohn Marino 	0xA5, 0x5A, 0xE3, 0x13, 0x41, 0x00, 0x0A, 0x65,
10833ff40c12SJohn Marino 	0x01, 0x96, 0xF9, 0x31, 0xC7, 0x7A, 0x57, 0xF2,
10843ff40c12SJohn Marino 	0xDD, 0xF4, 0x63, 0xE5, 0xE9, 0xEC, 0x14, 0x4B,
10853ff40c12SJohn Marino 	0x77, 0x7D, 0xE6, 0x2A, 0xAA, 0xB8, 0xA8, 0x62,
10863ff40c12SJohn Marino 	0x8A, 0xC3, 0x76, 0xD2, 0x82, 0xD6, 0xED, 0x38,
10873ff40c12SJohn Marino 	0x64, 0xE6, 0x79, 0x82, 0x42, 0x8E, 0xBC, 0x83,
10883ff40c12SJohn Marino 	0x1D, 0x14, 0x34, 0x8F, 0x6F, 0x2F, 0x91, 0x93,
10893ff40c12SJohn Marino 	0xB5, 0x04, 0x5A, 0xF2, 0x76, 0x71, 0x64, 0xE1,
10903ff40c12SJohn Marino 	0xDF, 0xC9, 0x67, 0xC1, 0xFB, 0x3F, 0x2E, 0x55,
10913ff40c12SJohn Marino 	0xA4, 0xBD, 0x1B, 0xFF, 0xE8, 0x3B, 0x9C, 0x80,
10923ff40c12SJohn Marino 	0xD0, 0x52, 0xB9, 0x85, 0xD1, 0x82, 0xEA, 0x0A,
10933ff40c12SJohn Marino 	0xDB, 0x2A, 0x3B, 0x73, 0x13, 0xD3, 0xFE, 0x14,
10943ff40c12SJohn Marino 	0xC8, 0x48, 0x4B, 0x1E, 0x05, 0x25, 0x88, 0xB9,
10953ff40c12SJohn Marino 	0xB7, 0xD2, 0xBB, 0xD2, 0xDF, 0x01, 0x61, 0x99,
10963ff40c12SJohn Marino 	0xEC, 0xD0, 0x6E, 0x15, 0x57, 0xCD, 0x09, 0x15,
10973ff40c12SJohn Marino 	0xB3, 0x35, 0x3B, 0xBB, 0x64, 0xE0, 0xEC, 0x37,
10983ff40c12SJohn Marino 	0x7F, 0xD0, 0x28, 0x37, 0x0D, 0xF9, 0x2B, 0x52,
10993ff40c12SJohn Marino 	0xC7, 0x89, 0x14, 0x28, 0xCD, 0xC6, 0x7E, 0xB6,
11003ff40c12SJohn Marino 	0x18, 0x4B, 0x52, 0x3D, 0x1D, 0xB2, 0x46, 0xC3,
11013ff40c12SJohn Marino 	0x2F, 0x63, 0x07, 0x84, 0x90, 0xF0, 0x0E, 0xF8,
11023ff40c12SJohn Marino 	0xD6, 0x47, 0xD1, 0x48, 0xD4, 0x79, 0x54, 0x51,
11033ff40c12SJohn Marino 	0x5E, 0x23, 0x27, 0xCF, 0xEF, 0x98, 0xC5, 0x82,
11043ff40c12SJohn Marino 	0x66, 0x4B, 0x4C, 0x0F, 0x6C, 0xC4, 0x16, 0x59
11053ff40c12SJohn Marino };
11063ff40c12SJohn Marino static const u8 dh_group24_prime[] = {
11073ff40c12SJohn Marino 	0x87, 0xA8, 0xE6, 0x1D, 0xB4, 0xB6, 0x66, 0x3C,
11083ff40c12SJohn Marino 	0xFF, 0xBB, 0xD1, 0x9C, 0x65, 0x19, 0x59, 0x99,
11093ff40c12SJohn Marino 	0x8C, 0xEE, 0xF6, 0x08, 0x66, 0x0D, 0xD0, 0xF2,
11103ff40c12SJohn Marino 	0x5D, 0x2C, 0xEE, 0xD4, 0x43, 0x5E, 0x3B, 0x00,
11113ff40c12SJohn Marino 	0xE0, 0x0D, 0xF8, 0xF1, 0xD6, 0x19, 0x57, 0xD4,
11123ff40c12SJohn Marino 	0xFA, 0xF7, 0xDF, 0x45, 0x61, 0xB2, 0xAA, 0x30,
11133ff40c12SJohn Marino 	0x16, 0xC3, 0xD9, 0x11, 0x34, 0x09, 0x6F, 0xAA,
11143ff40c12SJohn Marino 	0x3B, 0xF4, 0x29, 0x6D, 0x83, 0x0E, 0x9A, 0x7C,
11153ff40c12SJohn Marino 	0x20, 0x9E, 0x0C, 0x64, 0x97, 0x51, 0x7A, 0xBD,
11163ff40c12SJohn Marino 	0x5A, 0x8A, 0x9D, 0x30, 0x6B, 0xCF, 0x67, 0xED,
11173ff40c12SJohn Marino 	0x91, 0xF9, 0xE6, 0x72, 0x5B, 0x47, 0x58, 0xC0,
11183ff40c12SJohn Marino 	0x22, 0xE0, 0xB1, 0xEF, 0x42, 0x75, 0xBF, 0x7B,
11193ff40c12SJohn Marino 	0x6C, 0x5B, 0xFC, 0x11, 0xD4, 0x5F, 0x90, 0x88,
11203ff40c12SJohn Marino 	0xB9, 0x41, 0xF5, 0x4E, 0xB1, 0xE5, 0x9B, 0xB8,
11213ff40c12SJohn Marino 	0xBC, 0x39, 0xA0, 0xBF, 0x12, 0x30, 0x7F, 0x5C,
11223ff40c12SJohn Marino 	0x4F, 0xDB, 0x70, 0xC5, 0x81, 0xB2, 0x3F, 0x76,
11233ff40c12SJohn Marino 	0xB6, 0x3A, 0xCA, 0xE1, 0xCA, 0xA6, 0xB7, 0x90,
11243ff40c12SJohn Marino 	0x2D, 0x52, 0x52, 0x67, 0x35, 0x48, 0x8A, 0x0E,
11253ff40c12SJohn Marino 	0xF1, 0x3C, 0x6D, 0x9A, 0x51, 0xBF, 0xA4, 0xAB,
11263ff40c12SJohn Marino 	0x3A, 0xD8, 0x34, 0x77, 0x96, 0x52, 0x4D, 0x8E,
11273ff40c12SJohn Marino 	0xF6, 0xA1, 0x67, 0xB5, 0xA4, 0x18, 0x25, 0xD9,
11283ff40c12SJohn Marino 	0x67, 0xE1, 0x44, 0xE5, 0x14, 0x05, 0x64, 0x25,
11293ff40c12SJohn Marino 	0x1C, 0xCA, 0xCB, 0x83, 0xE6, 0xB4, 0x86, 0xF6,
11303ff40c12SJohn Marino 	0xB3, 0xCA, 0x3F, 0x79, 0x71, 0x50, 0x60, 0x26,
11313ff40c12SJohn Marino 	0xC0, 0xB8, 0x57, 0xF6, 0x89, 0x96, 0x28, 0x56,
11323ff40c12SJohn Marino 	0xDE, 0xD4, 0x01, 0x0A, 0xBD, 0x0B, 0xE6, 0x21,
11333ff40c12SJohn Marino 	0xC3, 0xA3, 0x96, 0x0A, 0x54, 0xE7, 0x10, 0xC3,
11343ff40c12SJohn Marino 	0x75, 0xF2, 0x63, 0x75, 0xD7, 0x01, 0x41, 0x03,
11353ff40c12SJohn Marino 	0xA4, 0xB5, 0x43, 0x30, 0xC1, 0x98, 0xAF, 0x12,
11363ff40c12SJohn Marino 	0x61, 0x16, 0xD2, 0x27, 0x6E, 0x11, 0x71, 0x5F,
11373ff40c12SJohn Marino 	0x69, 0x38, 0x77, 0xFA, 0xD7, 0xEF, 0x09, 0xCA,
11383ff40c12SJohn Marino 	0xDB, 0x09, 0x4A, 0xE9, 0x1E, 0x1A, 0x15, 0x97
11393ff40c12SJohn Marino };
11403ff40c12SJohn Marino static const u8 dh_group24_order[] = {
11413ff40c12SJohn Marino 	0x8C, 0xF8, 0x36, 0x42, 0xA7, 0x09, 0xA0, 0x97,
11423ff40c12SJohn Marino 	0xB4, 0x47, 0x99, 0x76, 0x40, 0x12, 0x9D, 0xA2,
11433ff40c12SJohn Marino 	0x99, 0xB1, 0xA4, 0x7D, 0x1E, 0xB3, 0x75, 0x0B,
11443ff40c12SJohn Marino 	0xA3, 0x08, 0xB0, 0xFE, 0x64, 0xF5, 0xFB, 0xD3
11453ff40c12SJohn Marino };
11466d49e1aeSJan Lentfer 
11476d49e1aeSJan Lentfer #endif /* ALL_DH_GROUPS */
11486d49e1aeSJan Lentfer 
11496d49e1aeSJan Lentfer 
11503ff40c12SJohn Marino #define DH_GROUP(id,safe) \
11516d49e1aeSJan Lentfer { id, dh_group ## id ## _generator, sizeof(dh_group ## id ## _generator), \
11523ff40c12SJohn Marino dh_group ## id ## _prime, sizeof(dh_group ## id ## _prime), \
11533ff40c12SJohn Marino dh_group ## id ## _order, sizeof(dh_group ## id ## _order), safe }
11546d49e1aeSJan Lentfer 
11556d49e1aeSJan Lentfer 
1156*a1157835SDaniel Fojt static const struct dh_group dh_groups[] = {
11573ff40c12SJohn Marino 	DH_GROUP(5, 1),
11586d49e1aeSJan Lentfer #ifdef ALL_DH_GROUPS
11593ff40c12SJohn Marino 	DH_GROUP(1, 1),
11603ff40c12SJohn Marino 	DH_GROUP(2, 1),
11613ff40c12SJohn Marino 	DH_GROUP(14, 1),
11623ff40c12SJohn Marino 	DH_GROUP(15, 1),
11633ff40c12SJohn Marino 	DH_GROUP(16, 1),
11643ff40c12SJohn Marino 	DH_GROUP(17, 1),
11653ff40c12SJohn Marino 	DH_GROUP(18, 1),
11663ff40c12SJohn Marino 	DH_GROUP(22, 0),
11673ff40c12SJohn Marino 	DH_GROUP(23, 0),
11683ff40c12SJohn Marino 	DH_GROUP(24, 0)
11696d49e1aeSJan Lentfer #endif /* ALL_DH_GROUPS */
11706d49e1aeSJan Lentfer };
11716d49e1aeSJan Lentfer 
11723ff40c12SJohn Marino #define NUM_DH_GROUPS ARRAY_SIZE(dh_groups)
11736d49e1aeSJan Lentfer 
11746d49e1aeSJan Lentfer 
dh_groups_get(int id)11756d49e1aeSJan Lentfer const struct dh_group * dh_groups_get(int id)
11766d49e1aeSJan Lentfer {
11776d49e1aeSJan Lentfer 	size_t i;
11786d49e1aeSJan Lentfer 
11796d49e1aeSJan Lentfer 	for (i = 0; i < NUM_DH_GROUPS; i++) {
11806d49e1aeSJan Lentfer 		if (dh_groups[i].id == id)
11816d49e1aeSJan Lentfer 			return &dh_groups[i];
11826d49e1aeSJan Lentfer 	}
11836d49e1aeSJan Lentfer 	return NULL;
11846d49e1aeSJan Lentfer }
11856d49e1aeSJan Lentfer 
11866d49e1aeSJan Lentfer 
11876d49e1aeSJan Lentfer /**
11886d49e1aeSJan Lentfer  * dh_init - Initialize Diffie-Hellman handshake
11896d49e1aeSJan Lentfer  * @dh: Selected Diffie-Hellman group
11906d49e1aeSJan Lentfer  * @priv: Pointer for returning Diffie-Hellman private key
11916d49e1aeSJan Lentfer  * Returns: Diffie-Hellman public value
11926d49e1aeSJan Lentfer  */
dh_init(const struct dh_group * dh,struct wpabuf ** priv)11936d49e1aeSJan Lentfer struct wpabuf * dh_init(const struct dh_group *dh, struct wpabuf **priv)
11946d49e1aeSJan Lentfer {
11956d49e1aeSJan Lentfer 	struct wpabuf *pv;
11966d49e1aeSJan Lentfer 	size_t pv_len;
11976d49e1aeSJan Lentfer 
11986d49e1aeSJan Lentfer 	if (dh == NULL)
11996d49e1aeSJan Lentfer 		return NULL;
12006d49e1aeSJan Lentfer 
1201*a1157835SDaniel Fojt 	wpabuf_clear_free(*priv);
12026d49e1aeSJan Lentfer 	*priv = wpabuf_alloc(dh->prime_len);
12036d49e1aeSJan Lentfer 	if (*priv == NULL)
12046d49e1aeSJan Lentfer 		return NULL;
12056d49e1aeSJan Lentfer 
1206*a1157835SDaniel Fojt 	pv_len = dh->prime_len;
1207*a1157835SDaniel Fojt 	pv = wpabuf_alloc(pv_len);
1208*a1157835SDaniel Fojt 	if (pv == NULL) {
1209*a1157835SDaniel Fojt 		wpabuf_clear_free(*priv);
12106d49e1aeSJan Lentfer 		*priv = NULL;
12116d49e1aeSJan Lentfer 		return NULL;
12126d49e1aeSJan Lentfer 	}
1213*a1157835SDaniel Fojt 	if (crypto_dh_init(*dh->generator, dh->prime, dh->prime_len,
1214*a1157835SDaniel Fojt 			   wpabuf_mhead(*priv), wpabuf_mhead(pv)) < 0) {
1215*a1157835SDaniel Fojt 		wpabuf_clear_free(pv);
1216*a1157835SDaniel Fojt 		wpa_printf(MSG_INFO, "DH: crypto_dh_init failed");
1217*a1157835SDaniel Fojt 		wpabuf_clear_free(*priv);
1218*a1157835SDaniel Fojt 		*priv = NULL;
1219*a1157835SDaniel Fojt 		return NULL;
12206d49e1aeSJan Lentfer 	}
1221*a1157835SDaniel Fojt 	wpabuf_put(*priv, dh->prime_len);
1222*a1157835SDaniel Fojt 	wpabuf_put(pv, dh->prime_len);
12236d49e1aeSJan Lentfer 	wpa_hexdump_buf_key(MSG_DEBUG, "DH: private value", *priv);
12246d49e1aeSJan Lentfer 	wpa_hexdump_buf(MSG_DEBUG, "DH: public value", pv);
12256d49e1aeSJan Lentfer 
12266d49e1aeSJan Lentfer 	return pv;
12276d49e1aeSJan Lentfer }
12286d49e1aeSJan Lentfer 
12296d49e1aeSJan Lentfer 
12306d49e1aeSJan Lentfer /**
12316d49e1aeSJan Lentfer  * dh_derive_shared - Derive shared Diffie-Hellman key
12326d49e1aeSJan Lentfer  * @peer_public: Diffie-Hellman public value from peer
12336d49e1aeSJan Lentfer  * @own_private: Diffie-Hellman private key from dh_init()
12346d49e1aeSJan Lentfer  * @dh: Selected Diffie-Hellman group
12356d49e1aeSJan Lentfer  * Returns: Diffie-Hellman shared key
12366d49e1aeSJan Lentfer  */
dh_derive_shared(const struct wpabuf * peer_public,const struct wpabuf * own_private,const struct dh_group * dh)12376d49e1aeSJan Lentfer struct wpabuf * dh_derive_shared(const struct wpabuf *peer_public,
12386d49e1aeSJan Lentfer 				 const struct wpabuf *own_private,
12396d49e1aeSJan Lentfer 				 const struct dh_group *dh)
12406d49e1aeSJan Lentfer {
12416d49e1aeSJan Lentfer 	struct wpabuf *shared;
12426d49e1aeSJan Lentfer 	size_t shared_len;
12436d49e1aeSJan Lentfer 
12446d49e1aeSJan Lentfer 	if (dh == NULL || peer_public == NULL || own_private == NULL)
12456d49e1aeSJan Lentfer 		return NULL;
12466d49e1aeSJan Lentfer 
12476d49e1aeSJan Lentfer 	shared_len = dh->prime_len;
12486d49e1aeSJan Lentfer 	shared = wpabuf_alloc(shared_len);
12496d49e1aeSJan Lentfer 	if (shared == NULL)
12506d49e1aeSJan Lentfer 		return NULL;
1251*a1157835SDaniel Fojt 	if (crypto_dh_derive_secret(*dh->generator, dh->prime, dh->prime_len,
1252*a1157835SDaniel Fojt 				    dh->order, dh->order_len,
1253*a1157835SDaniel Fojt 				    wpabuf_head(own_private),
1254*a1157835SDaniel Fojt 				    wpabuf_len(own_private),
1255*a1157835SDaniel Fojt 				    wpabuf_head(peer_public),
1256*a1157835SDaniel Fojt 				    wpabuf_len(peer_public),
12573ff40c12SJohn Marino 				    wpabuf_mhead(shared), &shared_len) < 0) {
1258*a1157835SDaniel Fojt 		wpabuf_clear_free(shared);
1259*a1157835SDaniel Fojt 		wpa_printf(MSG_INFO, "DH: crypto_dh_derive_secret failed");
12606d49e1aeSJan Lentfer 		return NULL;
12616d49e1aeSJan Lentfer 	}
12623ff40c12SJohn Marino 	wpabuf_put(shared, shared_len);
12636d49e1aeSJan Lentfer 	wpa_hexdump_buf_key(MSG_DEBUG, "DH: shared key", shared);
12646d49e1aeSJan Lentfer 
12656d49e1aeSJan Lentfer 	return shared;
12666d49e1aeSJan Lentfer }
1267