summaryrefslogtreecommitdiff
path: root/security
diff options
context:
space:
mode:
Diffstat (limited to 'security')
-rw-r--r--security/Makefile6
-rw-r--r--security/fwknop/Makefile2
-rw-r--r--security/gpa/Makefile1
-rw-r--r--security/gpa/files/patch-src_gpacontext.c70
-rw-r--r--security/gpa/files/patch-src_gpacontext.h13
-rw-r--r--security/gpgme-cpp/Makefile11
-rw-r--r--security/gpgme-qt/Makefile13
-rw-r--r--security/gpgme/Makefile105
-rw-r--r--security/gpgme/distinfo6
-rw-r--r--security/gpgme/files/patch-configure23
-rw-r--r--security/gpgme/files/patch-lang_python_Makefile.in29
-rw-r--r--security/gpgme/pkg-plist4
-rw-r--r--security/gpgmepp/Makefile18
-rw-r--r--security/gpgmepp/distinfo3
-rw-r--r--security/gpgmepp/pkg-descr2
-rw-r--r--security/gpgmepp/pkg-plist (renamed from security/gpgme-cpp/pkg-plist)10
-rw-r--r--security/gvm-libs/Makefile1
-rw-r--r--security/gvmd/Makefile1
-rw-r--r--security/kleopatra/Makefile10
-rw-r--r--security/kleopatra/distinfo8
-rw-r--r--security/libcryptui/Makefile6
-rw-r--r--security/libkleo/Makefile5
-rw-r--r--security/openvas/Makefile1
-rw-r--r--security/p5-Crypt-GpgME/Makefile2
-rw-r--r--security/p5-Crypt-GpgME/files/patch-lib_Crypt_GpgME.pm16
-rw-r--r--security/p5-Crypt-GpgME/files/patch-perl__glue_perl__gpgme.c42
-rw-r--r--security/p5-Crypt-GpgME/files/patch-perl__glue_perl__gpgme.h14
-rw-r--r--security/p5-Crypt-GpgME/files/patch-xs_GpgME.xs35
-rw-r--r--security/pecl-gnupg/Makefile1
-rw-r--r--security/pecl-gnupg/files/patch-gnupg.c41
-rw-r--r--security/pinentry/Makefile2
-rw-r--r--security/plasma6-kscreenlocker/distinfo6
-rw-r--r--security/plasma6-ksshaskpass/distinfo6
-rw-r--r--security/plasma6-kwallet-pam/Makefile1
-rw-r--r--security/plasma6-kwallet-pam/distinfo6
-rw-r--r--security/py-gpg/Makefile43
-rw-r--r--security/py-gpg/distinfo3
-rw-r--r--security/py-gpg/files/patch-configure.ac19
-rw-r--r--security/py-gpg/files/patch-pyproject.toml13
-rw-r--r--security/py-gpg/pkg-descr3
-rw-r--r--security/py-gpgme/Makefile16
-rw-r--r--security/py-gpgme/pkg-plist89
-rw-r--r--security/qgpgme/Makefile55
-rw-r--r--security/qgpgme/distinfo3
-rw-r--r--security/qgpgme/pkg-descr15
-rw-r--r--security/qgpgme/pkg-plist (renamed from security/gpgme-qt/pkg-plist)8
-rw-r--r--security/rubygem-gpgme/Makefile2
-rw-r--r--security/rubygem-gpgme/files/patch-ext_gpgme_extconf.rb (renamed from security/rubygem-gpgme/files/patch-ext-gpgme-extconf.rb)6
-rw-r--r--security/rubygem-gpgme/files/patch-ext_gpgme_gpgme__n.c59
-rw-r--r--security/rubygem-gpgme/files/patch-lib_gpgme_constants.rb75
-rw-r--r--security/seahorse/Makefile5
-rw-r--r--security/seahorse/distinfo4
-rw-r--r--security/tscli/Makefile3
-rw-r--r--security/tscli/distinfo10
-rw-r--r--security/vuls/Makefile6
-rw-r--r--security/vuls/distinfo10
-rw-r--r--security/vuls/files/patch-vendor_gorm.io_gorm_internal_stmt_store_stmt_store.go29
-rw-r--r--security/vuxml/vuln/2025.xml4
58 files changed, 637 insertions, 363 deletions
diff --git a/security/Makefile b/security/Makefile
index ddae4dbefef7..46547e92bf04 100644
--- a/security/Makefile
+++ b/security/Makefile
@@ -204,8 +204,7 @@
SUBDIR += gpg-tui
SUBDIR += gpgdir
SUBDIR += gpgme
- SUBDIR += gpgme-cpp
- SUBDIR += gpgme-qt
+ SUBDIR += gpgmepp
SUBDIR += gsa
SUBDIR += gsad
SUBDIR += gsasl
@@ -953,7 +952,7 @@
SUBDIR += py-google-auth
SUBDIR += py-google-auth-httplib2
SUBDIR += py-google-auth-oauthlib
- SUBDIR += py-gpgme
+ SUBDIR += py-gpg
SUBDIR += py-gpsoauth
SUBDIR += py-greenbone-feed-sync
SUBDIR += py-gssapi
@@ -1101,6 +1100,7 @@
SUBDIR += py-zkg
SUBDIR += py-zxcvbn
SUBDIR += pygost
+ SUBDIR += qgpgme
SUBDIR += qt-sudo
SUBDIR += qtkeychain
SUBDIR += quantis-kmod
diff --git a/security/fwknop/Makefile b/security/fwknop/Makefile
index 9fafdb258370..31af0953db65 100644
--- a/security/fwknop/Makefile
+++ b/security/fwknop/Makefile
@@ -1,6 +1,6 @@
PORTNAME= fwknop
PORTVERSION= 2.6.10
-PORTREVISION= 4
+PORTREVISION= 5
CATEGORIES= security
MASTER_SITES= http://www.cipherdyne.org/fwknop/download/
diff --git a/security/gpa/Makefile b/security/gpa/Makefile
index cbd06e27b898..8be53eac84c7 100644
--- a/security/gpa/Makefile
+++ b/security/gpa/Makefile
@@ -1,5 +1,6 @@
PORTNAME= gpa
PORTVERSION= 0.11.0
+PORTREVISION= 1
CATEGORIES= security
MASTER_SITES= GNUPG/gpa
diff --git a/security/gpa/files/patch-src_gpacontext.c b/security/gpa/files/patch-src_gpacontext.c
new file mode 100644
index 000000000000..6b41a8f4cc80
--- /dev/null
+++ b/security/gpa/files/patch-src_gpacontext.c
@@ -0,0 +1,70 @@
+The trustlist feature, which only worked for a short period in 2003, was
+removed in GpgME 2.0.0.
+
+--- src/gpacontext.c.orig 2022-11-14 07:04:19 UTC
++++ src/gpacontext.c
+@@ -38,8 +38,6 @@ static void gpa_context_next_key (GpaContext *context,
+ static void gpa_context_start (GpaContext *context);
+ static void gpa_context_done (GpaContext *context, gpg_error_t err);
+ static void gpa_context_next_key (GpaContext *context, gpgme_key_t key);
+-static void gpa_context_next_trust_item (GpaContext *context,
+- gpgme_trust_item_t item);
+ static void gpa_context_progress (GpaContext *context, int current, int total);
+
+ /* The GPGME I/O callbacks */
+@@ -65,7 +63,6 @@ enum
+ START,
+ DONE,
+ NEXT_KEY,
+- NEXT_TRUST_ITEM,
+ PROGRESS,
+ LAST_SIGNAL
+ };
+@@ -113,7 +110,6 @@ gpa_context_class_init (GpaContextClass *klass)
+ klass->start = gpa_context_start;
+ klass->done = gpa_context_done;
+ klass->next_key = gpa_context_next_key;
+- klass->next_trust_item = gpa_context_next_trust_item;
+ klass->progress = gpa_context_progress;
+
+ /* Signals */
+@@ -143,15 +139,6 @@ gpa_context_class_init (GpaContextClass *klass)
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1,
+ G_TYPE_POINTER);
+- signals[NEXT_TRUST_ITEM] =
+- g_signal_new ("next_trust_item",
+- G_TYPE_FROM_CLASS (object_class),
+- G_SIGNAL_RUN_FIRST,
+- G_STRUCT_OFFSET (GpaContextClass, next_trust_item),
+- NULL, NULL,
+- g_cclosure_marshal_VOID__POINTER,
+- G_TYPE_NONE, 1,
+- G_TYPE_POINTER);
+ signals[PROGRESS] =
+ g_signal_new ("progress",
+ G_TYPE_FROM_CLASS (object_class),
+@@ -496,10 +483,6 @@ gpa_context_event_cb (void *data, gpgme_event_io_t typ
+ case GPGME_EVENT_NEXT_KEY:
+ g_signal_emit (context, signals[NEXT_KEY], 0, type_data);
+ break;
+- case GPGME_EVENT_NEXT_TRUSTITEM:
+- g_signal_emit (context, signals[NEXT_TRUST_ITEM], 0,
+- type_data);
+- break;
+ default:
+ /* Ignore unsupported event types */
+ break;
+@@ -527,12 +510,6 @@ gpa_context_next_key (GpaContext *context, gpgme_key_t
+
+ static void
+ gpa_context_next_key (GpaContext *context, gpgme_key_t key)
+-{
+- /* Do nothing yet */
+-}
+-
+-static void
+-gpa_context_next_trust_item (GpaContext *context, gpgme_trust_item_t item)
+ {
+ /* Do nothing yet */
+ }
diff --git a/security/gpa/files/patch-src_gpacontext.h b/security/gpa/files/patch-src_gpacontext.h
new file mode 100644
index 000000000000..7b7d6eba5dc6
--- /dev/null
+++ b/security/gpa/files/patch-src_gpacontext.h
@@ -0,0 +1,13 @@
+The trustlist feature, which only worked for a short period in 2003, was
+removed in GpgME 2.0.0.
+
+--- src/gpacontext.h.orig 2018-10-16 19:58:08 UTC
++++ src/gpacontext.h
+@@ -63,7 +63,6 @@ struct _GpaContextClass {
+ void (*start) (GpaContext *context);
+ void (*done) (GpaContext *context, gpg_error_t err);
+ void (*next_key) (GpaContext *context, gpgme_key_t key);
+- void (*next_trust_item) (GpaContext *context, gpgme_trust_item_t item);
+ void (*progress) (GpaContext *context, int current, int total);
+ };
+
diff --git a/security/gpgme-cpp/Makefile b/security/gpgme-cpp/Makefile
deleted file mode 100644
index e24db4919c02..000000000000
--- a/security/gpgme-cpp/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-PORTREVISION= 0
-PKGNAMESUFFIX= -${_GPGME_BINDING}
-
-COMMENT= Gpgme C++ bindings
-
-MASTERDIR= ${.CURDIR:H:H}/security/gpgme
-PLIST= ${.CURDIR}/pkg-plist
-
-_GPGME_BINDING= cpp
-
-.include "${MASTERDIR}/Makefile"
diff --git a/security/gpgme-qt/Makefile b/security/gpgme-qt/Makefile
deleted file mode 100644
index f683b6a005dd..000000000000
--- a/security/gpgme-qt/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-PORTREVISION= 0
-
-COMMENT= Gpgme Qt${FLAVOR:S|qt||} bindings
-
-LICENSE= GPLv2+
-LICENSE_FILE= ${WRKSRC}/COPYING
-
-MASTERDIR= ${.CURDIR:H:H}/security/gpgme
-PLIST= ${.CURDIR}/pkg-plist
-
-_GPGME_BINDING= qt
-
-.include "${MASTERDIR}/Makefile"
diff --git a/security/gpgme/Makefile b/security/gpgme/Makefile
index ad66bed32308..92bba8a67faa 100644
--- a/security/gpgme/Makefile
+++ b/security/gpgme/Makefile
@@ -1,6 +1,5 @@
PORTNAME= gpgme
-PORTVERSION= 1.24.2
-PORTREVISION?= 0
+PORTVERSION= 2.0.0
CATEGORIES?= security
MASTER_SITES= GNUPG/gpgme
@@ -16,17 +15,14 @@ LIB_DEPENDS= libassuan.so:security/libassuan \
USES= compiler:c11 cpe gmake libtool localbase:ldflags pathfix tar:bzip2
USE_LDCONFIG= yes
+CPE_VENDOR= gnu
GNU_CONFIGURE= yes
+CONFIGURE_ARGS+=--enable-languages="cl"
CFLAGS+= -Wno-suggest-override -Wno-unknown-warning-option
INSTALL_TARGET= install-strip
TEST_TARGET= check
-CPE_VENDOR= gnu
-
-.if !defined(_GPGME_BINDING)
-CONFIGURE_ARGS+=--enable-languages="cl"
-
INFO= gpgme
PORTDOCS= AUTHORS INSTALL NEWS README
@@ -49,93 +45,11 @@ TEST_PREVENTS_MSG= TEST option is mainly designed for use with the GNUPG2 option
UISERVER_DESC= GnuPG UI server support
UISERVER_CONFIGURE_ENABLE= fd-passing
-.else
-LIB_DEPENDS+= libgpgme.so:security/gpgme
-BUILD_WRKSRC= ${WRKSRC}/lang/${_GPGME_BINDING}
-INSTALL_WRKSRC= ${WRKSRC}/lang/${_GPGME_BINDING}
-TEST_WRKSRC= ${WRKSRC}/lang/${_GPGME_BINDING}/tests
-
-. if ${_GPGME_BINDING} == "cpp"
-USES+= compiler:c++11-lang
-CONFIGURE_ARGS+=--enable-languages="cpp"
-NO_TEST= yes
-. else
-OPTIONS_DEFINE+= TEST
-. endif
-
-. if ${_GPGME_BINDING} == "qt"
-LIB_DEPENDS+= libgpgmepp.so:security/gpgme-cpp
-
-FLAVORS= qt5 qt6
-FLAVOR?= ${FLAVORS:[1]}
-qt5_PKGNAMESUFFIX= -qt5
-qt6_PKGNAMESUFFIX= -qt6
-
-. if ${FLAVOR:U} == "qt5"
-USES+= compiler:c++11-lang pkgconfig qt:5
-USE_QT= core \
- buildtools:build
-TEST_USE= QT=testlib:build
-PLIST_SUB= QGPGME_CMAKE_SUFFIX="" \
- QGPGME_INCLUDE_SUFFIX="${FLAVOR}" \
- QGPGME_LIB_SUFFIX=""
-. else
-USES+= compiler:c++17-lang pkgconfig qt:6
-USE_CXXSTD= c++17
-USE_QT= base
-PLIST_SUB= QGPGME_CMAKE_SUFFIX="Qt${FLAVOR:S|qt||}" \
- QGPGME_INCLUDE_SUFFIX="${FLAVOR}" \
- QGPGME_LIB_SUFFIX="${FLAVOR}"
-. endif
-
-CONFIGURE_ARGS+=--enable-languages="cpp ${FLAVOR}"
-DOCSDIR= ${PREFIX}/share/doc/${PORTNAME}${PKGNAMESUFFIX}
-
-OPTIONS_DEFINE+= DOXYGEN
-DOXYGEN_BUILD_DEPENDS= doxygen:devel/doxygen \
- dot:graphics/graphviz
-. endif
-
-. if ${_GPGME_BINDING} == "python"
-BUILD_DEPENDS+= swig:devel/swig \
- ${PY_SETUPTOOLS}
-USES+= python:3.9+
-USE_PYTHON= flavors
-CONFIGURE_ARGS+=--enable-languages="python"
-CONFIGURE_ENV+= BSD_PYTHON="${PYTHON_CMD}" \
- BSD_PYTHON_VERSION="${PYTHON_VER}" \
- SWIG="${LOCALBASE}/bin/swig"
-PLIST_SUB+= VERSION=${PORTVERSION}
-. endif
-.endif
-
-.include <bsd.port.pre.mk>
post-patch:
-.if ${COMPILER_TYPE} == "clang"
- @${REINPLACE_CMD} -e 's|mno-direct-extern-access|fno-direct-access-external-data|g' \
- ${WRKSRC}/configure
-.endif
-.if defined(_GPGME_BINDING)
- @${FIND} ${BUILD_WRKSRC} -name "Makefile.in" -type f | ${XARGS} \
- ${REINPLACE_CMD} -e 's|../../../src/libgpgme.la|-lgpgme|g'
-. if ${_GPGME_BINDING} == "qt"
- @${FIND} ${BUILD_WRKSRC} -name "Makefile.in" -type f | ${XARGS} \
- ${REINPLACE_CMD} -e 's|../../cpp/src/libgpgmepp.la|-lgpgmepp|g'
-. endif
-.endif
@${REINPLACE_CMD} -e 's|^clfilesdir.*|clfilesdir=$$\(libdir\)/common-lisp/gpgme|g' \
${WRKSRC}/lang/cl/Makefile.in
-post-patch-DOXYGEN-off:
- @${REINPLACE_CMD} -e '/SUBDIRS/s|doc||' \
- ${WRKSRC}/lang/qt/Makefile.in
-
-post-patch-TEST-off:
- @${REINPLACE_CMD} -e '/SUBDIRS/s|tests||' \
- ${WRKSRC}/lang/python/Makefile.in \
- ${WRKSRC}/lang/qt/Makefile.in
-
# The gnupg programs will create sockets for the tests in a temporary directory
# under /var/run/user/${UID} if it exists. Otherwise, they will try to create
# them in the test build directories. To prevent errors in cases where the test
@@ -165,17 +79,8 @@ pre-test: pre-build-TEST-on
post-test: post-build-TEST-on
-.if !defined(_GPGME_BINDING)
post-install-DOCS-on:
- ${MKDIR} ${STAGEDIR}${DOCSDIR}
+ @${MKDIR} ${STAGEDIR}${DOCSDIR}
${INSTALL_DATA} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
-.endif
-
-post-install-DOXYGEN-on:
- ${MKDIR} ${STAGEDIR}${DOCSDIR}/html
- cd ${WRKSRC}/lang/qt/doc/generated/html && \
- ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR}/html
- @${FIND} -P ${STAGEDIR}${DOCSDIR} -type f 2>/dev/null | \
- ${SED} -ne 's|^${STAGEDIR}${PREFIX}/||p' >> ${TMPPLIST}
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
diff --git a/security/gpgme/distinfo b/security/gpgme/distinfo
index 3f69026dd7d7..c0c75d7c36e4 100644
--- a/security/gpgme/distinfo
+++ b/security/gpgme/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1739544658
-SHA256 (gpgme-1.24.2.tar.bz2) = e11b1a0e361777e9e55f48a03d89096e2abf08c63d84b7017cfe1dce06639581
-SIZE (gpgme-1.24.2.tar.bz2) = 1891804
+TIMESTAMP = 1750274492
+SHA256 (gpgme-2.0.0.tar.bz2) = ddf161d3c41ff6a3fcbaf4be6c6e305ca4ef1cc3f1ecdfce0c8c2a167c0cc36d
+SIZE (gpgme-2.0.0.tar.bz2) = 1383911
diff --git a/security/gpgme/files/patch-configure b/security/gpgme/files/patch-configure
index 9884bbddbdc4..02ee21a01cff 100644
--- a/security/gpgme/files/patch-configure
+++ b/security/gpgme/files/patch-configure
@@ -1,27 +1,8 @@
-Hunk 1:
-The configure script automatically detects all versions of Python and builds
-the bindings for each found version. This is a problem when building outside
-of a clean environment since the ports system can only build a package for one
-Python flavor at a time. The found versions of Python are overridden by
-environment variables set in the port Makefile.
-
-Hunk 2:
Fix path of pkgconfig files passed to gpgrt-config.
---- configure.orig 2023-11-28 15:45:04 UTC
+--- configure.orig 2025-06-03 11:26:27 UTC
+++ configure
-@@ -31428,6 +31428,10 @@ printf "%s\n" "$as_me: WARNING:
-
- fi
-
-+ # Override the automatically found Pythons with the selected version from ports.
-+ PYTHONS=$BSD_PYTHON
-+ PYTHON_VERSIONS=$BSD_PYTHON_VERSION
-+
- # Recover some values lost in the second attempt to find Python.
- PYTHON="$(echo $PYTHONS | cut -d ' ' -f 1)"
- PYTHON_VERSION="$(echo $PYTHON_VERSIONS | cut -d ' ' -f 1)"
-@@ -32691,7 +32695,7 @@ fi
+@@ -16828,7 +16828,7 @@ fi
# Get the prefix of gpgrt-config assuming it's something like:
# <PREFIX>/bin/gpgrt-config
gpgrt_prefix=${GPGRT_CONFIG%/*/*}
diff --git a/security/gpgme/files/patch-lang_python_Makefile.in b/security/gpgme/files/patch-lang_python_Makefile.in
deleted file mode 100644
index e78760200c2a..000000000000
--- a/security/gpgme/files/patch-lang_python_Makefile.in
+++ /dev/null
@@ -1,29 +0,0 @@
-First hunk:
-The swig executable from devel/swig30 is named 'swig3.0' and the build system
-only looks for an executable named 'swig':
-unable to execute 'swig': No such file or directory
-
-Second hunk:
-Fix staging and build the *.pyc and *.pyo files
-
---- lang/python/Makefile.in.orig 2023-08-21 07:46:32 UTC
-+++ lang/python/Makefile.in
-@@ -768,7 +768,7 @@ all-local: copystamp
- CFLAGS="$(CFLAGS)" \
- srcdir="$(srcdir)" \
- top_builddir="$(top_builddir)" \
-- $$PYTHON setup.py build --verbose --build-base="$$(basename "$${PYTHON}")-gpg" ; \
-+ $$PYTHON setup.py build --verbose --build-base="$$(basename "$${PYTHON}")-gpg" build_ext --swig=$(SWIG) ; \
- done
-
- python$(PYTHON_VERSION)-gpg/dist/gpg-$(VERSION).tar.gz.asc: copystamp
-@@ -811,7 +811,8 @@ install-exec-local:
- build \
- --build-base="$$(basename "$${PYTHON}")-gpg" \
- install \
-- --prefix "$(DESTDIR)$(prefix)" \
-+ -c -O1 --prefix=$(prefix) \
-+ --root=$(DESTDIR) \
- --verbose ; \
- done
-
diff --git a/security/gpgme/pkg-plist b/security/gpgme/pkg-plist
index 9034fa4ef44d..b79e4310fc92 100644
--- a/security/gpgme/pkg-plist
+++ b/security/gpgme/pkg-plist
@@ -7,8 +7,8 @@ lib/common-lisp/gpgme/gpgme-package.lisp
lib/common-lisp/gpgme/gpgme.asd
lib/common-lisp/gpgme/gpgme.lisp
lib/libgpgme.so
-lib/libgpgme.so.11
-lib/libgpgme.so.11.33.2
+lib/libgpgme.so.45
+lib/libgpgme.so.45.0.0
libdata/pkgconfig/gpgme-glib.pc
libdata/pkgconfig/gpgme.pc
share/aclocal/gpgme.m4
diff --git a/security/gpgmepp/Makefile b/security/gpgmepp/Makefile
new file mode 100644
index 000000000000..e82eb6422f32
--- /dev/null
+++ b/security/gpgmepp/Makefile
@@ -0,0 +1,18 @@
+PORTNAME= gpgmepp
+PORTVERSION= 2.0.0
+CATEGORIES= security
+MASTER_SITES= GNUPG
+
+MAINTAINER= jhale@FreeBSD.org
+COMMENT= GnuPG Made Easy (GPGME) C++ bindings
+WWW= https://gnupg.org/software/gpgme/index.html
+
+LICENSE= LGPL20+
+LICENSE_FILE= ${WRKSRC}/COPYING.LIB
+
+LIB_DEPENDS= libgpg-error.so:security/libgpg-error \
+ libgpgme.so:security/gpgme
+
+USES= cmake compiler:c++17-lang pkgconfig tar:xz
+
+.include <bsd.port.mk>
diff --git a/security/gpgmepp/distinfo b/security/gpgmepp/distinfo
new file mode 100644
index 000000000000..8d7b098d16d2
--- /dev/null
+++ b/security/gpgmepp/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1750275911
+SHA256 (gpgmepp-2.0.0.tar.xz) = d4796049c06708a26f3096f748ef095347e1a3c1e570561701fe952c3f565382
+SIZE (gpgmepp-2.0.0.tar.xz) = 118304
diff --git a/security/gpgmepp/pkg-descr b/security/gpgmepp/pkg-descr
new file mode 100644
index 000000000000..34f3229a2efb
--- /dev/null
+++ b/security/gpgmepp/pkg-descr
@@ -0,0 +1,2 @@
+GpgMEpp is a C++ wrapper (or C++ bindings) for the GnuPG project's GPGME
+(GnuPG Made Easy) library.
diff --git a/security/gpgme-cpp/pkg-plist b/security/gpgmepp/pkg-plist
index 544a430d2de8..2741334cbc58 100644
--- a/security/gpgme-cpp/pkg-plist
+++ b/security/gpgmepp/pkg-plist
@@ -31,18 +31,22 @@ include/gpgme++/key.h
include/gpgme++/keygenerationresult.h
include/gpgme++/keylistresult.h
include/gpgme++/notation.h
+include/gpgme++/randomresults.h
include/gpgme++/result.h
include/gpgme++/scdgetinfoassuantransaction.h
include/gpgme++/signingresult.h
include/gpgme++/statusconsumerassuantransaction.h
include/gpgme++/swdbresult.h
include/gpgme++/tofuinfo.h
-include/gpgme++/trustitem.h
include/gpgme++/verificationresult.h
include/gpgme++/vfsmountresult.h
+lib/cmake/Gpgmepp/FindGpgme.cmake
+lib/cmake/Gpgmepp/FindLibGpgError.cmake
lib/cmake/Gpgmepp/GpgmeppConfig.cmake
lib/cmake/Gpgmepp/GpgmeppConfigVersion.cmake
+lib/cmake/Gpgmepp/GpgmeppTargets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/Gpgmepp/GpgmeppTargets.cmake
lib/libgpgmepp.so
-lib/libgpgmepp.so.6
-lib/libgpgmepp.so.6.21.2
+lib/libgpgmepp.so.7
+lib/libgpgmepp.so.7.0.0
libdata/pkgconfig/gpgmepp.pc
diff --git a/security/gvm-libs/Makefile b/security/gvm-libs/Makefile
index 0a6e2266c017..f11ade33a8ca 100644
--- a/security/gvm-libs/Makefile
+++ b/security/gvm-libs/Makefile
@@ -1,6 +1,7 @@
PORTNAME= gvm
DISTVERSIONPREFIX= v
DISTVERSION= 22.22.0
+PORTREVISION= 1
CATEGORIES= security
PKGNAMESUFFIX= -libs
diff --git a/security/gvmd/Makefile b/security/gvmd/Makefile
index 366f6967d8f4..0648b0880e09 100644
--- a/security/gvmd/Makefile
+++ b/security/gvmd/Makefile
@@ -1,5 +1,6 @@
PORTNAME= gvmd
DISTVERSION= 26.0.0
+PORTREVISION= 1
DISTVERSIONPREFIX= v
CATEGORIES= security
diff --git a/security/kleopatra/Makefile b/security/kleopatra/Makefile
index 505df198284c..021af0b579e1 100644
--- a/security/kleopatra/Makefile
+++ b/security/kleopatra/Makefile
@@ -1,7 +1,13 @@
PORTNAME= kleopatra
DISTVERSION= ${KDE_APPLICATIONS_VERSION}
+PORTREVISION= 1
CATEGORIES= security kde kde-applications
+PATCH_SITES= https://invent.kde.org/pim/kleopatra/-/commit/
+PATCHFILES+= 10b618703d74618c09b5e2b16e2db9d829aed93b.patch:-p1 # Prep for Qgpgme 2.0.0
+PATCHFILES+= b1f3736de7ed3c2d4f58aa454064a4cd0f423250.patch:-p1 # Prep for Qgpgme 2.0.0
+PATCHFILES+= d4f777ffa137148302ca39d5a2238c01c896605d.patch:-p1 # Prep for Qgpgme 2.0.0
+
MAINTAINER= kde@FreeBSD.org
COMMENT= Certificate manager for KDE
WWW= https://www.kde.org/applications/utilities/kleopatra/
@@ -10,8 +16,8 @@ LIB_DEPENDS= libassuan.so:security/libassuan \
libboost_thread.so:devel/boost-libs \
libgpgme.so:security/gpgme \
libgpg-error.so:security/libgpg-error \
- libgpgmepp.so:security/gpgme-cpp \
- libqgpgmeqt6.so:security/gpgme-qt@qt6
+ libgpgmepp.so:security/gpgmepp \
+ libqgpgmeqt6.so:security/qgpgme@qt6
USES= cmake compiler:c++11-lang desktop-file-utils gettext kde:6 \
qt:6 shared-mime-info tar:xz xorg
diff --git a/security/kleopatra/distinfo b/security/kleopatra/distinfo
index dcac84233c5f..f1f3b98769a3 100644
--- a/security/kleopatra/distinfo
+++ b/security/kleopatra/distinfo
@@ -1,3 +1,9 @@
-TIMESTAMP = 1749036950
+TIMESTAMP = 1750496363
SHA256 (KDE/release-service/25.04.2/kleopatra-25.04.2.tar.xz) = d155c416103fad173c361ea10f3ea1f6142297cc5be3598e9b062461336a3476
SIZE (KDE/release-service/25.04.2/kleopatra-25.04.2.tar.xz) = 2851360
+SHA256 (KDE/release-service/25.04.2/10b618703d74618c09b5e2b16e2db9d829aed93b.patch) = 75f5c94d85eadad74dcef21f66c019946217a051a9e8b90803d5eceaadb3fcd4
+SIZE (KDE/release-service/25.04.2/10b618703d74618c09b5e2b16e2db9d829aed93b.patch) = 1241
+SHA256 (KDE/release-service/25.04.2/b1f3736de7ed3c2d4f58aa454064a4cd0f423250.patch) = c2796b58683b07eabeae48a517192460c474a1722d7022e796b94df6553d933d
+SIZE (KDE/release-service/25.04.2/b1f3736de7ed3c2d4f58aa454064a4cd0f423250.patch) = 1585
+SHA256 (KDE/release-service/25.04.2/d4f777ffa137148302ca39d5a2238c01c896605d.patch) = 0120d812f9a57cbd4a5a2718fbbc9acef090841701cb2c6b4f11a596986840e6
+SIZE (KDE/release-service/25.04.2/d4f777ffa137148302ca39d5a2238c01c896605d.patch) = 1573
diff --git a/security/libcryptui/Makefile b/security/libcryptui/Makefile
index 98a75479363a..b1cbf9ef4783 100644
--- a/security/libcryptui/Makefile
+++ b/security/libcryptui/Makefile
@@ -1,6 +1,6 @@
PORTNAME= libcryptui
PORTVERSION= 3.12.2
-PORTREVISION= 6
+PORTREVISION= 7
CATEGORIES= security gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome
@@ -9,6 +9,10 @@ MAINTAINER= gnome@FreeBSD.org
COMMENT= GNOME application for managing encryption keys (PGP, SSH)
WWW= https://gitlab.gnome.org/GNOME/libcryptui
+DEPRECATED= abandoned project
+EXPIRATION_DATE=2025-06-30
+BROKEN= does not build with gpgme 2.x
+
BUILD_DEPENDS= seahorse>=3.0.0:security/seahorse \
gpg:security/gnupg
LIB_DEPENDS= libgpgme.so:security/gpgme \
diff --git a/security/libkleo/Makefile b/security/libkleo/Makefile
index 10b3a01e7a07..19824ceb7dda 100644
--- a/security/libkleo/Makefile
+++ b/security/libkleo/Makefile
@@ -1,5 +1,6 @@
PORTNAME= libkleo
DISTVERSION= ${KDE_APPLICATIONS_VERSION}
+PORTREVISION= 1
CATEGORIES= security kde kde-applications
MAINTAINER= kde@FreeBSD.org
@@ -10,8 +11,8 @@ BUILD_DEPENDS= ${LOCALBASE}/include/boost/range/algorithm.hpp:devel/boost-libs
LIB_DEPENDS= libassuan.so:security/libassuan \
libgpg-error.so:security/libgpg-error \
libgpgme.so:security/gpgme \
- libqgpgmeqt6.so:security/gpgme-qt@qt6 \
- libgpgmepp.so:security/gpgme-cpp
+ libqgpgmeqt6.so:security/qgpgme@qt6 \
+ libgpgmepp.so:security/gpgmepp
RUN_DEPENDS= ${LOCALBASE}/bin/gmd5sum:sysutils/coreutils
USES= cmake compiler:c++11-lang gettext kde:6 qt:6 tar:xz
diff --git a/security/openvas/Makefile b/security/openvas/Makefile
index 891a0d409bdd..5181bd1bc773 100644
--- a/security/openvas/Makefile
+++ b/security/openvas/Makefile
@@ -1,5 +1,6 @@
PORTNAME= openvas
DISTVERSION= 23.20.1
+PORTREVISION= 1
DISTVERSIONPREFIX= v
CATEGORIES= security
diff --git a/security/p5-Crypt-GpgME/Makefile b/security/p5-Crypt-GpgME/Makefile
index 75b5ecbf7cd6..41be90383404 100644
--- a/security/p5-Crypt-GpgME/Makefile
+++ b/security/p5-Crypt-GpgME/Makefile
@@ -1,6 +1,6 @@
PORTNAME= Crypt-GpgME
PORTVERSION= 0.09
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= security perl5
MASTER_SITES= CPAN
PKGNAMEPREFIX= p5-
diff --git a/security/p5-Crypt-GpgME/files/patch-lib_Crypt_GpgME.pm b/security/p5-Crypt-GpgME/files/patch-lib_Crypt_GpgME.pm
new file mode 100644
index 000000000000..61bb81fa0777
--- /dev/null
+++ b/security/p5-Crypt-GpgME/files/patch-lib_Crypt_GpgME.pm
@@ -0,0 +1,16 @@
+The trustlist feature, which only worked for a short period in 2003, was
+removed in GpgME 2.0.0.
+
+--- lib/Crypt/GpgME.pm.orig 2009-11-17 22:51:18 UTC
++++ lib/Crypt/GpgME.pm
+@@ -226,10 +226,6 @@ Returns a new Crypt::GpgME instance. Throws an excepti
+
+ my $key = $ctx->signers_enum($seq);
+
+-=head2 trustlist
+-
+- my @trustlist = $ctx->trustlist($pattern, $maxlevel);
+-
+ =head2 verify
+
+ my ($result, $plain) = $ctx->verify($sig);
diff --git a/security/p5-Crypt-GpgME/files/patch-perl__glue_perl__gpgme.c b/security/p5-Crypt-GpgME/files/patch-perl__glue_perl__gpgme.c
new file mode 100644
index 000000000000..f8452fcf45dc
--- /dev/null
+++ b/security/p5-Crypt-GpgME/files/patch-perl__glue_perl__gpgme.c
@@ -0,0 +1,42 @@
+The trustlist feature, which only worked for a short period in 2003, was
+removed in GpgME 2.0.0.
+
+--- perl_glue/perl_gpgme.c.orig 2008-04-30 04:10:10 UTC
++++ perl_glue/perl_gpgme.c
+@@ -762,36 +762,6 @@ SV *
+ }
+
+ SV *
+-perl_gpgme_hashref_from_trust_item (gpgme_trust_item_t item) {
+- SV *sv;
+- HV *hv;
+-
+- hv = newHV ();
+-
+- if (item->keyid) {
+- perl_gpgme_hv_store (hv, "keyid", 5, newSVpv (item->keyid, 0));
+- }
+-
+- perl_gpgme_hv_store (hv, "type", 4, newSVpv (item->type == 1 ? "key" : "uid", 0));
+- perl_gpgme_hv_store (hv, "level", 5, newSViv (item->level));
+-
+- if (item->type == 1 && item->owner_trust) {
+- perl_gpgme_hv_store (hv, "owner_trust", 11, newSVpv (item->owner_trust, 0));
+- }
+-
+- if (item->validity) {
+- perl_gpgme_hv_store (hv, "validity", 8, newSVpv (item->validity, 0));
+- }
+-
+- if (item->type == 2 && item->name) {
+- perl_gpgme_hv_store (hv, "name", 4, newSVpv (item->name, 0));
+- }
+-
+- sv = newRV_noinc ((SV *)hv);
+- return sv;
+-}
+-
+-SV *
+ perl_gpgme_sv_from_status_code (gpgme_status_code_t status) {
+ int i;
+ SV *ret = NULL;
diff --git a/security/p5-Crypt-GpgME/files/patch-perl__glue_perl__gpgme.h b/security/p5-Crypt-GpgME/files/patch-perl__glue_perl__gpgme.h
new file mode 100644
index 000000000000..4b7fa2763638
--- /dev/null
+++ b/security/p5-Crypt-GpgME/files/patch-perl__glue_perl__gpgme.h
@@ -0,0 +1,14 @@
+The trustlist feature, which only worked for a short period in 2003, was
+removed in GpgME 2.0.0.
+
+--- perl_glue/perl_gpgme.h.orig 2007-12-19 23:55:38 UTC
++++ perl_glue/perl_gpgme.h
+@@ -117,8 +117,6 @@ SV *perl_gpgme_hash_algo_to_string (gpgme_hash_algo_t
+
+ SV *perl_gpgme_hash_algo_to_string (gpgme_hash_algo_t algo);
+
+-SV *perl_gpgme_hashref_from_trust_item (gpgme_trust_item_t item);
+-
+ SV *perl_gpgme_sv_from_status_code (gpgme_status_code_t status);
+
+ SV *perl_gpgme_genkey_result_to_sv (gpgme_genkey_result_t result);
diff --git a/security/p5-Crypt-GpgME/files/patch-xs_GpgME.xs b/security/p5-Crypt-GpgME/files/patch-xs_GpgME.xs
new file mode 100644
index 000000000000..42f999ad3888
--- /dev/null
+++ b/security/p5-Crypt-GpgME/files/patch-xs_GpgME.xs
@@ -0,0 +1,35 @@
+The trustlist feature, which only worked for a short period in 2003, was
+removed in GpgME 2.0.0.
+
+--- xs/GpgME.xs.orig 2008-04-30 04:10:27 UTC
++++ xs/GpgME.xs
+@@ -453,29 +453,6 @@ gpgme_keylist (ctx, pattern, secret_only=0)
+ perl_gpgme_assert_error (err);
+ }
+
+-void
+-gpgme_trustlist (ctx, pattern, max_level)
+- gpgme_ctx_t ctx
+- const char *pattern
+- int max_level
+- PREINIT:
+- gpgme_error_t err;
+- gpgme_trust_item_t item;
+- PPCODE:
+- err = gpgme_op_trustlist_start (ctx, pattern, max_level);
+- perl_gpgme_assert_error (err);
+-
+- while ((err = gpgme_op_trustlist_next (ctx, &item)) == GPG_ERR_NO_ERROR) {
+- XPUSHs (perl_gpgme_hashref_from_trust_item (item));
+- gpgme_trust_item_unref (item);
+- }
+-
+- if (gpg_err_code (err) != GPG_ERR_EOF) {
+- perl_gpgme_assert_error (err);
+- }
+-
+- gpgme_op_trustlist_end (ctx);
+-
+ NO_OUTPUT gpgme_error_t
+ gpgme_engine_check_version (ctx, proto)
+ perl_gpgme_ctx_or_null_t ctx
diff --git a/security/pecl-gnupg/Makefile b/security/pecl-gnupg/Makefile
index cad9dd9e5404..dd2eb5172e17 100644
--- a/security/pecl-gnupg/Makefile
+++ b/security/pecl-gnupg/Makefile
@@ -1,5 +1,6 @@
PORTNAME= gnupg
PORTVERSION= 1.5.3
+PORTREVISION= 1
CATEGORIES= security
MAINTAINER= sunpoet@FreeBSD.org
diff --git a/security/pecl-gnupg/files/patch-gnupg.c b/security/pecl-gnupg/files/patch-gnupg.c
new file mode 100644
index 000000000000..fda8f01312fd
--- /dev/null
+++ b/security/pecl-gnupg/files/patch-gnupg.c
@@ -0,0 +1,41 @@
+The trustlist feature has been deprecated in Gpgme since 2003 and was removed
+in version 2.0.0.
+
+--- gnupg.c.orig 2025-06-02 18:54:02 UTC
++++ gnupg.c
+@@ -341,7 +341,9 @@ phpc_function_entry gnupg_methods[] = {
+ PHP_GNUPG_FALIAS(addencryptkey, arginfo_gnupg_key_method)
+ PHP_GNUPG_FALIAS(adddecryptkey, arginfo_gnupg_key_passphrase_method)
+ PHP_GNUPG_FALIAS(deletekey, arginfo_gnupg_deletekey_method)
++#if GPGME_VERSION_NUMBER < 0x020000 /* GPGME < 2.0.0 */
+ PHP_GNUPG_FALIAS(gettrustlist, arginfo_gnupg_pattern_method)
++#endif
+ PHP_GNUPG_FALIAS(listsignatures, arginfo_gnupg_keyid_method)
+ PHP_GNUPG_FALIAS(seterrormode, arginfo_gnupg_errmode_method)
+ PHPC_FE_END
+@@ -483,7 +485,9 @@ static zend_function_entry gnupg_functions[] = {
+ PHP_FE(gnupg_addencryptkey, arginfo_gnupg_key_function)
+ PHP_FE(gnupg_adddecryptkey, arginfo_gnupg_key_passphrase_function)
+ PHP_FE(gnupg_deletekey, arginfo_gnupg_deletekey_function)
++#if GPGME_VERSION_NUMBER < 0x020000 /* GPGME < 2.0.0 */
+ PHP_FE(gnupg_gettrustlist, arginfo_gnupg_pattern_function)
++#endif
+ PHP_FE(gnupg_listsignatures, arginfo_gnupg_keyid_function)
+ PHP_FE(gnupg_seterrormode, arginfo_gnupg_errmode_function)
+ PHPC_FE_END
+@@ -1936,6 +1940,7 @@ PHP_FUNCTION(gnupg_deletekey)
+ }
+ /* }}} */
+
++#if GPGME_VERSION_NUMBER < 0x020000 /* GPGME < 2.0.0 */
+ /* {{{ proto array gnupg_gettrustlist(string pattern)
+ * searching for trust items which match PATTERN
+ */
+@@ -1980,6 +1985,7 @@ PHP_FUNCTION(gnupg_gettrustlist)
+ }
+ }
+ /* }}} */
++#endif
+
+ /* {{{ proto array gnupg_listsignatures(string keyid) */
+ PHP_FUNCTION(gnupg_listsignatures)
diff --git a/security/pinentry/Makefile b/security/pinentry/Makefile
index 3ba81d6e22ae..ba10a91f5e8a 100644
--- a/security/pinentry/Makefile
+++ b/security/pinentry/Makefile
@@ -36,7 +36,7 @@ NCURSES_RUN_DEPENDS= ${PINENTRY_NCURSES}:security/pinentry-curses
EFL_DESC= EFL frontend
PINENTRY_EFL= pinentry-efl
# Due to a dependency loop that exists between security/pinentry-efl,
-# devel/elf, graphics/poppler, security/gpgme-cpp, security/gpgme,
+# devel/elf, graphics/poppler, security/gpgmepp, security/gpgme,
# security/gnupg and security/pinentry, the user must install
# pinentry-efl manually. See pkg-message.dep-loop for more details.
#EFL_RUN_DEPENDS= ${PINENTRY_EFL}:security/pinentry-efl
diff --git a/security/plasma6-kscreenlocker/distinfo b/security/plasma6-kscreenlocker/distinfo
index 832f8bbd7964..9b45a355b193 100644
--- a/security/plasma6-kscreenlocker/distinfo
+++ b/security/plasma6-kscreenlocker/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1750010496
-SHA256 (KDE/plasma/6.4.0/kscreenlocker-6.4.0.tar.xz) = b840202ba6b5bd7832ab2116beee2c8e386fa9b844e6db0e425a84006b6698fa
-SIZE (KDE/plasma/6.4.0/kscreenlocker-6.4.0.tar.xz) = 183788
+TIMESTAMP = 1750789611
+SHA256 (KDE/plasma/6.4.1/kscreenlocker-6.4.1.tar.xz) = c849dc939a050a26f270393f8b59e8b86d671983a752e014af7c89a1c955b925
+SIZE (KDE/plasma/6.4.1/kscreenlocker-6.4.1.tar.xz) = 183776
diff --git a/security/plasma6-ksshaskpass/distinfo b/security/plasma6-ksshaskpass/distinfo
index 0762978afab7..8196ba2a8c6e 100644
--- a/security/plasma6-ksshaskpass/distinfo
+++ b/security/plasma6-ksshaskpass/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1750010496
-SHA256 (KDE/plasma/6.4.0/ksshaskpass-6.4.0.tar.xz) = ce3c7ba9f16638eb5e0378821448a84b9a0619228be8196e55c395fd4d743806
-SIZE (KDE/plasma/6.4.0/ksshaskpass-6.4.0.tar.xz) = 30792
+TIMESTAMP = 1750789611
+SHA256 (KDE/plasma/6.4.1/ksshaskpass-6.4.1.tar.xz) = 5495db2d45f9b2ac50a81382f7e38c99ab83d7ea34adcf72b05c260d9d8a3433
+SIZE (KDE/plasma/6.4.1/ksshaskpass-6.4.1.tar.xz) = 30796
diff --git a/security/plasma6-kwallet-pam/Makefile b/security/plasma6-kwallet-pam/Makefile
index b4aad08a3703..538b12ebeb1b 100644
--- a/security/plasma6-kwallet-pam/Makefile
+++ b/security/plasma6-kwallet-pam/Makefile
@@ -1,6 +1,5 @@
PORTNAME= kwallet-pam
DISTVERSION= ${KDE_PLASMA_VERSION}
-PORTREVISION= 1
CATEGORIES= security kde kde-plasma
MAINTAINER= kde@FreeBSD.org
diff --git a/security/plasma6-kwallet-pam/distinfo b/security/plasma6-kwallet-pam/distinfo
index eb3872634da1..81c94e309bb8 100644
--- a/security/plasma6-kwallet-pam/distinfo
+++ b/security/plasma6-kwallet-pam/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1750010496
-SHA256 (KDE/plasma/6.4.0/kwallet-pam-6.4.0.tar.xz) = 450e4d6b804c597eb51159000e193688926e4d8225ae19a1627e25d11feb8b5e
-SIZE (KDE/plasma/6.4.0/kwallet-pam-6.4.0.tar.xz) = 22396
+TIMESTAMP = 1750789612
+SHA256 (KDE/plasma/6.4.1/kwallet-pam-6.4.1.tar.xz) = 04d4d7075cb93cac10a7e0504836d961c7a2eda4f08987bb500f927200298b7c
+SIZE (KDE/plasma/6.4.1/kwallet-pam-6.4.1.tar.xz) = 22400
diff --git a/security/py-gpg/Makefile b/security/py-gpg/Makefile
new file mode 100644
index 000000000000..582cb579dfc2
--- /dev/null
+++ b/security/py-gpg/Makefile
@@ -0,0 +1,43 @@
+PORTNAME= gpg
+PORTVERSION= 2.0.0
+CATEGORIES= security python
+MASTER_SITES= GNUPG/gpgmepy
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+DISTNAME= gpgmepy-${PORTVERSION}
+
+MAINTAINER= jhale@FreeBSD.org
+COMMENT= Gpgme Python bindings
+
+LICENSE= LGPL21+
+LICENSE_FILE= ${WRKSRC}/COPYING.LESSER
+
+BUILD_DEPENDS= swig:devel/swig \
+ ${PY_SETUPTOOLS} \
+ ${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
+
+LIB_DEPENDS= libassuan.so:security/libassuan \
+ libgpg-error.so:security/libgpg-error \
+ libgpgme.so:security/gpgme
+
+USES= gmake pkgconfig python:3.9+ tar:bzip2
+USE_PYTHON= autoplist pep517
+
+GNU_CONFIGURE= yes
+CONFIGURE_ENV= BSD_PYTHON="${PYTHON_CMD}" \
+ BSD_PYTHON_VERSION="${PYTHON_VER}"
+TEST_TARGET= check
+
+# Link src to the project name defined in pyproject.toml to deal with Python
+# conventions. This is done in the project build system, but we're just using
+# the configure part of the autotools and letting the FreeBSD python USES do
+# the main build.
+pre-build:
+ (cd ${BUILD_WRKSRC} && ${LN} -sf src ${PORTNAME})
+
+# Avoid patching the src 'copystamp' target, which tries to copy several files
+# to their original location, causing errors. ${BUILD_WRKSRC}/copystamp just
+# has to exist for the port 'test' target to function for our purposes.
+pre-test:
+ ${TOUCH} ${BUILD_WRKSRC}/copystamp
+
+.include <bsd.port.mk>
diff --git a/security/py-gpg/distinfo b/security/py-gpg/distinfo
new file mode 100644
index 000000000000..c0e4e0940c09
--- /dev/null
+++ b/security/py-gpg/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1750492472
+SHA256 (gpgmepy-2.0.0.tar.bz2) = 07e1265648ff51da238c9af7a18b3f1dc7b0c66b4f21a72f27c74b396cd3336d
+SIZE (gpgmepy-2.0.0.tar.bz2) = 575963
diff --git a/security/py-gpg/files/patch-configure.ac b/security/py-gpg/files/patch-configure.ac
new file mode 100644
index 000000000000..d60e14dfd05d
--- /dev/null
+++ b/security/py-gpg/files/patch-configure.ac
@@ -0,0 +1,19 @@
+The configure script automatically detects all versions of Python and builds
+the bindings for each found version. This is a problem when building outside
+of a clean environment since the ports system can only build a package for one
+Python flavor at a time. The found versions of Python are overridden by
+environment variables set in the port Makefile.
+
+--- configure.ac.orig 2025-06-17 08:21:23 UTC
++++ configure.ac
+@@ -326,6 +326,10 @@ else
+ ], :, m4_if(mym4pythonver,[any],[],[python]mym4pythonver))
+ ])
+
++ # Override the automatically found Pythons with the selected version from ports.
++ PYTHONS=$BSD_PYTHON
++ PYTHON_VERSIONS=$BSD_PYTHON_VERSION
++
+ # Recover some values lost in the second attempt to find Python.
+ PYTHON="$(echo $PYTHONS | cut -d ' ' -f 1)"
+ PYTHON_VERSION="$(echo $PYTHON_VERSIONS | cut -d ' ' -f 1)"
diff --git a/security/py-gpg/files/patch-pyproject.toml b/security/py-gpg/files/patch-pyproject.toml
new file mode 100644
index 000000000000..f2a281e724c2
--- /dev/null
+++ b/security/py-gpg/files/patch-pyproject.toml
@@ -0,0 +1,13 @@
+Since we don't have a "swig" python package to look for, this breaks the
+build. Swig detection, however, is done locally by the ports system and
+the configure script.
+
+--- pyproject.toml.orig 2025-06-17 08:21:23 UTC
++++ pyproject.toml
+@@ -59,5 +59,5 @@ content-type = "text/plain"
+
+ [build-system]
+ # Minimum requirements for the build system to execute.
+-requires = ["setuptools", "swig"]
++requires = ["setuptools"]
+ build-backend = "setuptools.build_meta"
diff --git a/security/py-gpg/pkg-descr b/security/py-gpg/pkg-descr
new file mode 100644
index 000000000000..331ded45d4d4
--- /dev/null
+++ b/security/py-gpg/pkg-descr
@@ -0,0 +1,3 @@
+Python bindings for the GpgME library, offering a high-level and curated
+interface, as well as an idiomatic interface implemented as a shim,
+automatically created using SWIG, on top of the low-level interface.
diff --git a/security/py-gpgme/Makefile b/security/py-gpgme/Makefile
deleted file mode 100644
index b79f2dd23518..000000000000
--- a/security/py-gpgme/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-PORTREVISION= 0
-CATEGORIES= security python
-PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
-
-MAINTAINER= jhale@FreeBSD.org
-COMMENT= Gpgme Python bindings
-
-MASTERDIR= ${.CURDIR:H:H}/security/gpgme
-PLIST= ${.CURDIR}/pkg-plist
-
-_GPGME_BINDING= python
-
-post-install:
- ${STRIP_CMD} ${STAGEDIR}${PYTHON_SITELIBDIR}/gpg/_gpgme*.so
-
-.include "${MASTERDIR}/Makefile"
diff --git a/security/py-gpgme/pkg-plist b/security/py-gpgme/pkg-plist
deleted file mode 100644
index 8650d7182e84..000000000000
--- a/security/py-gpgme/pkg-plist
+++ /dev/null
@@ -1,89 +0,0 @@
-%%PYTHON_SITELIBDIR%%/gpg-%%VERSION%%-py%%PYTHON_VER%%.egg-info/PKG-INFO
-%%PYTHON_SITELIBDIR%%/gpg-%%VERSION%%-py%%PYTHON_VER%%.egg-info/SOURCES.txt
-%%PYTHON_SITELIBDIR%%/gpg-%%VERSION%%-py%%PYTHON_VER%%.egg-info/dependency_links.txt
-%%PYTHON_SITELIBDIR%%/gpg-%%VERSION%%-py%%PYTHON_VER%%.egg-info/top_level.txt
-%%PYTHON_SITELIBDIR%%/gpg/__init__.py
-%%PYTHON_SITELIBDIR%%/gpg/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/__pycache__/__init__%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/__pycache__/callbacks%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/__pycache__/callbacks%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/__pycache__/core%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/__pycache__/core%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/__pycache__/errors%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/__pycache__/errors%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/__pycache__/gpgme%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/__pycache__/gpgme%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/__pycache__/results%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/__pycache__/results%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/__pycache__/util%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/__pycache__/util%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/__pycache__/version%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/__pycache__/version%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/_gpgme%%PYTHON_TAG%%.so
-%%PYTHON_SITELIBDIR%%/gpg/callbacks.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/__init__.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/__init__%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/create%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/create%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/event%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/event%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/import_type%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/import_type%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/keysign%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/keysign%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/md%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/md%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/pk%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/pk%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/protocol%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/protocol%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/sigsum%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/sigsum%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/status%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/status%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/validity%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/__pycache__/validity%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/create.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/data/__init__.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/data/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/data/__pycache__/__init__%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/data/__pycache__/encoding%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/data/__pycache__/encoding%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/data/encoding.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/event.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/import_type.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/keylist/__init__.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/keylist/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/keylist/__pycache__/__init__%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/keylist/__pycache__/mode%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/keylist/__pycache__/mode%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/keylist/mode.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/keysign.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/md.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/pk.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/protocol.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/sig/__init__.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/sig/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/sig/__pycache__/__init__%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/sig/__pycache__/mode%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/sig/__pycache__/mode%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/sig/__pycache__/notation%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/sig/__pycache__/notation%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/sig/mode.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/sig/notation.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/sigsum.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/status.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/tofu/__init__.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/tofu/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/tofu/__pycache__/__init__%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/tofu/__pycache__/policy%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/tofu/__pycache__/policy%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/gpg/constants/tofu/policy.py
-%%PYTHON_SITELIBDIR%%/gpg/constants/validity.py
-%%PYTHON_SITELIBDIR%%/gpg/core.py
-%%PYTHON_SITELIBDIR%%/gpg/errors.py
-%%PYTHON_SITELIBDIR%%/gpg/gpgme.py
-%%PYTHON_SITELIBDIR%%/gpg/results.py
-%%PYTHON_SITELIBDIR%%/gpg/util.py
-%%PYTHON_SITELIBDIR%%/gpg/version.py
diff --git a/security/qgpgme/Makefile b/security/qgpgme/Makefile
new file mode 100644
index 000000000000..f45cb981a8f8
--- /dev/null
+++ b/security/qgpgme/Makefile
@@ -0,0 +1,55 @@
+PORTNAME= qgpgme
+PORTVERSION= 2.0.0
+CATEGORIES= security
+MASTER_SITES= GNUPG
+PKGNAMESUFFIX= -${FLAVOR}
+
+MAINTAINER= jhale@FreeBSD.org
+COMMENT= GnuPG Made Easy (GPGME) Qt bindings
+WWW= https://gnupg.org/software/gpgme/index.html
+
+LICENSE= GPLv2+
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+LIB_DEPENDS= libgpg-error.so:security/libgpg-error \
+ libgpgme.so:security/gpgme \
+ libgpgmepp.so:security/gpgmepp
+
+FLAVORS= qt6 qt5
+FLAVOR?= ${FLAVORS:[1]}
+
+USES= cmake:testing compiler:c++17-lang pkgconfig \
+ qt:${FLAVOR:S|qt||} tar:xz
+USE_LDCONFIG= yes
+_USE_QT_qt5= core buildtools:build qmake:build testlib:test
+_USE_QT_qt6= base
+USE_QT= ${_USE_QT_${FLAVOR}}
+
+CMAKE_ON= BUILD_WITH_${FLAVOR:tu}
+_CMAKE_OFF_qt5= BUILD_WITH_QT6
+_CMAKE_OFF_qt6= BUILD_WITH_QT5
+CMAKE_OFF= BUILD_TESTING \
+ ${_CMAKE_OFF_${FLAVOR}}
+
+DOCSDIR= ${PREFIX}/share/doc/${PORTNAME}${PKGNAMESUFFIX}
+_PLIST_SUB_qt5= QGPGME_CMAKE_SUFFIX="" \
+ QGPGME_LIB_SUFFIX=""
+_PLIST_SUB_qt6= QGPGME_CMAKE_SUFFIX="Qt6" \
+ QGPGME_LIB_SUFFIX="qt6"
+PLIST_SUB= QGPGME_INCLUDE_SUFFIX="${FLAVOR}" \
+ ${_PLIST_SUB_${FLAVOR}}
+
+OPTIONS_DEFINE= DOXYGEN
+
+DOXYGEN_BUILD_DEPENDS= doxygen:devel/doxygen \
+ dot:graphics/graphviz
+DOXYGEN_CMAKE_BOOL_OFF= CMAKE_DISABLE_FIND_PACKAGE_Doxygen
+
+post-install-DOXYGEN-on:
+ @${MKDIR} ${STAGEDIR}${DOCSDIR}/html
+ cd ${BUILD_WRKSRC}/doc/html && \
+ ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR}/html
+ @${FIND} -P ${STAGEDIR}${DOCSDIR} -type f 2>/dev/null | \
+ ${SED} -ne 's|^${STAGEDIR}${PREFIX}/||p' >> ${TMPPLIST}
+
+.include <bsd.port.mk>
diff --git a/security/qgpgme/distinfo b/security/qgpgme/distinfo
new file mode 100644
index 000000000000..86a926dc2776
--- /dev/null
+++ b/security/qgpgme/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1750277661
+SHA256 (qgpgme-2.0.0.tar.xz) = 15645b2475cca6118eb2ed331b3a8d9442c9d4019c3846ba3f6d25321b4a61ad
+SIZE (qgpgme-2.0.0.tar.xz) = 188552
diff --git a/security/qgpgme/pkg-descr b/security/qgpgme/pkg-descr
new file mode 100644
index 000000000000..79dc974a22a3
--- /dev/null
+++ b/security/qgpgme/pkg-descr
@@ -0,0 +1,15 @@
+QGpgme provides a very high level Qt API around GpgMEpp, the GPGME C++
+bindings.
+
+There are two general concepts in QGpgME. Data abstraction through
+GpgMEpp's Dataprovider interface and the Job pattern.
+
+Data can be provided with QByteArrayDataProvider or QIODeviceDataProvider
+which can be constructed from their respective types. This means you can
+pass a QFile, QProcess, QString, etc. directly to GPGME.
+
+To provide a stable API / ABI and because of historic reasons in libkleo
+(where QGpgME was originally developed as an abstract crypto backend),
+QGpgME only provides abstract interfaces as public API while the actual
+implementation happens in the private QGpgME prefixed classes.
+
diff --git a/security/gpgme-qt/pkg-plist b/security/qgpgme/pkg-plist
index 5fcfbc386950..e4b0eb3711f3 100644
--- a/security/gpgme-qt/pkg-plist
+++ b/security/qgpgme/pkg-plist
@@ -19,7 +19,6 @@ include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/QGpgME/EncryptJob
include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/QGpgME/ExportJob
include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/QGpgME/FileListDataProvider
include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/QGpgME/GpgCardJob
-include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/QGpgME/HierarchicalKeyListJob
include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/QGpgME/ImportFromKeyserverJob
include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/QGpgME/ImportJob
include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/QGpgME/Job
@@ -69,7 +68,6 @@ include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/qgpgme/encryptjob.h
include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/qgpgme/exportjob.h
include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/qgpgme/filelistdataprovider.h
include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/qgpgme/gpgcardjob.h
-include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/qgpgme/hierarchicalkeylistjob.h
include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/qgpgme/importfromkeyserverjob.h
include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/qgpgme/importjob.h
include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/qgpgme/job.h
@@ -100,8 +98,12 @@ include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/qgpgme/wkdlookupjob.h
include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/qgpgme/wkdlookupresult.h
include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/qgpgme/wkdrefreshjob.h
include/qgpgme-%%QGPGME_INCLUDE_SUFFIX%%/qgpgme/wkspublishjob.h
+lib/cmake/QGpgme%%QGPGME_CMAKE_SUFFIX%%/FindGpgme.cmake
+lib/cmake/QGpgme%%QGPGME_CMAKE_SUFFIX%%/FindLibGpgError.cmake
lib/cmake/QGpgme%%QGPGME_CMAKE_SUFFIX%%/QGpgme%%QGPGME_CMAKE_SUFFIX%%Config.cmake
lib/cmake/QGpgme%%QGPGME_CMAKE_SUFFIX%%/QGpgme%%QGPGME_CMAKE_SUFFIX%%ConfigVersion.cmake
+lib/cmake/QGpgme%%QGPGME_CMAKE_SUFFIX%%/QGpgme%%QGPGME_CMAKE_SUFFIX%%Targets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/QGpgme%%QGPGME_CMAKE_SUFFIX%%/QGpgme%%QGPGME_CMAKE_SUFFIX%%Targets.cmake
lib/libqgpgme%%QGPGME_LIB_SUFFIX%%.so
lib/libqgpgme%%QGPGME_LIB_SUFFIX%%.so.15
-lib/libqgpgme%%QGPGME_LIB_SUFFIX%%.so.15.6.2
+lib/libqgpgme%%QGPGME_LIB_SUFFIX%%.so.15.7.0
diff --git a/security/rubygem-gpgme/Makefile b/security/rubygem-gpgme/Makefile
index b88403fc738b..01afb9d78c35 100644
--- a/security/rubygem-gpgme/Makefile
+++ b/security/rubygem-gpgme/Makefile
@@ -1,6 +1,6 @@
PORTNAME= gpgme
PORTVERSION= 2.0.24
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= security rubygems
MASTER_SITES= RG
diff --git a/security/rubygem-gpgme/files/patch-ext-gpgme-extconf.rb b/security/rubygem-gpgme/files/patch-ext_gpgme_extconf.rb
index e14b99204578..e0a3bbcbbf76 100644
--- a/security/rubygem-gpgme/files/patch-ext-gpgme-extconf.rb
+++ b/security/rubygem-gpgme/files/patch-ext_gpgme_extconf.rb
@@ -1,10 +1,10 @@
---- ext/gpgme/extconf.rb.orig 2022-10-13 10:24:31 UTC
+--- ext/gpgme/extconf.rb.orig 2025-06-24 09:21:26 UTC
+++ ext/gpgme/extconf.rb
-@@ -60,7 +60,6 @@ follows:
+@@ -63,7 +63,6 @@ EOS
EOS
require 'rubygems'
- require 'mini_portile2'
- libgpg_error_recipe = MiniPortile.new('libgpg-error', '1.46').tap do |recipe|
+ libgpg_error_recipe = MiniPortile.new('libgpg-error', '1.47').tap do |recipe|
recipe.target = File.join(ROOT, "ports")
diff --git a/security/rubygem-gpgme/files/patch-ext_gpgme_gpgme__n.c b/security/rubygem-gpgme/files/patch-ext_gpgme_gpgme__n.c
new file mode 100644
index 000000000000..d0c71e09bb17
--- /dev/null
+++ b/security/rubygem-gpgme/files/patch-ext_gpgme_gpgme__n.c
@@ -0,0 +1,59 @@
+The trustlist feature, which only worked for a short period in 2003, was
+removed in GpgME 2.0.0.
+
+The gpgme_attr_t enums and their functions, which have been marked deprecated
+since 2003, were removed in GpgME 2.0.0.
+
+--- ext/gpgme/gpgme_n.c.orig 2025-06-23 05:28:53 UTC
++++ ext/gpgme/gpgme_n.c
+@@ -1633,6 +1633,7 @@ rb_s_gpgme_op_card_edit_start (VALUE dummy, VALUE vctx
+ return LONG2NUM(err);
+ }
+
++#if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER < 0x020000
+ static VALUE
+ rb_s_gpgme_op_trustlist_start (VALUE dummy, VALUE vctx, VALUE vpattern,
+ VALUE vmax_level)
+@@ -1696,6 +1697,7 @@ rb_s_gpgme_op_trustlist_end (VALUE dummy, VALUE vctx)
+ err = gpgme_op_trustlist_end (ctx);
+ return LONG2NUM(err);
+ }
++#endif
+
+ static VALUE
+ rb_s_gpgme_op_decrypt (VALUE dummy, VALUE vctx, VALUE vcipher, VALUE vplain)
+@@ -2558,13 +2560,15 @@ Init_gpgme_n (void)
+ rb_define_module_function (mGPGME, "gpgme_op_card_edit_start",
+ rb_s_gpgme_op_card_edit_start, 5);
+
+- /* Trust Item Management */
++ /* Trust Item Management removed in 2.0.0 */
++#if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER < 0x020000
+ rb_define_module_function (mGPGME, "gpgme_op_trustlist_start",
+ rb_s_gpgme_op_trustlist_start, 3);
+ rb_define_module_function (mGPGME, "gpgme_op_trustlist_next",
+ rb_s_gpgme_op_trustlist_next, 2);
+ rb_define_module_function (mGPGME, "gpgme_op_trustlist_end",
+ rb_s_gpgme_op_trustlist_end, 1);
++#endif
+
+ /* Decrypt */
+ rb_define_module_function (mGPGME, "gpgme_op_decrypt",
+@@ -2805,7 +2809,8 @@ Init_gpgme_n (void)
+ rb_define_const (mGPGME, "GPGME_SIG_MODE_CLEAR",
+ INT2FIX(GPGME_SIG_MODE_CLEAR));
+
+- /* gpgme_attr_t */
++ /* gpgme_attr_t removed in 2.0.0 */
++#if defined(GPGME_VERSION_NUMBER) && GPGME_VERSION_NUMBER < 0x020000
+ rb_define_const (mGPGME, "GPGME_ATTR_KEYID",
+ INT2FIX(GPGME_ATTR_KEYID));
+ rb_define_const (mGPGME, "GPGME_ATTR_FPR",
+@@ -2868,6 +2873,7 @@ Init_gpgme_n (void)
+ INT2FIX(GPGME_ATTR_ERRTOK));
+ rb_define_const (mGPGME, "GPGME_ATTR_SIG_SUMMARY",
+ INT2FIX(GPGME_ATTR_SIG_SUMMARY));
++#endif
+
+ /* gpgme_validity_t */
+ rb_define_const (mGPGME, "GPGME_VALIDITY_UNKNOWN",
diff --git a/security/rubygem-gpgme/files/patch-lib_gpgme_constants.rb b/security/rubygem-gpgme/files/patch-lib_gpgme_constants.rb
new file mode 100644
index 000000000000..19766f99d845
--- /dev/null
+++ b/security/rubygem-gpgme/files/patch-lib_gpgme_constants.rb
@@ -0,0 +1,75 @@
+The gpgme_attr_t enums and their functions, which have been marked deprecated
+since 2003, were removed in GpgME 2.0.0.
+
+--- lib/gpgme/constants.rb.orig 2025-06-23 05:42:19 UTC
++++ lib/gpgme/constants.rb
+@@ -1,36 +1,38 @@ module GPGME
+ module GPGME
+
+- ATTR_ALGO = GPGME_ATTR_ALGO
+- ATTR_CAN_CERTIFY = GPGME_ATTR_CAN_CERTIFY
+- ATTR_CAN_ENCRYPT = GPGME_ATTR_CAN_ENCRYPT
+- ATTR_CAN_SIGN = GPGME_ATTR_CAN_SIGN
+- ATTR_CHAINID = GPGME_ATTR_CHAINID
+- ATTR_COMMENT = GPGME_ATTR_COMMENT
+- ATTR_CREATED = GPGME_ATTR_CREATED
+- ATTR_EMAIL = GPGME_ATTR_EMAIL
+- ATTR_ERRTOK = GPGME_ATTR_ERRTOK
+- ATTR_EXPIRE = GPGME_ATTR_EXPIRE
+- ATTR_FPR = GPGME_ATTR_FPR
+- ATTR_ISSUER = GPGME_ATTR_ISSUER
+- ATTR_IS_SECRET = GPGME_ATTR_IS_SECRET
+- ATTR_KEYID = GPGME_ATTR_KEYID
+- ATTR_KEY_CAPS = GPGME_ATTR_KEY_CAPS
+- ATTR_KEY_DISABLED = GPGME_ATTR_KEY_DISABLED
+- ATTR_KEY_EXPIRED = GPGME_ATTR_KEY_EXPIRED
+- ATTR_KEY_INVALID = GPGME_ATTR_KEY_INVALID
+- ATTR_KEY_REVOKED = GPGME_ATTR_KEY_REVOKED
+- ATTR_LEN = GPGME_ATTR_LEN
+- ATTR_LEVEL = GPGME_ATTR_LEVEL
+- ATTR_NAME = GPGME_ATTR_NAME
+- ATTR_OTRUST = GPGME_ATTR_OTRUST
+- ATTR_SERIAL = GPGME_ATTR_SERIAL
+- ATTR_SIG_STATUS = GPGME_ATTR_SIG_STATUS
+- ATTR_SIG_SUMMARY = GPGME_ATTR_SIG_SUMMARY
+- ATTR_TYPE = GPGME_ATTR_TYPE
+- ATTR_UID_INVALID = GPGME_ATTR_UID_INVALID
+- ATTR_UID_REVOKED = GPGME_ATTR_UID_REVOKED
+- ATTR_USERID = GPGME_ATTR_USERID
+- ATTR_VALIDITY = GPGME_ATTR_VALIDITY
++ if defined?(GPGME_ATTR_ALGO)
++ ATTR_ALGO = GPGME_ATTR_ALGO
++ ATTR_CAN_CERTIFY = GPGME_ATTR_CAN_CERTIFY
++ ATTR_CAN_ENCRYPT = GPGME_ATTR_CAN_ENCRYPT
++ ATTR_CAN_SIGN = GPGME_ATTR_CAN_SIGN
++ ATTR_CHAINID = GPGME_ATTR_CHAINID
++ ATTR_COMMENT = GPGME_ATTR_COMMENT
++ ATTR_CREATED = GPGME_ATTR_CREATED
++ ATTR_EMAIL = GPGME_ATTR_EMAIL
++ ATTR_ERRTOK = GPGME_ATTR_ERRTOK
++ ATTR_EXPIRE = GPGME_ATTR_EXPIRE
++ ATTR_FPR = GPGME_ATTR_FPR
++ ATTR_ISSUER = GPGME_ATTR_ISSUER
++ ATTR_IS_SECRET = GPGME_ATTR_IS_SECRET
++ ATTR_KEYID = GPGME_ATTR_KEYID
++ ATTR_KEY_CAPS = GPGME_ATTR_KEY_CAPS
++ ATTR_KEY_DISABLED = GPGME_ATTR_KEY_DISABLED
++ ATTR_KEY_EXPIRED = GPGME_ATTR_KEY_EXPIRED
++ ATTR_KEY_INVALID = GPGME_ATTR_KEY_INVALID
++ ATTR_KEY_REVOKED = GPGME_ATTR_KEY_REVOKED
++ ATTR_LEN = GPGME_ATTR_LEN
++ ATTR_LEVEL = GPGME_ATTR_LEVEL
++ ATTR_NAME = GPGME_ATTR_NAME
++ ATTR_OTRUST = GPGME_ATTR_OTRUST
++ ATTR_SERIAL = GPGME_ATTR_SERIAL
++ ATTR_SIG_STATUS = GPGME_ATTR_SIG_STATUS
++ ATTR_SIG_SUMMARY = GPGME_ATTR_SIG_SUMMARY
++ ATTR_TYPE = GPGME_ATTR_TYPE
++ ATTR_UID_INVALID = GPGME_ATTR_UID_INVALID
++ ATTR_UID_REVOKED = GPGME_ATTR_UID_REVOKED
++ ATTR_USERID = GPGME_ATTR_USERID
++ ATTR_VALIDITY = GPGME_ATTR_VALIDITY
++ end
+ DATA_ENCODING_ARMOR = GPGME_DATA_ENCODING_ARMOR
+ DATA_ENCODING_BASE64 = GPGME_DATA_ENCODING_BASE64
+ DATA_ENCODING_BINARY = GPGME_DATA_ENCODING_BINARY
diff --git a/security/seahorse/Makefile b/security/seahorse/Makefile
index 86fdecd11037..76b93450b3f5 100644
--- a/security/seahorse/Makefile
+++ b/security/seahorse/Makefile
@@ -1,10 +1,13 @@
PORTNAME= seahorse
PORTVERSION= 41.0
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= security gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome
+PATCH_SITES= https://gitlab.gnome.org/GNOME/seahorse/-/commit/
+PATCHFILES+= aa68522cc696fa491ccfdff735b77bcf113168d0.patch:-p1 # Fix build with GpgME 2.0.0
+
MAINTAINER= gnome@FreeBSD.org
COMMENT= GNOME application for managing encryption keys (PGP, SSH)
WWW= https://wiki.gnome.org/Apps/Seahorse
diff --git a/security/seahorse/distinfo b/security/seahorse/distinfo
index 2a5f46d36685..614fbb838ea0 100644
--- a/security/seahorse/distinfo
+++ b/security/seahorse/distinfo
@@ -1,3 +1,5 @@
-TIMESTAMP = 1633281709
+TIMESTAMP = 1750438455
SHA256 (gnome/seahorse-41.0.tar.xz) = e6eec09e810448295f547f18c1d5772b65c3edc1d9e5a2595f10b5dde68929f5
SIZE (gnome/seahorse-41.0.tar.xz) = 1371984
+SHA256 (gnome/aa68522cc696fa491ccfdff735b77bcf113168d0.patch) = 026b9ab0bce4b670cc3dd0910cdd5551e5965a32f07e19374c944fd7624bea78
+SIZE (gnome/aa68522cc696fa491ccfdff735b77bcf113168d0.patch) = 715
diff --git a/security/tscli/Makefile b/security/tscli/Makefile
index d86f970157cc..dc2147eb3484 100644
--- a/security/tscli/Makefile
+++ b/security/tscli/Makefile
@@ -1,7 +1,6 @@
PORTNAME= tscli
DISTVERSIONPREFIX= v
-DISTVERSION= 0.0.7
-PORTREVISION= 1
+DISTVERSION= 0.0.8
CATEGORIES= security
MAINTAINER= dtxdf@FreeBSD.org
diff --git a/security/tscli/distinfo b/security/tscli/distinfo
index e938f26fd9d2..efb08192281b 100644
--- a/security/tscli/distinfo
+++ b/security/tscli/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1748984412
-SHA256 (go/security_tscli/tscli-v0.0.7/v0.0.7.mod) = 7a2fdc5e3af52d5109a5e92304981f0504d30dc6d8b60ce0f7e77aad321a7cb6
-SIZE (go/security_tscli/tscli-v0.0.7/v0.0.7.mod) = 2490
-SHA256 (go/security_tscli/tscli-v0.0.7/v0.0.7.zip) = 6e2e69078b0c442f70c0bfc048c2c1f4043445031ae183aea95c58bbaa17422d
-SIZE (go/security_tscli/tscli-v0.0.7/v0.0.7.zip) = 90576
+TIMESTAMP = 1750799402
+SHA256 (go/security_tscli/tscli-v0.0.8/v0.0.8.mod) = af60e402176095e07127536838df7fdce64b4a840bbb23869ac208c04d476f5f
+SIZE (go/security_tscli/tscli-v0.0.8/v0.0.8.mod) = 2796
+SHA256 (go/security_tscli/tscli-v0.0.8/v0.0.8.zip) = 885f4c2b781c29c4b4d53ead18a07b7efcfd68c504996346553b91255a234e50
+SIZE (go/security_tscli/tscli-v0.0.8/v0.0.8.zip) = 92477
diff --git a/security/vuls/Makefile b/security/vuls/Makefile
index 9e88ccf86b2f..f2f41cbbf54c 100644
--- a/security/vuls/Makefile
+++ b/security/vuls/Makefile
@@ -1,7 +1,6 @@
PORTNAME= vuls
DISTVERSIONPREFIX=v
-DISTVERSION= 0.32.0
-PORTREVISION= 2
+DISTVERSION= 0.33.1
CATEGORIES= security
MAINTAINER= girgen@FreeBSD.org
@@ -25,6 +24,9 @@ SUB_LIST= PORTNAME=${PORTNAME} USERS=${USERS} GROUPS=${GROUPS}
USERS= vuls
GROUPS= vuls
+NOT_FOR_ARCHS= i386
+NOT_FOR_ARCHS_REASON_i386= https://gitlab.com/cznic/libc/-/issues/45
+
post-patch:
@${REINPLACE_CMD} -e 's,%%ETCDIR%%,${ETCDIR},' \
${WRKSRC}/subcmds/configtest.go \
diff --git a/security/vuls/distinfo b/security/vuls/distinfo
index 171f6cc2ca7b..1524e85119a6 100644
--- a/security/vuls/distinfo
+++ b/security/vuls/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1747479508
-SHA256 (go/security_vuls/vuls-v0.32.0/v0.32.0.mod) = e3091e79324dcdd3e3c2959a3b9fa4ab03fc4d53a0ce41a76fc793a68b57302e
-SIZE (go/security_vuls/vuls-v0.32.0/v0.32.0.mod) = 20795
-SHA256 (go/security_vuls/vuls-v0.32.0/v0.32.0.zip) = 1eed06de6c88de618a25184d843010c76b30b77a8e554f028a2700a5e267266b
-SIZE (go/security_vuls/vuls-v0.32.0/v0.32.0.zip) = 1389053
+TIMESTAMP = 1750837237
+SHA256 (go/security_vuls/vuls-v0.33.1/v0.33.1.mod) = cffef0d92a21a68ae82e1eeb7dbf6504887496b042af76cb182e1e3fba9ece20
+SIZE (go/security_vuls/vuls-v0.33.1/v0.33.1.mod) = 20804
+SHA256 (go/security_vuls/vuls-v0.33.1/v0.33.1.zip) = 0bca1fe58726ef06e60e98d0849baff1c2aff6e1bd0de3722fe64314efec49c3
+SIZE (go/security_vuls/vuls-v0.33.1/v0.33.1.zip) = 1401641
diff --git a/security/vuls/files/patch-vendor_gorm.io_gorm_internal_stmt_store_stmt_store.go b/security/vuls/files/patch-vendor_gorm.io_gorm_internal_stmt_store_stmt_store.go
deleted file mode 100644
index a249bd5099ae..000000000000
--- a/security/vuls/files/patch-vendor_gorm.io_gorm_internal_stmt_store_stmt_store.go
+++ /dev/null
@@ -1,29 +0,0 @@
-commit 8c4e8e2d2a63ef019048bd988a2016948605920b
-Author: iTanken <23544702+iTanken@users.noreply.github.com>
-Date: Sun Apr 27 14:05:16 2025 +0800
-
- fix: int type variable defaultMaxSize overflows in 32-bit environment (#7439)
-
- Refs: #7435
-
-diff --git a/internal/stmt_store/stmt_store.go b/internal/stmt_store/stmt_store.go
-index 7068419..a82b2cf 100644
---- vendor/gorm.io/gorm/internal/stmt_store/stmt_store.go
-+++ vendor/gorm.io/gorm/internal/stmt_store/stmt_store.go
-@@ -3,6 +3,7 @@ package stmt_store
- import (
- "context"
- "database/sql"
-+ "math"
- "sync"
- "time"
-
-@@ -73,7 +74,7 @@ type Store interface {
- // the cache can theoretically store as many elements as possible.
- // (1 << 63) - 1 is the maximum value that an int64 type can represent.
- const (
-- defaultMaxSize = (1 << 63) - 1
-+ defaultMaxSize = math.MaxInt
- // defaultTTL defines the default time-to-live (TTL) for each cache entry.
- // When the TTL for cache entries is not specified, each cache entry will expire after 24 hours.
- defaultTTL = time.Hour * 24
diff --git a/security/vuxml/vuln/2025.xml b/security/vuxml/vuln/2025.xml
index 7ddafc13c211..88ecf66a42a7 100644
--- a/security/vuxml/vuln/2025.xml
+++ b/security/vuxml/vuln/2025.xml
@@ -2045,7 +2045,7 @@
</vuln>
<vuln vid="a8a1a8e7-2e85-11f0-a989-b42e991fc52e">
- <topic>Mozilla -- memory corrupton</topic>
+ <topic>Mozilla -- memory corruption</topic>
<affects>
<package>
<name>firefox</name>
@@ -2215,7 +2215,7 @@
</vuln>
<vuln vid="9c37a02e-2e85-11f0-a989-b42e991fc52e">
- <topic>Mozilla -- javescript content execution</topic>
+ <topic>Mozilla -- javascript content execution</topic>
<affects>
<package>
<name>firefox</name>