summaryrefslogtreecommitdiff
path: root/dev-cpp/scitokens-cpp
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-06-12 19:09:37 -0500
committerroot <root@alpha.trunkmasters.com>2026-06-12 19:09:37 -0500
commitb590c8d7572b727d565cc0b8ff660d43569845de (patch)
tree06f7a4102ea4e845df8b66660f252920d52952f9 /dev-cpp/scitokens-cpp
parent24f9cbfc4c34fdb6a6e03311674414e881ceab47 (diff)
downloadbaldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.gz
baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.xz
baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.zip
Adding metadata
Diffstat (limited to 'dev-cpp/scitokens-cpp')
-rw-r--r--dev-cpp/scitokens-cpp/Manifest8
-rw-r--r--dev-cpp/scitokens-cpp/files/scitokens-cpp-1.1.0-invalid-vector-access.patch24
-rw-r--r--dev-cpp/scitokens-cpp/metadata.xml24
-rw-r--r--dev-cpp/scitokens-cpp/scitokens-cpp-1.1.0-r1.ebuild61
-rw-r--r--dev-cpp/scitokens-cpp/scitokens-cpp-1.1.1.ebuild57
-rw-r--r--dev-cpp/scitokens-cpp/scitokens-cpp-1.1.2.ebuild57
-rw-r--r--dev-cpp/scitokens-cpp/scitokens-cpp-1.1.3.ebuild57
-rw-r--r--dev-cpp/scitokens-cpp/scitokens-cpp-1.2.0.ebuild57
-rw-r--r--dev-cpp/scitokens-cpp/scitokens-cpp-1.3.0.ebuild60
-rw-r--r--dev-cpp/scitokens-cpp/scitokens-cpp-1.4.0.ebuild60
-rw-r--r--dev-cpp/scitokens-cpp/scitokens-cpp-1.4.1.ebuild60
11 files changed, 525 insertions, 0 deletions
diff --git a/dev-cpp/scitokens-cpp/Manifest b/dev-cpp/scitokens-cpp/Manifest
new file mode 100644
index 000000000000..44ea97cd87e8
--- /dev/null
+++ b/dev-cpp/scitokens-cpp/Manifest
@@ -0,0 +1,8 @@
+DIST scitokens-cpp-1.1.0.tar.gz 311446 BLAKE2B a515d834df04125ae9167cb4656def7df43c9f1ba6d701379257cdd0fd51b61a119e6222591fbe9c1d7ac7000b1b4590d12e9f9238810c0791397a9d9846f6f7 SHA512 e71474afbde45149fbd642918e802f7430603a14add7171525fd08fdfbfb9dc4ae5b151341d2c11b294f352cdf76315e5c1f089daca12a1c9db304f6b2c89276
+DIST scitokens-cpp-1.1.1.tar.gz 311677 BLAKE2B ea880a50b5e3e6f17c4bb11b7021df5e22cb4bb496fc17395a9886ebd359bc7f2522a0b1dd89e8aaa477a1302613f5da6d0a40f903e056736abc35ca1230518e SHA512 f5b42078fce6c1e812eedb456cf1275eaddfae5715193fd566f1f7a598b5632f81f3893efb220c57ff89d233c375c68785c8a6a1c3d3db6d3757979d87916265
+DIST scitokens-cpp-1.1.2.tar.gz 312169 BLAKE2B de6053f9319074b442e074b643042095e0bb5c796d1874ec1f7ace35b8f45825314fc2b086820d86b4f7d384974ce1b62ae4180bfc14744b722cf5c240d7521c SHA512 d7898b5717b6df6cda7c30c33dd993e81f30befa62522a920db96ca39611658b16347338c67e3acbe7a9c88d5e273d935ec1109420e7b66c700136315e513938
+DIST scitokens-cpp-1.1.3.tar.gz 312260 BLAKE2B b77faab945b6e3ec86bf9e6d8d49a8e29a104ff651cd99802cb845322d5bf364431dc9005cecdcb001a2cf0a599242883804d3b3bf8f3f8ea6152d0f224585c8 SHA512 2c3822f6bf8cd2b8d6d8f30c5499cf0fca3dd212f83af9de7116c84b06ffc9a2f26ec37a3e42f90f947a8a82dfb0d279529f46a175524e9b582f2afd8a02b5a7
+DIST scitokens-cpp-1.2.0.tar.gz 118523 BLAKE2B 42f93059886c80080f6a73e14d48cbe3c03b1f4bebc50c262f036801539a6ae322599ce888543917026d102d944c370111aeeb2477ee10075318541a5dcc6abb SHA512 5043d368fd55d4644f21822537e5be11ece5eba37b3fe6f75aba9fcfcc0af49a99ddfcb87d83f8a85c3ef484807fa847469749ee02dc7d08dba9ba5245c52f73
+DIST scitokens-cpp-1.3.0.tar.gz 168694 BLAKE2B f3a2e2f38143a116f881350f4ad570be299ed42cb7338a8a3761b8e30206eba4baad419838062101908efb1d9ea669d14bf3e3918528fb40496a756e07732efe SHA512 5076d8e9a141dbcec382171b85dadcdeb7c8bc9fe36f6d187f2c2ee8176a7f00dcabc0fd4f8ef2532faf921dfa289844c90153977eb20eb6376c501e1f118fdf
+DIST scitokens-cpp-1.4.0.tar.gz 172863 BLAKE2B b0a7d9c99c2b5a1310866f2cc2ac35452be883a54854bbff3276e9b308194ad5ceec9f512310b48e0b4d462c0dff0016de39573a6ba914f1fd0a5a5a6d585d15 SHA512 9e4c82a0e94fecce9d6e71a2fa6fa3e1401d34563629b18100d51ec1d60202a913ea4ae7c02ca06da8289ecf4147723247193b4f1ed1f3b6d779e3bafa8c8537
+DIST scitokens-cpp-1.4.1.tar.gz 175284 BLAKE2B 4f4711f8b7adb27f7a6ba75c6081a02c2608261d01792c02faf33aed32e5572cb7e2df8163022961e9e2aef13bc178769936ef93276727fd156dff9d644c1c0f SHA512 5873ace93cf2ea6bec0d0f9023c9ebb4afda244f776f8d07b51b1a04cd851d92125db985aca3c1e51ed59260487b4b4679b981e108b248045cf8ad51bb5862a8
diff --git a/dev-cpp/scitokens-cpp/files/scitokens-cpp-1.1.0-invalid-vector-access.patch b/dev-cpp/scitokens-cpp/files/scitokens-cpp-1.1.0-invalid-vector-access.patch
new file mode 100644
index 000000000000..db524b4245d5
--- /dev/null
+++ b/dev-cpp/scitokens-cpp/files/scitokens-cpp-1.1.0-invalid-vector-access.patch
@@ -0,0 +1,24 @@
+Fix invalid std::vector access (visible with tests on hardened systems)
+
+From: Mattias Ellert <mattias.ellert@physics.uu.se>
+Bug: https://github.com/scitokens/scitokens-cpp/pull/126
+Bug: https://bugs.gentoo.org/922679
+
+---
+ src/scitokens_internal.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/src/scitokens_internal.cpp
++++ b/src/scitokens_internal.cpp
+@@ -978,9 +978,9 @@ bool scitokens::Validator::store_public_ec_key(const std::string &issuer,
+ auto x_num = BN_num_bytes(x_bignum.get());
+ auto y_num = BN_num_bytes(y_bignum.get());
+ std::vector<unsigned char> x_bin;
+- x_bin.reserve(x_num);
++ x_bin.resize(x_num);
+ std::vector<unsigned char> y_bin;
+- y_bin.reserve(y_num);
++ y_bin.resize(y_num);
+ BN_bn2bin(x_bignum.get(), &x_bin[0]);
+ BN_bn2bin(y_bignum.get(), &y_bin[0]);
+ std::string x_str(reinterpret_cast<char *>(&x_bin[0]), x_num);
diff --git a/dev-cpp/scitokens-cpp/metadata.xml b/dev-cpp/scitokens-cpp/metadata.xml
new file mode 100644
index 000000000000..9f93fbdfabc8
--- /dev/null
+++ b/dev-cpp/scitokens-cpp/metadata.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>o.freyermuth@googlemail.com</email>
+ <name>Oliver Freyermuth</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>amadio@gentoo.org</email>
+ <name>Guilherme Amadio</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <longdescription lang="en">
+ SciTokens provide a token format for distributed authorization. The tokens are
+ self-describing, can be verified in a distributed fashion (no need to contact
+ the issuer to determine if the token is valid). This is convenient for a
+ federated environment where several otherwise-independent storage endpoints
+ want to delegate trust for an issuer for managing a storage allocation.
+ </longdescription>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-cpp/scitokens-cpp/scitokens-cpp-1.1.0-r1.ebuild b/dev-cpp/scitokens-cpp/scitokens-cpp-1.1.0-r1.ebuild
new file mode 100644
index 000000000000..80259264e946
--- /dev/null
+++ b/dev-cpp/scitokens-cpp/scitokens-cpp-1.1.0-r1.ebuild
@@ -0,0 +1,61 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+if [[ ${PV} == *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/scitokens/scitokens-cpp"
+else
+ SRC_URI="https://github.com/scitokens/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="amd64 x86"
+fi
+
+DESCRIPTION="C++ implementation of the SciTokens library with a C library interface"
+HOMEPAGE="https://scitokens.org/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="test"
+
+DEPEND="
+ <dev-cpp/jwt-cpp-0.7.0[picojson]
+ dev-db/sqlite
+ dev-libs/openssl:0=
+ net-misc/curl:0=
+ kernel_linux? ( sys-apps/util-linux )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+ test? ( dev-cpp/gtest )
+"
+RESTRICT="!test? ( test )"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.1.0-invalid-vector-access.patch
+)
+
+src_prepare() {
+ # Unbundle dev-cpp/gtest, dev-cpp/jwt-cpp
+ rm -r vendor || die
+ # Fix include path for picojson.
+ find src/ \( -name '*.cpp' -o -name '*.h' \) -type f -print0 | \
+ xargs -0 sed -r -e "s:picojson/picojson\.h:picojson.h:g" -i || die
+ # Disable network-based tests relying on external services.
+ if use test; then
+ sed -i -e '/^TEST_F/s#RefreshTest#DISABLED_RefreshTest#' \
+ -e '/^TEST_F/s#RefreshExpiredTest#DISABLED_RefreshExpiredTest#' test/main.cpp || die
+ fi
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DSCITOKENS_BUILD_UNITTESTS="$(usex test)"
+ -DSCITOKENS_EXTERNAL_GTEST=YES
+ )
+ cmake_src_configure
+}
diff --git a/dev-cpp/scitokens-cpp/scitokens-cpp-1.1.1.ebuild b/dev-cpp/scitokens-cpp/scitokens-cpp-1.1.1.ebuild
new file mode 100644
index 000000000000..c12cad405a66
--- /dev/null
+++ b/dev-cpp/scitokens-cpp/scitokens-cpp-1.1.1.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+if [[ ${PV} == *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/scitokens/scitokens-cpp"
+else
+ SRC_URI="https://github.com/scitokens/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~x86"
+fi
+
+DESCRIPTION="C++ implementation of the SciTokens library with a C library interface"
+HOMEPAGE="https://scitokens.org/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="test"
+
+DEPEND="
+ <dev-cpp/jwt-cpp-0.7.0[picojson]
+ dev-db/sqlite
+ dev-libs/openssl:0=
+ net-misc/curl:0=
+ kernel_linux? ( sys-apps/util-linux )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+ test? ( dev-cpp/gtest )
+"
+RESTRICT="!test? ( test )"
+
+src_prepare() {
+ # Unbundle dev-cpp/gtest, dev-cpp/jwt-cpp
+ rm -r vendor || die
+ # Fix include path for picojson.
+ find src/ \( -name '*.cpp' -o -name '*.h' \) -type f -print0 | \
+ xargs -0 sed -r -e "s:picojson/picojson\.h:picojson.h:g" -i || die
+ # Disable network-based tests relying on external services.
+ if use test; then
+ sed -i -e '/^TEST_F/s#RefreshTest#DISABLED_RefreshTest#' \
+ -e '/^TEST_F/s#RefreshExpiredTest#DISABLED_RefreshExpiredTest#' test/main.cpp || die
+ fi
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DSCITOKENS_BUILD_UNITTESTS="$(usex test)"
+ -DSCITOKENS_EXTERNAL_GTEST=YES
+ )
+ cmake_src_configure
+}
diff --git a/dev-cpp/scitokens-cpp/scitokens-cpp-1.1.2.ebuild b/dev-cpp/scitokens-cpp/scitokens-cpp-1.1.2.ebuild
new file mode 100644
index 000000000000..91251a33990d
--- /dev/null
+++ b/dev-cpp/scitokens-cpp/scitokens-cpp-1.1.2.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+if [[ ${PV} == *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/scitokens/scitokens-cpp"
+else
+ SRC_URI="https://github.com/scitokens/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="amd64 x86"
+fi
+
+DESCRIPTION="C++ implementation of the SciTokens library with a C library interface"
+HOMEPAGE="https://scitokens.org/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="test"
+
+DEPEND="
+ <dev-cpp/jwt-cpp-0.7.0[picojson]
+ dev-db/sqlite
+ dev-libs/openssl:0=
+ net-misc/curl:0=
+ kernel_linux? ( sys-apps/util-linux )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+ test? ( dev-cpp/gtest )
+"
+RESTRICT="!test? ( test )"
+
+src_prepare() {
+ # Unbundle dev-cpp/gtest, dev-cpp/jwt-cpp
+ rm -r vendor || die
+ # Fix include path for picojson.
+ find src/ \( -name '*.cpp' -o -name '*.h' \) -type f -print0 | \
+ xargs -0 sed -r -e "s:picojson/picojson\.h:picojson.h:g" -i || die
+ # Disable network-based tests relying on external services.
+ if use test; then
+ sed -i -e '/^TEST_F/s#RefreshTest#DISABLED_RefreshTest#' \
+ -e '/^TEST_F/s#RefreshExpiredTest#DISABLED_RefreshExpiredTest#' test/main.cpp || die
+ fi
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DSCITOKENS_BUILD_UNITTESTS="$(usex test)"
+ -DSCITOKENS_EXTERNAL_GTEST=YES
+ )
+ cmake_src_configure
+}
diff --git a/dev-cpp/scitokens-cpp/scitokens-cpp-1.1.3.ebuild b/dev-cpp/scitokens-cpp/scitokens-cpp-1.1.3.ebuild
new file mode 100644
index 000000000000..e550072cb231
--- /dev/null
+++ b/dev-cpp/scitokens-cpp/scitokens-cpp-1.1.3.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+if [[ ${PV} == *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/scitokens/scitokens-cpp"
+else
+ SRC_URI="https://github.com/scitokens/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="amd64 x86"
+fi
+
+DESCRIPTION="C++ implementation of the SciTokens library with a C library interface"
+HOMEPAGE="https://scitokens.org/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="test"
+
+DEPEND="
+ <dev-cpp/jwt-cpp-0.7.0[picojson]
+ dev-db/sqlite
+ dev-libs/openssl:0=
+ net-misc/curl:0=
+ kernel_linux? ( sys-apps/util-linux )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+ test? ( dev-cpp/gtest )
+"
+RESTRICT="!test? ( test )"
+
+src_prepare() {
+ # Unbundle dev-cpp/gtest, dev-cpp/jwt-cpp
+ rm -r vendor || die
+ # Fix include path for picojson.
+ find src/ \( -name '*.cpp' -o -name '*.h' \) -type f -print0 | \
+ xargs -0 sed -r -e "s:picojson/picojson\.h:picojson.h:g" -i || die
+ # Disable network-based tests relying on external services.
+ if use test; then
+ sed -i -e '/^TEST_F/s#RefreshTest#DISABLED_RefreshTest#' \
+ -e '/^TEST_F/s#RefreshExpiredTest#DISABLED_RefreshExpiredTest#' test/main.cpp || die
+ fi
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DSCITOKENS_BUILD_UNITTESTS="$(usex test)"
+ -DSCITOKENS_EXTERNAL_GTEST=YES
+ )
+ cmake_src_configure
+}
diff --git a/dev-cpp/scitokens-cpp/scitokens-cpp-1.2.0.ebuild b/dev-cpp/scitokens-cpp/scitokens-cpp-1.2.0.ebuild
new file mode 100644
index 000000000000..76c50582f61c
--- /dev/null
+++ b/dev-cpp/scitokens-cpp/scitokens-cpp-1.2.0.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+if [[ ${PV} == *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/scitokens/scitokens-cpp"
+else
+ SRC_URI="https://github.com/scitokens/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="amd64 x86"
+fi
+
+DESCRIPTION="C++ implementation of the SciTokens library with a C library interface"
+HOMEPAGE="https://scitokens.org/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="test"
+
+DEPEND="
+ >=dev-cpp/jwt-cpp-0.7.0[picojson]
+ dev-db/sqlite
+ dev-libs/openssl:0=
+ net-misc/curl:0=
+ kernel_linux? ( sys-apps/util-linux )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+ test? ( dev-cpp/gtest )
+"
+RESTRICT="!test? ( test )"
+
+src_prepare() {
+ # Unbundle dev-cpp/gtest, dev-cpp/jwt-cpp
+ rm -r vendor || die
+ # Fix include path for picojson.
+ find src/ \( -name '*.cpp' -o -name '*.h' \) -type f -print0 | \
+ xargs -0 sed -r -e "s:picojson/picojson\.h:picojson.h:g" -i || die
+ # Disable network-based tests relying on external services.
+ if use test; then
+ sed -i -e '/^TEST_F/s#RefreshTest#DISABLED_RefreshTest#' \
+ -e '/^TEST_F/s#RefreshExpiredTest#DISABLED_RefreshExpiredTest#' test/main.cpp || die
+ fi
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DSCITOKENS_BUILD_UNITTESTS="$(usex test)"
+ -DSCITOKENS_EXTERNAL_GTEST=YES
+ )
+ cmake_src_configure
+}
diff --git a/dev-cpp/scitokens-cpp/scitokens-cpp-1.3.0.ebuild b/dev-cpp/scitokens-cpp/scitokens-cpp-1.3.0.ebuild
new file mode 100644
index 000000000000..6ec21126d376
--- /dev/null
+++ b/dev-cpp/scitokens-cpp/scitokens-cpp-1.3.0.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+if [[ ${PV} == *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/scitokens/scitokens-cpp"
+else
+ SRC_URI="https://github.com/scitokens/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="amd64 x86"
+fi
+
+DESCRIPTION="C++ implementation of the SciTokens library with a C library interface"
+HOMEPAGE="https://scitokens.org/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="test"
+
+DEPEND="
+ >=dev-cpp/jwt-cpp-0.7.0[picojson]
+ dev-db/sqlite
+ dev-libs/openssl:0=
+ net-misc/curl:0=
+ kernel_linux? ( sys-apps/util-linux )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+ test? ( dev-cpp/gtest )
+"
+RESTRICT="!test? ( test )"
+
+src_prepare() {
+ # Unbundle dev-cpp/gtest, dev-cpp/jwt-cpp
+ rm -r vendor || die
+ # Fix include path for picojson.
+ find test/ src/ \( -name '*.cpp' -o -name '*.h' \) -type f -print0 | \
+ xargs -0 sed -r -e "s:picojson/picojson\.h:picojson.h:g" -i || die
+ # Disable network-based tests relying on external services.
+ if use test; then
+ sed -i -e '/^TEST_F/s#RefreshTest#DISABLED_RefreshTest#' \
+ -e '/^TEST_F/s#RefreshExpiredTest#DISABLED_RefreshExpiredTest#' \
+ -e '/^TEST_F/s#LoadJwksTriggersRefreshWhenStale#DISABLED_LoadJwksTriggersRefreshWhenStale#' \
+ -e '/^TEST_F/s#NegativeCacheTest#DISABLED_NegativeCacheTest#' \
+ test/main.cpp || die
+ fi
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DSCITOKENS_BUILD_UNITTESTS="$(usex test)"
+ -DSCITOKENS_EXTERNAL_GTEST=YES
+ )
+ cmake_src_configure
+}
diff --git a/dev-cpp/scitokens-cpp/scitokens-cpp-1.4.0.ebuild b/dev-cpp/scitokens-cpp/scitokens-cpp-1.4.0.ebuild
new file mode 100644
index 000000000000..682563e02db8
--- /dev/null
+++ b/dev-cpp/scitokens-cpp/scitokens-cpp-1.4.0.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+if [[ ${PV} == *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/scitokens/scitokens-cpp"
+else
+ SRC_URI="https://github.com/scitokens/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~x86"
+fi
+
+DESCRIPTION="C++ implementation of the SciTokens library with a C library interface"
+HOMEPAGE="https://scitokens.org/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="test"
+
+DEPEND="
+ >=dev-cpp/jwt-cpp-0.7.0[picojson]
+ dev-db/sqlite
+ dev-libs/openssl:0=
+ net-misc/curl:0=
+ kernel_linux? ( sys-apps/util-linux )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+ test? ( dev-cpp/gtest )
+"
+RESTRICT="!test? ( test )"
+
+src_prepare() {
+ # Unbundle dev-cpp/gtest, dev-cpp/jwt-cpp
+ rm -r vendor || die
+ # Fix include path for picojson.
+ find test/ src/ \( -name '*.cpp' -o -name '*.h' \) -type f -print0 | \
+ xargs -0 sed -r -e "s:picojson/picojson\.h:picojson.h:g" -i || die
+ # Disable network-based tests relying on external services.
+ if use test; then
+ sed -i -e '/^TEST_F/s#RefreshTest#DISABLED_RefreshTest#' \
+ -e '/^TEST_F/s#RefreshExpiredTest#DISABLED_RefreshExpiredTest#' \
+ -e '/^TEST_F/s#LoadJwksTriggersRefreshWhenStale#DISABLED_LoadJwksTriggersRefreshWhenStale#' \
+ -e '/^TEST_F/s#NegativeCacheTest#DISABLED_NegativeCacheTest#' \
+ test/main.cpp || die
+ fi
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DSCITOKENS_BUILD_UNITTESTS="$(usex test)"
+ -DSCITOKENS_EXTERNAL_GTEST=YES
+ )
+ cmake_src_configure
+}
diff --git a/dev-cpp/scitokens-cpp/scitokens-cpp-1.4.1.ebuild b/dev-cpp/scitokens-cpp/scitokens-cpp-1.4.1.ebuild
new file mode 100644
index 000000000000..682563e02db8
--- /dev/null
+++ b/dev-cpp/scitokens-cpp/scitokens-cpp-1.4.1.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+if [[ ${PV} == *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/scitokens/scitokens-cpp"
+else
+ SRC_URI="https://github.com/scitokens/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~x86"
+fi
+
+DESCRIPTION="C++ implementation of the SciTokens library with a C library interface"
+HOMEPAGE="https://scitokens.org/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="test"
+
+DEPEND="
+ >=dev-cpp/jwt-cpp-0.7.0[picojson]
+ dev-db/sqlite
+ dev-libs/openssl:0=
+ net-misc/curl:0=
+ kernel_linux? ( sys-apps/util-linux )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+ test? ( dev-cpp/gtest )
+"
+RESTRICT="!test? ( test )"
+
+src_prepare() {
+ # Unbundle dev-cpp/gtest, dev-cpp/jwt-cpp
+ rm -r vendor || die
+ # Fix include path for picojson.
+ find test/ src/ \( -name '*.cpp' -o -name '*.h' \) -type f -print0 | \
+ xargs -0 sed -r -e "s:picojson/picojson\.h:picojson.h:g" -i || die
+ # Disable network-based tests relying on external services.
+ if use test; then
+ sed -i -e '/^TEST_F/s#RefreshTest#DISABLED_RefreshTest#' \
+ -e '/^TEST_F/s#RefreshExpiredTest#DISABLED_RefreshExpiredTest#' \
+ -e '/^TEST_F/s#LoadJwksTriggersRefreshWhenStale#DISABLED_LoadJwksTriggersRefreshWhenStale#' \
+ -e '/^TEST_F/s#NegativeCacheTest#DISABLED_NegativeCacheTest#' \
+ test/main.cpp || die
+ fi
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DSCITOKENS_BUILD_UNITTESTS="$(usex test)"
+ -DSCITOKENS_EXTERNAL_GTEST=YES
+ )
+ cmake_src_configure
+}