diff --git a/pgp-certificate-store/build.gradle b/pgp-certificate-store/build.gradle index 8b5dfc18..599407c1 100644 --- a/pgp-certificate-store/build.gradle +++ b/pgp-certificate-store/build.gradle @@ -17,6 +17,7 @@ dependencies { testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junitVersion" // Logging + api "org.slf4j:slf4j-api:$slf4jVersion" testImplementation "ch.qos.logback:logback-classic:$logbackVersion" } diff --git a/pgp-certificate-store/src/main/java/pgp/certificate_store/AbstractCertificateStore.java b/pgp-certificate-store/src/main/java/pgp/certificate_store/AbstractCertificateStore.java new file mode 100644 index 00000000..b95ed5cd --- /dev/null +++ b/pgp-certificate-store/src/main/java/pgp/certificate_store/AbstractCertificateStore.java @@ -0,0 +1,39 @@ +// SPDX-FileCopyrightText: 2022 Paul Schaub +// +// SPDX-License-Identifier: Apache-2.0 + +package pgp.certificate_store; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import pgp.certificate_store.exception.BadDataException; +import pgp.certificate_store.exception.BadNameException; + +import java.io.IOException; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +public abstract class AbstractCertificateStore implements CertificateStore { + + private static final Logger LOGGER = LoggerFactory.getLogger(AbstractCertificateStore.class); + + public Set getCertificatesBySubkeyId(long subkeyId) + throws IOException { + Set identifiers = getCertificatesForSubkeyId(subkeyId); + if (identifiers.isEmpty()) { + return Collections.emptySet(); + } + + Set certificates = new HashSet<>(); + for (String identifier : identifiers) { + try { + certificates.add(getCertificate(identifier)); + } catch (BadNameException | BadDataException e) { + LOGGER.warn("Could not read certificate.", e); + } + } + + return certificates; + } +}