1526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/* 2526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Diffie-Hellman groups 3526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Copyright (c) 2007, Jouni Malinen <j@w1.fi> 4526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * 5526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * This program is free software; you can redistribute it and/or modify 6526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * it under the terms of the GNU General Public License version 2 as 7526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * published by the Free Software Foundation. 8526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * 9526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Alternatively, this software may be distributed under the terms of BSD 10526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * license. 11526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * 12526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * See README and COPYING for more details. 13526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 14526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 15526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#include "includes.h" 16526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 17526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#include "common.h" 18526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#include "crypto.h" 19526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#include "dh_groups.h" 20526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 21526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 22dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt#ifdef ALL_DH_GROUPS 23dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt 24526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/* RFC 4306, B.1. Group 1 - 768 Bit MODP 25526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Generator: 2 26526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Prime: 2^768 - 2 ^704 - 1 + 2^64 * { [2^638 pi] + 149686 } 27526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 28526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic const u8 dh_group1_generator[1] = { 0x02 }; 29526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic const u8 dh_group1_prime[96] = { 30526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 31526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, 32526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, 33526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 34526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, 35526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, 36526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 37526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, 38526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, 39526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 40526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x3A, 0x36, 0x20, 41526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF 42526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}; 43526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 44526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/* RFC 4306, B.2. Group 2 - 1024 Bit MODP 45526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Generator: 2 46526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Prime: 2^1024 - 2^960 - 1 + 2^64 * { [2^894 pi] + 129093 } 47526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 48526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic const u8 dh_group2_generator[1] = { 0x02 }; 49526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic const u8 dh_group2_prime[128] = { 50526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 51526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, 52526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, 53526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 54526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, 55526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, 56526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 57526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, 58526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, 59526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 60526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, 61526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, 62526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 63526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, 64526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE6, 0x53, 0x81, 65526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF 66526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}; 67526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 68dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt#endif /* ALL_DH_GROUPS */ 69dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt 70526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/* RFC 3526, 2. Group 5 - 1536 Bit MODP 71526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Generator: 2 72526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Prime: 2^1536 - 2^1472 - 1 + 2^64 * { [2^1406 pi] + 741804 } 73526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 74526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic const u8 dh_group5_generator[1] = { 0x02 }; 75526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic const u8 dh_group5_prime[192] = { 76526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 77526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, 78526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, 79526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 80526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, 81526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, 82526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 83526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, 84526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, 85526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 86526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, 87526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, 88526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 89526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, 90526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, 91526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, 92526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A, 93526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, 94526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 95526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, 96526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, 97526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, 98526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x23, 0x73, 0x27, 99526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF 100526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}; 101526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 102dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt#ifdef ALL_DH_GROUPS 103dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt 104526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/* RFC 3526, 3. Group 14 - 2048 Bit MODP 105526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Generator: 2 106526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Prime: 2^2048 - 2^1984 - 1 + 2^64 * { [2^1918 pi] + 124476 } 107526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 108526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic const u8 dh_group14_generator[1] = { 0x02 }; 109526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic const u8 dh_group14_prime[256] = { 110526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 111526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, 112526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, 113526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 114526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, 115526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, 116526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 117526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, 118526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, 119526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 120526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, 121526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, 122526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 123526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, 124526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, 125526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, 126526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A, 127526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, 128526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 129526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, 130526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, 131526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, 132526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C, 133526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, 134526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, 135526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F, 136526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, 137526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, 138526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5, 139526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, 140526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAC, 0xAA, 0x68, 141526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF 142526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}; 143526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 144526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/* RFC 3526, 4. Group 15 - 3072 Bit MODP 145526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Generator: 2 146526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Prime: 2^3072 - 2^3008 - 1 + 2^64 * { [2^2942 pi] + 1690314 } 147526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 148526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic const u8 dh_group15_generator[1] = { 0x02 }; 149526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic const u8 dh_group15_prime[384] = { 150526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 151526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, 152526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, 153526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 154526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, 155526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, 156526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 157526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, 158526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, 159526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 160526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, 161526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, 162526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 163526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, 164526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, 165526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, 166526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A, 167526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, 168526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 169526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, 170526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, 171526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, 172526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C, 173526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, 174526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, 175526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F, 176526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, 177526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, 178526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5, 179526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, 180526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D, 181526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xAD, 0x33, 0x17, 0x0D, 0x04, 0x50, 0x7A, 0x33, 182526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64, 183526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, 184526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x8A, 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D, 185526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7, 186526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7, 187526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1E, 0x8C, 0x94, 0xE0, 0x4A, 0x25, 0x61, 0x9D, 188526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B, 189526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64, 190526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xD8, 0x76, 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64, 191526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, 192526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C, 193526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, 0x46, 0xE2, 194526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31, 195526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E, 196526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x4B, 0x82, 0xD1, 0x20, 0xA9, 0x3A, 0xD2, 0xCA, 197526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF 198526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}; 199526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 200526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/* RFC 3526, 5. Group 16 - 4096 Bit MODP 201526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Generator: 2 202526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Prime: 2^4096 - 2^4032 - 1 + 2^64 * { [2^3966 pi] + 240904 } 203526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 204526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic const u8 dh_group16_generator[1] = { 0x02 }; 205526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic const u8 dh_group16_prime[512] = { 206526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 207526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, 208526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, 209526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 210526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, 211526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, 212526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 213526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, 214526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, 215526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 216526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, 217526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, 218526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 219526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, 220526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, 221526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, 222526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A, 223526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, 224526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 225526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, 226526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, 227526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, 228526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C, 229526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, 230526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, 231526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F, 232526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, 233526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, 234526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5, 235526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, 236526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D, 237526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xAD, 0x33, 0x17, 0x0D, 0x04, 0x50, 0x7A, 0x33, 238526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64, 239526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, 240526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x8A, 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D, 241526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7, 242526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7, 243526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1E, 0x8C, 0x94, 0xE0, 0x4A, 0x25, 0x61, 0x9D, 244526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B, 245526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64, 246526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xD8, 0x76, 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64, 247526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, 248526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C, 249526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, 0x46, 0xE2, 250526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31, 251526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E, 252526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x4B, 0x82, 0xD1, 0x20, 0xA9, 0x21, 0x08, 0x01, 253526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1A, 0x72, 0x3C, 0x12, 0xA7, 0x87, 0xE6, 0xD7, 254526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x88, 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26, 255526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x99, 0xC3, 0x27, 0x18, 0x6A, 0xF4, 0xE2, 0x3C, 256526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, 0x0B, 0xDA, 257526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x25, 0x83, 0xE9, 0xCA, 0x2A, 0xD4, 0x4C, 0xE8, 258526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xDB, 0xBB, 0xC2, 0xDB, 0x04, 0xDE, 0x8E, 0xF9, 259526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x2E, 0x8E, 0xFC, 0x14, 0x1F, 0xBE, 0xCA, 0xA6, 260526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x28, 0x7C, 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D, 261526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x99, 0xB2, 0x96, 0x4F, 0xA0, 0x90, 0xC3, 0xA2, 262526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, 0xED, 263526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, 0xD7, 0xAF, 264526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xB8, 0x1B, 0xDD, 0x76, 0x21, 0x70, 0x48, 0x1C, 265526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xD0, 0x06, 0x91, 0x27, 0xD5, 0xB0, 0x5A, 0xA9, 266526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x93, 0xB4, 0xEA, 0x98, 0x8D, 0x8F, 0xDD, 0xC1, 267526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x86, 0xFF, 0xB7, 0xDC, 0x90, 0xA6, 0xC0, 0x8F, 268526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x4D, 0xF4, 0x35, 0xC9, 0x34, 0x06, 0x31, 0x99, 269526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF 270526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}; 271526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 272526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/* RFC 3526, 6. Group 17 - 6144 Bit MODP 273526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Generator: 2 274526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Prime: 2^6144 - 2^6080 - 1 + 2^64 * { [2^6014 pi] + 929484 } 275526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 276526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic const u8 dh_group17_generator[1] = { 0x02 }; 277526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic const u8 dh_group17_prime[768] = { 278526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 279526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, 280526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, 281526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 282526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, 283526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, 284526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 285526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, 286526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, 287526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 288526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, 289526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, 290526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 291526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, 292526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, 293526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, 294526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A, 295526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, 296526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 297526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, 298526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, 299526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, 300526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C, 301526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, 302526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, 303526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F, 304526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, 305526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, 306526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5, 307526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, 308526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D, 309526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xAD, 0x33, 0x17, 0x0D, 0x04, 0x50, 0x7A, 0x33, 310526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64, 311526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, 312526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x8A, 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D, 313526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7, 314526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7, 315526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1E, 0x8C, 0x94, 0xE0, 0x4A, 0x25, 0x61, 0x9D, 316526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B, 317526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64, 318526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xD8, 0x76, 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64, 319526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, 320526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C, 321526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, 0x46, 0xE2, 322526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31, 323526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E, 324526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x4B, 0x82, 0xD1, 0x20, 0xA9, 0x21, 0x08, 0x01, 325526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1A, 0x72, 0x3C, 0x12, 0xA7, 0x87, 0xE6, 0xD7, 326526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x88, 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26, 327526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x99, 0xC3, 0x27, 0x18, 0x6A, 0xF4, 0xE2, 0x3C, 328526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, 0x0B, 0xDA, 329526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x25, 0x83, 0xE9, 0xCA, 0x2A, 0xD4, 0x4C, 0xE8, 330526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xDB, 0xBB, 0xC2, 0xDB, 0x04, 0xDE, 0x8E, 0xF9, 331526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x2E, 0x8E, 0xFC, 0x14, 0x1F, 0xBE, 0xCA, 0xA6, 332526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x28, 0x7C, 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D, 333526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x99, 0xB2, 0x96, 0x4F, 0xA0, 0x90, 0xC3, 0xA2, 334526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, 0xED, 335526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, 0xD7, 0xAF, 336526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xB8, 0x1B, 0xDD, 0x76, 0x21, 0x70, 0x48, 0x1C, 337526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xD0, 0x06, 0x91, 0x27, 0xD5, 0xB0, 0x5A, 0xA9, 338526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x93, 0xB4, 0xEA, 0x98, 0x8D, 0x8F, 0xDD, 0xC1, 339526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x86, 0xFF, 0xB7, 0xDC, 0x90, 0xA6, 0xC0, 0x8F, 340526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x4D, 0xF4, 0x35, 0xC9, 0x34, 0x02, 0x84, 0x92, 341526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x36, 0xC3, 0xFA, 0xB4, 0xD2, 0x7C, 0x70, 0x26, 342526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC1, 0xD4, 0xDC, 0xB2, 0x60, 0x26, 0x46, 0xDE, 343526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC9, 0x75, 0x1E, 0x76, 0x3D, 0xBA, 0x37, 0xBD, 344526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF8, 0xFF, 0x94, 0x06, 0xAD, 0x9E, 0x53, 0x0E, 345526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xE5, 0xDB, 0x38, 0x2F, 0x41, 0x30, 0x01, 0xAE, 346526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xB0, 0x6A, 0x53, 0xED, 0x90, 0x27, 0xD8, 0x31, 347526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x17, 0x97, 0x27, 0xB0, 0x86, 0x5A, 0x89, 0x18, 348526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xDA, 0x3E, 0xDB, 0xEB, 0xCF, 0x9B, 0x14, 0xED, 349526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x44, 0xCE, 0x6C, 0xBA, 0xCE, 0xD4, 0xBB, 0x1B, 350526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xDB, 0x7F, 0x14, 0x47, 0xE6, 0xCC, 0x25, 0x4B, 351526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x33, 0x20, 0x51, 0x51, 0x2B, 0xD7, 0xAF, 0x42, 352526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x6F, 0xB8, 0xF4, 0x01, 0x37, 0x8C, 0xD2, 0xBF, 353526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x59, 0x83, 0xCA, 0x01, 0xC6, 0x4B, 0x92, 0xEC, 354526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF0, 0x32, 0xEA, 0x15, 0xD1, 0x72, 0x1D, 0x03, 355526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF4, 0x82, 0xD7, 0xCE, 0x6E, 0x74, 0xFE, 0xF6, 356526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xD5, 0x5E, 0x70, 0x2F, 0x46, 0x98, 0x0C, 0x82, 357526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xB5, 0xA8, 0x40, 0x31, 0x90, 0x0B, 0x1C, 0x9E, 358526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x59, 0xE7, 0xC9, 0x7F, 0xBE, 0xC7, 0xE8, 0xF3, 359526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x23, 0xA9, 0x7A, 0x7E, 0x36, 0xCC, 0x88, 0xBE, 360526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x0F, 0x1D, 0x45, 0xB7, 0xFF, 0x58, 0x5A, 0xC5, 361526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x4B, 0xD4, 0x07, 0xB2, 0x2B, 0x41, 0x54, 0xAA, 362526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xCC, 0x8F, 0x6D, 0x7E, 0xBF, 0x48, 0xE1, 0xD8, 363526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x14, 0xCC, 0x5E, 0xD2, 0x0F, 0x80, 0x37, 0xE0, 364526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xA7, 0x97, 0x15, 0xEE, 0xF2, 0x9B, 0xE3, 0x28, 365526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x06, 0xA1, 0xD5, 0x8B, 0xB7, 0xC5, 0xDA, 0x76, 366526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF5, 0x50, 0xAA, 0x3D, 0x8A, 0x1F, 0xBF, 0xF0, 367526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEB, 0x19, 0xCC, 0xB1, 0xA3, 0x13, 0xD5, 0x5C, 368526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xDA, 0x56, 0xC9, 0xEC, 0x2E, 0xF2, 0x96, 0x32, 369526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x38, 0x7F, 0xE8, 0xD7, 0x6E, 0x3C, 0x04, 0x68, 370526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x04, 0x3E, 0x8F, 0x66, 0x3F, 0x48, 0x60, 0xEE, 371526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x12, 0xBF, 0x2D, 0x5B, 0x0B, 0x74, 0x74, 0xD6, 372526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xE6, 0x94, 0xF9, 0x1E, 0x6D, 0xCC, 0x40, 0x24, 373526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF 374526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}; 375526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 376526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/* RFC 3526, 7. Group 18 - 8192 Bit MODP 377526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Generator: 2 378526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Prime: 2^8192 - 2^8128 - 1 + 2^64 * { [2^8062 pi] + 4743158 } 379526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 380526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic const u8 dh_group18_generator[1] = { 0x02 }; 381526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic const u8 dh_group18_prime[1024] = { 382526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 383526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, 384526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, 385526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 386526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, 387526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, 388526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 389526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, 390526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, 391526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 392526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, 393526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, 394526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 395526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, 396526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, 397526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, 398526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A, 399526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, 400526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 401526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, 402526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, 403526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, 404526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C, 405526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, 406526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, 407526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F, 408526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, 409526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, 410526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5, 411526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, 412526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D, 413526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xAD, 0x33, 0x17, 0x0D, 0x04, 0x50, 0x7A, 0x33, 414526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64, 415526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, 416526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x8A, 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D, 417526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7, 418526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7, 419526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1E, 0x8C, 0x94, 0xE0, 0x4A, 0x25, 0x61, 0x9D, 420526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B, 421526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64, 422526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xD8, 0x76, 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64, 423526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, 424526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C, 425526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, 0x46, 0xE2, 426526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31, 427526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E, 428526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x4B, 0x82, 0xD1, 0x20, 0xA9, 0x21, 0x08, 0x01, 429526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1A, 0x72, 0x3C, 0x12, 0xA7, 0x87, 0xE6, 0xD7, 430526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x88, 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26, 431526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x99, 0xC3, 0x27, 0x18, 0x6A, 0xF4, 0xE2, 0x3C, 432526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, 0x0B, 0xDA, 433526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x25, 0x83, 0xE9, 0xCA, 0x2A, 0xD4, 0x4C, 0xE8, 434526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xDB, 0xBB, 0xC2, 0xDB, 0x04, 0xDE, 0x8E, 0xF9, 435526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x2E, 0x8E, 0xFC, 0x14, 0x1F, 0xBE, 0xCA, 0xA6, 436526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x28, 0x7C, 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D, 437526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x99, 0xB2, 0x96, 0x4F, 0xA0, 0x90, 0xC3, 0xA2, 438526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, 0xED, 439526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, 0xD7, 0xAF, 440526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xB8, 0x1B, 0xDD, 0x76, 0x21, 0x70, 0x48, 0x1C, 441526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xD0, 0x06, 0x91, 0x27, 0xD5, 0xB0, 0x5A, 0xA9, 442526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x93, 0xB4, 0xEA, 0x98, 0x8D, 0x8F, 0xDD, 0xC1, 443526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x86, 0xFF, 0xB7, 0xDC, 0x90, 0xA6, 0xC0, 0x8F, 444526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x4D, 0xF4, 0x35, 0xC9, 0x34, 0x02, 0x84, 0x92, 445526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x36, 0xC3, 0xFA, 0xB4, 0xD2, 0x7C, 0x70, 0x26, 446526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC1, 0xD4, 0xDC, 0xB2, 0x60, 0x26, 0x46, 0xDE, 447526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC9, 0x75, 0x1E, 0x76, 0x3D, 0xBA, 0x37, 0xBD, 448526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF8, 0xFF, 0x94, 0x06, 0xAD, 0x9E, 0x53, 0x0E, 449526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xE5, 0xDB, 0x38, 0x2F, 0x41, 0x30, 0x01, 0xAE, 450526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xB0, 0x6A, 0x53, 0xED, 0x90, 0x27, 0xD8, 0x31, 451526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x17, 0x97, 0x27, 0xB0, 0x86, 0x5A, 0x89, 0x18, 452526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xDA, 0x3E, 0xDB, 0xEB, 0xCF, 0x9B, 0x14, 0xED, 453526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x44, 0xCE, 0x6C, 0xBA, 0xCE, 0xD4, 0xBB, 0x1B, 454526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xDB, 0x7F, 0x14, 0x47, 0xE6, 0xCC, 0x25, 0x4B, 455526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x33, 0x20, 0x51, 0x51, 0x2B, 0xD7, 0xAF, 0x42, 456526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x6F, 0xB8, 0xF4, 0x01, 0x37, 0x8C, 0xD2, 0xBF, 457526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x59, 0x83, 0xCA, 0x01, 0xC6, 0x4B, 0x92, 0xEC, 458526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF0, 0x32, 0xEA, 0x15, 0xD1, 0x72, 0x1D, 0x03, 459526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF4, 0x82, 0xD7, 0xCE, 0x6E, 0x74, 0xFE, 0xF6, 460526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xD5, 0x5E, 0x70, 0x2F, 0x46, 0x98, 0x0C, 0x82, 461526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xB5, 0xA8, 0x40, 0x31, 0x90, 0x0B, 0x1C, 0x9E, 462526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x59, 0xE7, 0xC9, 0x7F, 0xBE, 0xC7, 0xE8, 0xF3, 463526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x23, 0xA9, 0x7A, 0x7E, 0x36, 0xCC, 0x88, 0xBE, 464526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x0F, 0x1D, 0x45, 0xB7, 0xFF, 0x58, 0x5A, 0xC5, 465526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x4B, 0xD4, 0x07, 0xB2, 0x2B, 0x41, 0x54, 0xAA, 466526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xCC, 0x8F, 0x6D, 0x7E, 0xBF, 0x48, 0xE1, 0xD8, 467526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x14, 0xCC, 0x5E, 0xD2, 0x0F, 0x80, 0x37, 0xE0, 468526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xA7, 0x97, 0x15, 0xEE, 0xF2, 0x9B, 0xE3, 0x28, 469526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x06, 0xA1, 0xD5, 0x8B, 0xB7, 0xC5, 0xDA, 0x76, 470526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF5, 0x50, 0xAA, 0x3D, 0x8A, 0x1F, 0xBF, 0xF0, 471526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xEB, 0x19, 0xCC, 0xB1, 0xA3, 0x13, 0xD5, 0x5C, 472526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xDA, 0x56, 0xC9, 0xEC, 0x2E, 0xF2, 0x96, 0x32, 473526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x38, 0x7F, 0xE8, 0xD7, 0x6E, 0x3C, 0x04, 0x68, 474526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x04, 0x3E, 0x8F, 0x66, 0x3F, 0x48, 0x60, 0xEE, 475526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x12, 0xBF, 0x2D, 0x5B, 0x0B, 0x74, 0x74, 0xD6, 476526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xE6, 0x94, 0xF9, 0x1E, 0x6D, 0xBE, 0x11, 0x59, 477526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x74, 0xA3, 0x92, 0x6F, 0x12, 0xFE, 0xE5, 0xE4, 478526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x38, 0x77, 0x7C, 0xB6, 0xA9, 0x32, 0xDF, 0x8C, 479526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xD8, 0xBE, 0xC4, 0xD0, 0x73, 0xB9, 0x31, 0xBA, 480526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x3B, 0xC8, 0x32, 0xB6, 0x8D, 0x9D, 0xD3, 0x00, 481526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x74, 0x1F, 0xA7, 0xBF, 0x8A, 0xFC, 0x47, 0xED, 482526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x25, 0x76, 0xF6, 0x93, 0x6B, 0xA4, 0x24, 0x66, 483526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x3A, 0xAB, 0x63, 0x9C, 0x5A, 0xE4, 0xF5, 0x68, 484526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x34, 0x23, 0xB4, 0x74, 0x2B, 0xF1, 0xC9, 0x78, 485526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x23, 0x8F, 0x16, 0xCB, 0xE3, 0x9D, 0x65, 0x2D, 486526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xE3, 0xFD, 0xB8, 0xBE, 0xFC, 0x84, 0x8A, 0xD9, 487526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x22, 0x22, 0x2E, 0x04, 0xA4, 0x03, 0x7C, 0x07, 488526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x13, 0xEB, 0x57, 0xA8, 0x1A, 0x23, 0xF0, 0xC7, 489526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x34, 0x73, 0xFC, 0x64, 0x6C, 0xEA, 0x30, 0x6B, 490526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x4B, 0xCB, 0xC8, 0x86, 0x2F, 0x83, 0x85, 0xDD, 491526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xFA, 0x9D, 0x4B, 0x7F, 0xA2, 0xC0, 0x87, 0xE8, 492526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x79, 0x68, 0x33, 0x03, 0xED, 0x5B, 0xDD, 0x3A, 493526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x06, 0x2B, 0x3C, 0xF5, 0xB3, 0xA2, 0x78, 0xA6, 494526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x6D, 0x2A, 0x13, 0xF8, 0x3F, 0x44, 0xF8, 0x2D, 495526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xDF, 0x31, 0x0E, 0xE0, 0x74, 0xAB, 0x6A, 0x36, 496526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x45, 0x97, 0xE8, 0x99, 0xA0, 0x25, 0x5D, 0xC1, 497526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x64, 0xF3, 0x1C, 0xC5, 0x08, 0x46, 0x85, 0x1D, 498526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xF9, 0xAB, 0x48, 0x19, 0x5D, 0xED, 0x7E, 0xA1, 499526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xB1, 0xD5, 0x10, 0xBD, 0x7E, 0xE7, 0x4D, 0x73, 500526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xFA, 0xF3, 0x6B, 0xC3, 0x1E, 0xCF, 0xA2, 0x68, 501526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x35, 0x90, 0x46, 0xF4, 0xEB, 0x87, 0x9F, 0x92, 502526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x40, 0x09, 0x43, 0x8B, 0x48, 0x1C, 0x6C, 0xD7, 503526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x88, 0x9A, 0x00, 0x2E, 0xD5, 0xEE, 0x38, 0x2B, 504526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC9, 0x19, 0x0D, 0xA6, 0xFC, 0x02, 0x6E, 0x47, 505526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x95, 0x58, 0xE4, 0x47, 0x56, 0x77, 0xE9, 0xAA, 506526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x9E, 0x30, 0x50, 0xE2, 0x76, 0x56, 0x94, 0xDF, 507526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xC8, 0x1F, 0x56, 0xE8, 0x80, 0xB9, 0x6E, 0x71, 508526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0x60, 0xC9, 0x80, 0xDD, 0x98, 0xED, 0xD3, 0xDF, 509526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF 510526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}; 511526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 512dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt#endif /* ALL_DH_GROUPS */ 513dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt 514526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 515526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define DH_GROUP(id) \ 516526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{ id, dh_group ## id ## _generator, sizeof(dh_group ## id ## _generator), \ 517526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtdh_group ## id ## _prime, sizeof(dh_group ## id ## _prime) } 518526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 519526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 520526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstatic struct dh_group dh_groups[] = { 521dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt DH_GROUP(5), 522dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt#ifdef ALL_DH_GROUPS 523526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt DH_GROUP(1), 524526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt DH_GROUP(2), 525526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt DH_GROUP(14), 526526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt DH_GROUP(15), 527526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt DH_GROUP(16), 528526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt DH_GROUP(17), 529526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt DH_GROUP(18) 530dde787cc314cd04caa4ea5f031cc8a02495ca513Dmitry Shmidt#endif /* ALL_DH_GROUPS */ 531526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}; 532526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 533526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt#define NUM_DH_GROUPS (sizeof(dh_groups) / sizeof(dh_groups[0])) 534526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 535526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 536526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtconst struct dh_group * dh_groups_get(int id) 537526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{ 538526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt size_t i; 539526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 540526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt for (i = 0; i < NUM_DH_GROUPS; i++) { 541526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (dh_groups[i].id == id) 542526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return &dh_groups[i]; 543526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } 544526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return NULL; 545526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt} 546526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 547526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 548526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/** 549526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * dh_init - Initialize Diffie-Hellman handshake 550526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * @dh: Selected Diffie-Hellman group 551526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * @priv: Pointer for returning Diffie-Hellman private key 552526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Returns: Diffie-Hellman public value 553526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 554526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstruct wpabuf * dh_init(const struct dh_group *dh, struct wpabuf **priv) 555526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{ 556526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt struct wpabuf *pv; 557526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt size_t pv_len; 558526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 559526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (dh == NULL) 560526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return NULL; 561526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 562526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpabuf_free(*priv); 563526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *priv = wpabuf_alloc(dh->prime_len); 564526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (*priv == NULL) 565526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return NULL; 566526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 567526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (os_get_random(wpabuf_put(*priv, dh->prime_len), dh->prime_len)) { 568526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpabuf_free(*priv); 569526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *priv = NULL; 570526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return NULL; 571526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } 572526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 573526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (os_memcmp(wpabuf_head(*priv), dh->prime, dh->prime_len) > 0) { 574526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt /* Make sure private value is smaller than prime */ 575526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *(wpabuf_mhead_u8(*priv)) = 0; 576526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } 577526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpa_hexdump_buf_key(MSG_DEBUG, "DH: private value", *priv); 578526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 579526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt pv_len = dh->prime_len; 580526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt pv = wpabuf_alloc(pv_len); 581526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (pv == NULL) 582526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return NULL; 583526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (crypto_mod_exp(dh->generator, dh->generator_len, 584526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpabuf_head(*priv), wpabuf_len(*priv), 585526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt dh->prime, dh->prime_len, wpabuf_mhead(pv), 586526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt &pv_len) < 0) { 587526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpabuf_free(pv); 588526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpa_printf(MSG_INFO, "DH: crypto_mod_exp failed"); 589526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return NULL; 590526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } 591526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpabuf_put(pv, pv_len); 592526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpa_hexdump_buf(MSG_DEBUG, "DH: public value", pv); 593526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 594526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return pv; 595526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt} 596526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 597526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 598526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/** 599526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * dh_derive_shared - Derive shared Diffie-Hellman key 600526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * @peer_public: Diffie-Hellman public value from peer 601526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * @own_private: Diffie-Hellman private key from dh_init() 602526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * @dh: Selected Diffie-Hellman group 603526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Returns: Diffie-Hellman shared key 604526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */ 605526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtstruct wpabuf * dh_derive_shared(const struct wpabuf *peer_public, 606526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt const struct wpabuf *own_private, 607526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt const struct dh_group *dh) 608526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt{ 609526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt struct wpabuf *shared; 610526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt size_t shared_len; 611526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 612526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (dh == NULL || peer_public == NULL || own_private == NULL) 613526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return NULL; 614526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 615526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt shared_len = dh->prime_len; 616526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt shared = wpabuf_alloc(shared_len); 617526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (shared == NULL) 618526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return NULL; 619526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt if (crypto_mod_exp(wpabuf_head(peer_public), wpabuf_len(peer_public), 620526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpabuf_head(own_private), wpabuf_len(own_private), 621526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt dh->prime, dh->prime_len, 622526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpabuf_put(shared, shared_len), &shared_len) < 0) { 623526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpabuf_free(shared); 624526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpa_printf(MSG_INFO, "DH: crypto_mod_exp failed"); 625526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return NULL; 626526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt } 627526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt wpa_hexdump_buf_key(MSG_DEBUG, "DH: shared key", shared); 628526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt 629526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt return shared; 630526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt} 631