Funny, I'm running with 4.9.0r0 since yesterday. Diff below.
My diff includes an additional diff, since coturn moves to
openssl/{decoder,param_build}.h, which isn't supported by LibreSSL. I
discussed this with tb@, and we came to the conclusion that just
reintroducing the old DH-based code is the easiest way forward.

Some comments on your diff inline. Apart from those, there's quite
a bit of moving parts. Anything relevant between your diff and mine
that I might have overlooked?

martijn@

On 3/5/26 12:31 PM, Stuart Henderson wrote:
> if anyone's using this, can you test this update/cleanup please?
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/telephony/coturn/Makefile,v
> diff -u -p -r1.20 Makefile
> --- Makefile  14 Jan 2025 15:07:27 -0000      1.20
> +++ Makefile  5 Mar 2026 11:30:24 -0000
> @@ -1,13 +1,9 @@
>  COMMENT =    coturn STUN/TURN server
>  
> -V =          4.6.3-r0
>  GH_ACCOUNT = coturn
>  GH_PROJECT = coturn
> -GH_TAGNAME = docker/${V}
> -DISTNAME =   turnserver-${V:S/-r/pl/}
> -
> -COMPILER =   base-clang ports-gcc
> -COMPILER_LANGS = c
> +GH_TAGNAME = 4.8.0
> +PKGNAME =    turnserver-${GH_TAGNAME}

Last time we chose to go with the r* versions, since they also add code
changes in there. I don't have a hard preference for one of the other,
but considering our previous choice is it worth swapping again?
>  
>  CATEGORIES = telephony
>  
> @@ -15,27 +11,33 @@ CATEGORIES =      telephony
>  PERMIT_PACKAGE =     Yes
>  
>  WANTLIB += c crypto event_core event_extra event_openssl event_pthreads
> -WANTLIB += hiredis intl mariadb pq pthread sqlite3 ssl m z
> +WANTLIB += hiredis mariadb pq pthread sqlite3 ssl
> +
> +COMPILER =   base-clang ports-gcc
> +COMPILER_LANGS = c
>  
> -LIB_DEPENDS =                databases/mariadb \
> -                     databases/postgresql \
> -                     databases/sqlite3 \
> -                     devel/gettext,-runtime \
> -                     devel/libevent2 \
> -                     databases/libhiredis
> -
> -CONFIGURE_STYLE =    simple
> -CONFIGURE_ARGS =     --localstatedir='${LOCALSTATEDIR}'
> -# There is no port for MongoDB development libraries and/or headers
> -CONFIGURE_ENV =              TURN_NO_MONGO=1 \
> -                     TURN_NO_PROMETHEUS=1 \
> -                     TURN_NO_SYSTEMD=1
> -# Don't pick up devel/pkgconf
> -CONFIGURE_ENV +=     PKGCONFIG="pkg-config"
> +MODULES =    devel/cmake

Any particular reason to change build environment?
> +
> +LIB_DEPENDS =        databases/mariadb \
> +             databases/postgresql \
> +             databases/sqlite3 \
> +             devel/libevent2 \
> +             databases/libhiredis
>  
>  post-install:
> -     rm -rf ${PREFIX}/etc
> -     mv ${WRKINST}${LOCALSTATEDIR}/db/turndb \
> +     rm -rf ${PREFIX}/etc \
> +             ${PREFIX}/share/examples/turnserver/ca \
> +             ${PREFIX}/share/examples/turnserver/run*.sh
> +     mv ${PREFIX}/share/examples/turnserver/var/db/turndb \
>               ${PREFIX}/share/examples/turnserver
> +     rmdir ${PREFIX}/share/examples/turnserver/var{/db,}
> +     chmod +x ${PREFIX}/bin/* # huh?! not installed as executable...
> +
> +NO_TEST =    Yes
> +# there are tests, but hitting "bind: Address already in use"
> +#do-test:
> +#    ln -fs ${WRKBUILD} ${WRKSRC}/build
> +#    cd ${WRKSRC}/examples; sh run_tests.sh
> +#    cd ${WRKSRC}/examples; sh run_tests_conf.sh
>  
>  .include <bsd.port.mk>
> Index: distinfo
> ===================================================================
> RCS file: /cvs/ports/telephony/coturn/distinfo,v
> diff -u -p -r1.6 distinfo
> --- distinfo  16 Dec 2024 13:14:51 -0000      1.6
> +++ distinfo  5 Mar 2026 11:30:24 -0000
> @@ -1,2 +1,2 @@
> -SHA256 (turnserver-4.6.3pl0.tar.gz) = 
> yIFrwM9YQT5Y6r8EDtTCHp8kHKk6cEVja1Dow0BsTrk=
> -SIZE (turnserver-4.6.3pl0.tar.gz) = 535329
> +SHA256 (coturn-4.8.0.tar.gz) = o7MCtSxUBaJZX1kDbJX8NnbmQENrpn4/Yhk37GSLHqU=
> +SIZE (coturn-4.8.0.tar.gz) = 544737
> Index: patches/patch-CMakeLists_txt
> ===================================================================
> RCS file: patches/patch-CMakeLists_txt
> diff -N patches/patch-CMakeLists_txt
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-CMakeLists_txt      5 Mar 2026 11:30:24 -0000
> @@ -0,0 +1,34 @@
> +Index: CMakeLists.txt
> +--- CMakeLists.txt.orig
> ++++ CMakeLists.txt
> +@@ -147,7 +147,7 @@ install(DIRECTORY turndb/
> +     DESTINATION share/turnserver
> +         COMPONENT Runtime)
> + install(DIRECTORY turndb/
> +-    DESTINATION doc/turnserver
> ++    DESTINATION share/doc/turnserver
> +         COMPONENT Runtime)
> + install(FILES
> +             LICENSE
> +@@ -156,7 +156,7 @@ install(FILES
> +             README.turnutils
> +             INSTALL
> +             postinstall.txt
> +-        DESTINATION doc/turnserver
> ++        DESTINATION share/doc/turnserver
> +             COMPONENT Runtime)
> + install(FILES examples/etc/turnserver.conf
> +     DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}
> +@@ -164,9 +164,9 @@ install(FILES examples/etc/turnserver.conf
> +     RENAME turnserver.conf.default
> +     )
> + install(DIRECTORY
> +-        examples
> +-    DESTINATION share
> +-        COMPONENT examples
> ++        examples/
> ++    DESTINATION share/examples/turnserver
> ++        COMPONENT turnserver
> +     )
> + include(cmake/CMakeCPack.cmake)
> + 
> Index: patches/patch-src_apps_common_apputils_c
> ===================================================================
> RCS file: 
> /cvs/ports/telephony/coturn/patches/patch-src_apps_common_apputils_c,v
> diff -u -p -r1.1 patch-src_apps_common_apputils_c
> --- patches/patch-src_apps_common_apputils_c  16 Dec 2024 13:14:51 -0000      
> 1.1
> +++ patches/patch-src_apps_common_apputils_c  5 Mar 2026 11:30:24 -0000
> @@ -1,7 +1,7 @@
>  Index: src/apps/common/apputils.c
>  --- src/apps/common/apputils.c.orig
>  +++ src/apps/common/apputils.c
> -@@ -1179,7 +1179,7 @@ char *find_config_file(const char *config_file) {
> +@@ -1190,7 +1190,7 @@ char *find_config_file(const char *config_file) {
>   /////////////////// SYS SETTINGS ///////////////////////
>   
>   void ignore_sigpipe(void) {
> Index: patches/patch-src_apps_relay_CMakeLists_txt
> ===================================================================
> RCS file: patches/patch-src_apps_relay_CMakeLists_txt
> diff -N patches/patch-src_apps_relay_CMakeLists_txt
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-src_apps_relay_CMakeLists_txt       5 Mar 2026 11:30:24 
> -0000
> @@ -0,0 +1,19 @@
> +Index: src/apps/relay/CMakeLists.txt
> +--- src/apps/relay/CMakeLists.txt.orig
> ++++ src/apps/relay/CMakeLists.txt
> +@@ -188,12 +188,8 @@ if(WIN32)
> +     DESTINATION "${CMAKE_INSTALL_BINDIR}"
> +             COMPONENT Runtime)
> + else()
> +-    add_custom_target(turnadmin ALL
> +-        COMMAND
> +-            ${CMAKE_COMMAND} -E create_symlink 
> $<TARGET_FILE:${PROJECT_NAME}> $<TARGET_FILE_DIR:${PROJECT_NAME}>/turnadmin
> +-        DEPENDS ${PROJECT_NAME})
> +-    INSTALL(FILES $<TARGET_FILE_DIR:${PROJECT_NAME}>/turnadmin
> +-        DESTINATION "${CMAKE_INSTALL_BINDIR}"
> ++    INSTALL(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E 
> create_symlink ${PROJECT_NAME} turnadmin WORKING_DIRECTORY 
> \$ENV{DESTDIR}/${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR})"
> +             COMPONENT Runtime
> +-            )
> ++    )
> + endif()
> ++
> Index: patches/patch-src_apps_relay_mainrelay_c
> ===================================================================
> RCS file: 
> /cvs/ports/telephony/coturn/patches/patch-src_apps_relay_mainrelay_c,v
> diff -u -p -r1.3 patch-src_apps_relay_mainrelay_c
> --- patches/patch-src_apps_relay_mainrelay_c  16 Dec 2024 13:14:51 -0000      
> 1.3
> +++ patches/patch-src_apps_relay_mainrelay_c  5 Mar 2026 11:30:24 -0000
> @@ -3,9 +3,9 @@ Don't create a default pidfile
>  Index: src/apps/relay/mainrelay.c
>  --- src/apps/relay/mainrelay.c.orig
>  +++ src/apps/relay/mainrelay.c
> -@@ -126,7 +126,7 @@ turn_params_t turn_params = {
> +@@ -131,7 +131,7 @@ turn_params_t turn_params = {
>   
> -     0, /* do_not_use_config_file */
> +     false, /* do_not_use_config_file */
>   
>  -    "/var/run/turnserver.pid", /* pidfile */
>  +    "",                        /* pidfile */
> Index: pkg/PLIST
> ===================================================================
> RCS file: /cvs/ports/telephony/coturn/pkg/PLIST,v
> diff -u -p -r1.5 PLIST
> --- pkg/PLIST 8 Nov 2022 11:17:14 -0000       1.5
> +++ pkg/PLIST 5 Mar 2026 11:30:24 -0000
> @@ -1,23 +1,49 @@
>  @newgroup _turnserver:795
>  @newuser _turnserver:795:795::TURN Server user:/var/empty:/sbin/nologin
>  @rcscript ${RCDIR}/turnserver
> -@bin bin/turnadmin
> +bin/turnadmin
>  @bin bin/turnserver
>  @bin bin/turnutils_natdiscovery
>  @bin bin/turnutils_oauth
>  @bin bin/turnutils_peer
> +@bin bin/turnutils_rfc5769check
>  @bin bin/turnutils_stunclient
>  @bin bin/turnutils_uclient
>  include/turn/
> +include/turn/apputils.h
>  include/turn/client/
>  include/turn/client/TurnMsgLib.h
> +include/turn/client/ns_turn_defs.h
>  include/turn/client/ns_turn_ioaddr.h
>  include/turn/client/ns_turn_msg.h
>  include/turn/client/ns_turn_msg_addr.h
>  include/turn/client/ns_turn_msg_defs.h
>  include/turn/client/ns_turn_msg_defs_experimental.h
> -include/turn/ns_turn_defs.h
> +include/turn/ns_turn_openssl.h
> +include/turn/ns_turn_utils.h
> +include/turn/server/
> +include/turn/server/ns_turn_allocation.h
> +include/turn/server/ns_turn_ioalib.h
> +include/turn/server/ns_turn_khash.h
> +include/turn/server/ns_turn_maps.h
> +include/turn/server/ns_turn_maps_rtcp.h
> +include/turn/server/ns_turn_server.h
> +include/turn/server/ns_turn_session.h
> +include/turn/stun_buffer.h
> +lib/cmake/coturn/
> +lib/cmake/coturn/coturnConfig.cmake
> +lib/cmake/coturn/turn_serverConfig${MODCMAKE_BUILD_SUFFIX}
> +lib/cmake/coturn/turn_serverConfig.cmake
> +lib/cmake/coturn/turn_serverConfigVersion.cmake
> +lib/cmake/coturn/turnclientConfig${MODCMAKE_BUILD_SUFFIX}
> +lib/cmake/coturn/turnclientConfig.cmake
> +lib/cmake/coturn/turnclientConfigVersion.cmake
> +lib/cmake/coturn/turncommonConfig${MODCMAKE_BUILD_SUFFIX}
> +lib/cmake/coturn/turncommonConfig.cmake
> +lib/cmake/coturn/turncommonConfigVersion.cmake
> +@static-lib lib/libturn_server.a
>  @static-lib lib/libturnclient.a
> +@static-lib lib/libturncommon.a
>  @man man/man1/coturn.1
>  @man man/man1/turnadmin.1
>  @man man/man1/turnserver.1
> @@ -38,7 +64,11 @@ share/doc/turnserver/schema.mongo.sh
>  share/doc/turnserver/schema.sql
>  share/doc/turnserver/schema.stats.redis
>  share/doc/turnserver/schema.userdb.redis
> +share/doc/turnserver/testmongosetup.sh
> +share/doc/turnserver/testredisdbsetup.sh
> +share/doc/turnserver/testsqldbsetup.sql
>  share/examples/turnserver/
> +share/examples/turnserver/cpu-mem.sh
>  share/examples/turnserver/etc/
>  share/examples/turnserver/etc/cacert.pem
>  share/examples/turnserver/etc/coturn.service
> @@ -106,6 +136,7 @@ share/examples/turnserver/scripts/restap
>  
> share/examples/turnserver/scripts/restapi/secure_relay_secret_with_db_sqlite.sh
>  share/examples/turnserver/scripts/restapi/secure_udp_client_with_secret.sh
>  share/examples/turnserver/scripts/restapi/shared_secret_maintainer.pl
> +share/examples/turnserver/scripts/rfc5769.sh
>  share/examples/turnserver/scripts/selfloadbalance/
>  share/examples/turnserver/scripts/selfloadbalance/secure_dos_attack.sh
>  share/examples/turnserver/scripts/selfloadbalance/secure_relay.sh
> 


diff refs/heads/master refs/heads/coturn/4.9.0
commit - c0ffeeec67cf93452bf5892d2b6e0e11a10066f5
commit + 43a7c459a11797dd46d7af48e6953cfbbaaced76
blob - ef0cbfbc767bf831937c3754b5589a9a6bc9ddcd
blob + 350abbba7e180e4e475f843b59c12e81fbbdc663
--- telephony/coturn/Makefile
+++ telephony/coturn/Makefile
@@ -1,6 +1,6 @@
 COMMENT =      coturn STUN/TURN server
 
-V =            4.6.3-r0
+V =            4.9.0-r0
 GH_ACCOUNT =   coturn
 GH_PROJECT =   coturn
 GH_TAGNAME =   docker/${V}
blob - 93d10c927ffdf908e9b712c49dfca88bf9c3ff38
blob + 44836b10d7f817a45d69ff290db566b46bab7a09
--- telephony/coturn/distinfo
+++ telephony/coturn/distinfo
@@ -1,2 +1,2 @@
-SHA256 (turnserver-4.6.3pl0.tar.gz) = 
yIFrwM9YQT5Y6r8EDtTCHp8kHKk6cEVja1Dow0BsTrk=
-SIZE (turnserver-4.6.3pl0.tar.gz) = 535329
+SHA256 (turnserver-4.9.0pl0.tar.gz) = 
yCqvwI3ynHV2HxTNLTZHkpe7KsA3sKPrtX15uuvz1CQ=
+SIZE (turnserver-4.9.0pl0.tar.gz) = 546458
blob - bac4ba5c6b066fe048f01e0411763a742b1e8c85
blob + 887c28bbbd52c63d6eb6cbee3eebf64f5960011a
--- telephony/coturn/patches/patch-src_apps_common_apputils_c
+++ telephony/coturn/patches/patch-src_apps_common_apputils_c
@@ -1,7 +1,7 @@
 Index: src/apps/common/apputils.c
 --- src/apps/common/apputils.c.orig
 +++ src/apps/common/apputils.c
-@@ -1179,7 +1179,7 @@ char *find_config_file(const char *config_file) {
+@@ -1190,7 +1190,7 @@ char *find_config_file(const char *config_file) {
  /////////////////// SYS SETTINGS ///////////////////////
  
  void ignore_sigpipe(void) {
blob - c79bb29d7dd5a1cd330b7cd76f63c0732a411d5a
blob + 85357b9a0a9fb25f422435d360a77e35d18c17a4
--- telephony/coturn/patches/patch-src_apps_relay_mainrelay_c
+++ telephony/coturn/patches/patch-src_apps_relay_mainrelay_c
@@ -1,14 +1,208 @@
-Don't create a default pidfile
+- Don't create a default pidfile
+- Use the old DH code, since LibreSSL doesn't support OSSL_{DECODER,PARAM}
 
 Index: src/apps/relay/mainrelay.c
 --- src/apps/relay/mainrelay.c.orig
 +++ src/apps/relay/mainrelay.c
-@@ -126,7 +126,7 @@ turn_params_t turn_params = {
+@@ -132,7 +132,7 @@ turn_params_t turn_params = {
  
-     0, /* do_not_use_config_file */
+     false, /* do_not_use_config_file */
  
 -    "/var/run/turnserver.pid", /* pidfile */
 +    "",                        /* pidfile */
      "",                        /* acme_redirect */
  
      ////////////////  Listener server /////////////////
+@@ -3523,7 +3523,7 @@ static void adjust_key_file_names(void) {
+     adjust_key_file_name(turn_params.dh_file, "DH key", 0);
+   }
+ }
+-static EVP_PKEY *get_dh566(void) {
++static DH *get_dh566(void) {
+ 
+   unsigned char dh566_p[] = {0x36, 0x53, 0xA8, 0x9C, 0x3C, 0xF1, 0xD1, 0x1B, 
0x2D, 0xA2, 0x64, 0xDE, 0x59, 0x3B, 0xE3,
+                              0x8C, 0x27, 0x74, 0xC2, 0xBE, 0x9B, 0x6D, 0x56, 
0xE7, 0xDF, 0xFF, 0x67, 0x6A, 0xD2, 0x0C,
+@@ -3537,34 +3537,25 @@ static EVP_PKEY *get_dh566(void) {
+   //  -----END DH PARAMETERS-----
+ 
+   unsigned char dh566_g[] = {0x05};
++  DH *dh;
+ 
+-  BIGNUM *p = BN_bin2bn(dh566_p, sizeof(dh566_p), NULL);
+-  BIGNUM *g = BN_bin2bn(dh566_g, sizeof(dh566_g), NULL);
+-  if (!p || !g) {
+-    BN_free(p);
+-    BN_free(g);
+-    return NULL;
++  if ((dh = DH_new()) == NULL) {
++    return (NULL);
+   }
+-
+-  OSSL_PARAM_BLD *bld = OSSL_PARAM_BLD_new();
+-  OSSL_PARAM_BLD_push_BN(bld, "p", p);
+-  OSSL_PARAM_BLD_push_BN(bld, "g", g);
+-  OSSL_PARAM *params = OSSL_PARAM_BLD_to_param(bld);
+-  OSSL_PARAM_BLD_free(bld);
+-  BN_free(p);
+-  BN_free(g);
+-
+-  EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_from_name(NULL, "DH", NULL);
+-  EVP_PKEY *pkey = NULL;
+-  EVP_PKEY_fromdata_init(pctx);
+-  EVP_PKEY_fromdata(pctx, &pkey, EVP_PKEY_KEY_PARAMETERS, params);
+-  EVP_PKEY_CTX_free(pctx);
+-  OSSL_PARAM_free(params);
+-  return pkey;
++#if OPENSSL_VERSION_NUMBER < 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
++  dh->p = BN_bin2bn(dh566_p, sizeof(dh566_p), NULL);
++  dh->g = BN_bin2bn(dh566_g, sizeof(dh566_g), NULL);
++  if ((dh->p == NULL) || (dh->g == NULL)) {
++    DH_free(dh);
++    return (NULL);
++  }
++#else
++  DH_set0_pqg(dh, BN_bin2bn(dh566_p, sizeof(dh566_p), NULL), NULL, 
BN_bin2bn(dh566_g, sizeof(dh566_g), NULL));
++#endif
++  return (dh);
+ }
++static DH *get_dh1066(void) {
+ 
+-static EVP_PKEY *get_dh1066(void) {
+-
+   unsigned char dh1066_p[] = {0x02, 0x0E, 0x26, 0x6F, 0xAA, 0x9F, 0xA8, 0xE5, 
0x3F, 0x70, 0x88, 0xF1, 0xA9, 0x29, 0xAE,
+                               0x1A, 0x2B, 0xA8, 0x2F, 0xE8, 0xE5, 0x0E, 0x81, 
0x78, 0xD7, 0x12, 0x41, 0xDC, 0xE2, 0xD5,
+                               0x10, 0x6F, 0x8A, 0x35, 0x23, 0xCE, 0x66, 0x93, 
0x67, 0x14, 0xEA, 0x0A, 0x61, 0xD4, 0x43,
+@@ -3582,34 +3573,25 @@ static EVP_PKEY *get_dh1066(void) {
+   //  -----END DH PARAMETERS-----
+ 
+   unsigned char dh1066_g[] = {0x02};
++  DH *dh;
+ 
+-  BIGNUM *p = BN_bin2bn(dh1066_p, sizeof(dh1066_p), NULL);
+-  BIGNUM *g = BN_bin2bn(dh1066_g, sizeof(dh1066_g), NULL);
+-  if (!p || !g) {
+-    BN_free(p);
+-    BN_free(g);
+-    return NULL;
++  if ((dh = DH_new()) == NULL) {
++    return (NULL);
+   }
+-
+-  OSSL_PARAM_BLD *bld = OSSL_PARAM_BLD_new();
+-  OSSL_PARAM_BLD_push_BN(bld, "p", p);
+-  OSSL_PARAM_BLD_push_BN(bld, "g", g);
+-  OSSL_PARAM *params = OSSL_PARAM_BLD_to_param(bld);
+-  OSSL_PARAM_BLD_free(bld);
+-  BN_free(p);
+-  BN_free(g);
+-
+-  EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_from_name(NULL, "DH", NULL);
+-  EVP_PKEY *pkey = NULL;
+-  EVP_PKEY_fromdata_init(pctx);
+-  EVP_PKEY_fromdata(pctx, &pkey, EVP_PKEY_KEY_PARAMETERS, params);
+-  EVP_PKEY_CTX_free(pctx);
+-  OSSL_PARAM_free(params);
+-  return pkey;
++#if OPENSSL_VERSION_NUMBER < 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
++  dh->p = BN_bin2bn(dh1066_p, sizeof(dh1066_p), NULL);
++  dh->g = BN_bin2bn(dh1066_g, sizeof(dh1066_g), NULL);
++  if ((dh->p == NULL) || (dh->g == NULL)) {
++    DH_free(dh);
++    return (NULL);
++  }
++#else
++  DH_set0_pqg(dh, BN_bin2bn(dh1066_p, sizeof(dh1066_p), NULL), NULL, 
BN_bin2bn(dh1066_g, sizeof(dh1066_g), NULL));
++#endif
++  return (dh);
+ }
++static DH *get_dh2066(void) {
+ 
+-static EVP_PKEY *get_dh2066(void) {
+-
+   unsigned char dh2066_p[] = {
+       0x03, 0x31, 0x77, 0x20, 0x58, 0xA6, 0x69, 0xA3, 0x9D, 0x2D, 0x5E, 0xE0, 
0x5C, 0x46, 0x82, 0x0F, 0x9E, 0x80, 0xF0,
+       0x00, 0x2A, 0xF9, 0x0F, 0x62, 0x1F, 0x89, 0xCE, 0x7D, 0x2A, 0xFD, 0xC5, 
0x9A, 0x7C, 0x6A, 0x60, 0x2C, 0xF1, 0xDD,
+@@ -3636,32 +3618,23 @@ static EVP_PKEY *get_dh2066(void) {
+   //  -----END DH PARAMETERS-----
+ 
+   unsigned char dh2066_g[] = {0x05};
++  DH *dh;
+ 
+-  BIGNUM *p = BN_bin2bn(dh2066_p, sizeof(dh2066_p), NULL);
+-  BIGNUM *g = BN_bin2bn(dh2066_g, sizeof(dh2066_g), NULL);
+-  if (!p || !g) {
+-    BN_free(p);
+-    BN_free(g);
+-    return NULL;
++  if ((dh = DH_new()) == NULL) {
++    return (NULL);
+   }
+-
+-  OSSL_PARAM_BLD *bld = OSSL_PARAM_BLD_new();
+-  OSSL_PARAM_BLD_push_BN(bld, "p", p);
+-  OSSL_PARAM_BLD_push_BN(bld, "g", g);
+-  OSSL_PARAM *params = OSSL_PARAM_BLD_to_param(bld);
+-  OSSL_PARAM_BLD_free(bld);
+-  BN_free(p);
+-  BN_free(g);
+-
+-  EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_from_name(NULL, "DH", NULL);
+-  EVP_PKEY *pkey = NULL;
+-  EVP_PKEY_fromdata_init(pctx);
+-  EVP_PKEY_fromdata(pctx, &pkey, EVP_PKEY_KEY_PARAMETERS, params);
+-  EVP_PKEY_CTX_free(pctx);
+-  OSSL_PARAM_free(params);
+-  return pkey;
++#if OPENSSL_VERSION_NUMBER < 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
++  dh->p = BN_bin2bn(dh2066_p, sizeof(dh2066_p), NULL);
++  dh->g = BN_bin2bn(dh2066_g, sizeof(dh2066_g), NULL);
++  if ((dh->p == NULL) || (dh->g == NULL)) {
++    DH_free(dh);
++    return (NULL);
++  }
++#else
++  DH_set0_pqg(dh, BN_bin2bn(dh2066_p, sizeof(dh2066_p), NULL), NULL, 
BN_bin2bn(dh2066_g, sizeof(dh2066_g), NULL));
++#endif
++  return (dh);
+ }
+-
+ static int pem_password_func(char *buf, int size, int rwflag, void *password) 
{
+   UNUSED_ARG(rwflag);
+ 
+@@ -3811,20 +3784,13 @@ static void set_ctx(SSL_CTX **out, const char *protoco
+ 
+   { // DH algorithms:
+ 
+-    EVP_PKEY *dh = NULL;
++    DH *dh = NULL;
+     if (turn_params.dh_file[0]) {
+       FILE *paramfile = fopen(turn_params.dh_file, "r");
+       if (!paramfile) {
+         perror("Cannot open DH file");
+       } else {
+-        OSSL_DECODER_CTX *dctx =
+-            OSSL_DECODER_CTX_new_for_pkey(&dh, "PEM", NULL, "DH", 
EVP_PKEY_KEY_PARAMETERS, NULL, NULL);
+-        if (dctx) {
+-          if (!OSSL_DECODER_from_fp(dctx, paramfile)) {
+-            dh = NULL;
+-          }
+-          OSSL_DECODER_CTX_free(dctx);
+-        }
++        dh = PEM_read_DHparams(paramfile, NULL, NULL, NULL);
+         fclose(paramfile);
+         if (dh) {
+           turn_params.dh_key_size = DH_CUSTOM;
+@@ -3846,11 +3812,11 @@ static void set_ctx(SSL_CTX **out, const char *protoco
+       TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: ERROR: cannot allocate DH 
suite\n", __FUNCTION__);
+       err = 1;
+     } else {
+-      if (1 != SSL_CTX_set0_tmp_dh_pkey(ctx, dh)) {
++      if (1 != SSL_CTX_set_tmp_dh(ctx, dh)) {
+         TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: ERROR: cannot set DH\n", 
__FUNCTION__);
+         err = 1;
+       }
+-      // No EVP_PKEY_free: SSL_CTX_set0_tmp_dh_pkey always takes ownership
++      DH_free(dh);
+     }
+   }
+ 
blob - /dev/null
blob + 31584be71d70fb8144f2bbdbde773438f782f1ac (mode 644)
--- /dev/null
+++ telephony/coturn/patches/patch-src_apps_relay_mainrelay_h
@@ -0,0 +1,13 @@
+Index: src/apps/relay/mainrelay.h
+--- src/apps/relay/mainrelay.h.orig
++++ src/apps/relay/mainrelay.h
+@@ -87,9 +87,7 @@
+ #include "ns_ioalib_impl.h"
+ 
+ #include <openssl/aes.h>
+-#include <openssl/decoder.h>
+ #include <openssl/err.h>
+-#include <openssl/param_build.h>
+ #include <openssl/pem.h>
+ #include <openssl/ssl.h>
+ 
blob - 013057e051989ad133ec83faf7d2889d04a829ec
blob + b702c2d5925873e4189fa9e1a46c693c6c3686ae
--- telephony/coturn/pkg/PLIST
+++ telephony/coturn/pkg/PLIST
@@ -34,10 +34,6 @@ share/doc/turnserver/README.turnadmin
 share/doc/turnserver/README.turnserver
 share/doc/turnserver/README.turnutils
 share/doc/turnserver/postinstall.txt
-share/doc/turnserver/schema.mongo.sh
-share/doc/turnserver/schema.sql
-share/doc/turnserver/schema.stats.redis
-share/doc/turnserver/schema.userdb.redis
 share/examples/turnserver/
 share/examples/turnserver/etc/
 share/examples/turnserver/etc/cacert.pem

Reply via email to