@@ -35,13 +35,12 @@ return 1 } gen_dh_params_fallback() { cat << \_EOF_ -DH *get_dh2048() - { - static unsigned char dhp_2048[]={ +DH *get_dh2048(void) { + static unsigned char dhp_2048[] = { 0xC1,0x51,0x58,0x69,0xFB,0xE8,0x6C,0x47,0x2B,0x86,0x61,0x4F, 0x20,0x2E,0xD3,0xFC,0x19,0xEE,0xB8,0xF3,0x35,0x7D,0xBA,0x86, 0x2A,0xC3,0xC8,0x6E,0xF4,0x99,0x75,0x65,0xD3,0x7A,0x9E,0xDF, 0xD4,0x1F,0x88,0xE3,0x17,0xFC,0xA1,0xED,0xA2,0xB6,0x77,0x84, 0xAA,0x08,0xF2,0x97,0x59,0x7A,0xA0,0x03,0x0D,0x3E,0x7E,0x6D, @@ -60,29 +59,40 @@ 0x09,0x8F,0xBB,0x8E,0xA0,0xD0,0x96,0xAC,0x30,0x20,0x39,0x3B, 0x8C,0x92,0x65,0x37,0x0A,0x8F,0xEC,0x72,0x8B,0x61,0x7D,0x62, 0x24,0x54,0xE9,0x1D,0x01,0x68,0x89,0xC4,0x7B,0x3C,0x48,0x62, 0x9B,0x83,0x11,0x3A,0x0B,0x0D,0xEF,0x5A,0xE4,0x7A,0xA0,0x69, 0xF4,0x54,0xB5,0x5B, - }; - static unsigned char dhg_2048[]={ + }; + static unsigned char dhg_2048[] = { 0x02, - }; + }; + DH *dh = DH_new();; - BIGNUM *dhp_bn, *dhg_bn; - - if (dh == NULL) - return NULL; - dhp_bn = BN_bin2bn(dhp_2048, sizeof (dhp_2048), NULL); - dhg_bn = BN_bin2bn(dhg_2048, sizeof (dhg_2048), NULL); - if (dhp_bn == NULL || dhg_bn == NULL - || !DH_set0_pqg(dh, dhp_bn, NULL, dhg_bn)) { - DH_free(dh); - BN_free(dhp_bn); - BN_free(dhg_bn); - return NULL; - } - return dh; + BIGNUM *dhp_bn, *dhg_bn; + + if (dh == NULL) { + return NULL; + } + + dhp_bn = BN_bin2bn(dhp_2048, sizeof (dhp_2048), NULL); + dhg_bn = BN_bin2bn(dhg_2048, sizeof (dhg_2048), NULL); + +#if OPENSSL_VERSION_NUMBER < 0x10100000L + dh->p = dhp_bn; + dh->g = dhg_bn; + + if (dhp_bn == NULL || dhg_bn == NULL) { +#else + if (dhp_bn == NULL || dhg_bn == NULL || !DH_set0_pqg(dh, dhp_bn, NULL, dhg_bn)) { +#endif + DH_free(dh); + BN_free(dhp_bn); + BN_free(dhg_bn); + return(NULL); + } + + return(dh); } _EOF_ } # Enable support for giving the same DH params each time