diff --git a/CHANGELOG.md b/CHANGELOG.md index 51b270f..a78481a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,18 +5,6 @@ SPDX-License-Identifier: CC0-1.0 # Cert-D-Java Changelog -## 0.1.2-SNAPSHOT -- `pgp-certificate-store`: - - Rework `Certificate`, `Key` to inherit from `KeyMaterial` - - Rename `CertificateReaderBackend` to `KeyMaterialReaderBackend` - - Rename `CertificateMerger` to `KeyMaterialMerger` - - Rework `PGPCertificateStore` class -- `pgp-cert-d-java`: - - Rework `PGPCertificateDirectory` class by separating out backend logic - - Split interface into `ReadOnlyPGPCertificateDirectory` and `WritingPGPCertificateDirectory` -- `pgp-cert-d-java-jdbc-sqlite-lookup`: - - Add `DatabaseSubkeyLookupFactory` - ## 0.1.1 - Bump `slf4j` to `1.7.36` - Bump `logback` to `1.2.11` diff --git a/pgp-cert-d-java-jdbc-sqlite-lookup/src/main/java/pgp/cert_d/jdbc/sqlite/DatabaseSubkeyLookupFactory.java b/pgp-cert-d-java-jdbc-sqlite-lookup/src/main/java/pgp/cert_d/jdbc/sqlite/DatabaseSubkeyLookupFactory.java deleted file mode 100644 index d2cecd3..0000000 --- a/pgp-cert-d-java-jdbc-sqlite-lookup/src/main/java/pgp/cert_d/jdbc/sqlite/DatabaseSubkeyLookupFactory.java +++ /dev/null @@ -1,33 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Paul Schaub -// -// SPDX-License-Identifier: Apache-2.0 - -package pgp.cert_d.jdbc.sqlite; - -import pgp.cert_d.subkey_lookup.SubkeyLookup; -import pgp.cert_d.subkey_lookup.SubkeyLookupFactory; - -import java.io.File; -import java.io.IOException; -import java.sql.SQLException; - -/** - * Implementation of {@link SubkeyLookupFactory} which creates a SQLite-based {@link DatabaseSubkeyLookup}. - */ -public class DatabaseSubkeyLookupFactory implements SubkeyLookupFactory { - - @Override - public SubkeyLookup createFileBasedInstance(File baseDirectory) { - File databaseFile = new File(baseDirectory, "_pgpainless_subkey_map.db"); - SubkeyLookupDao dao; - try { - if (!databaseFile.exists()) { - databaseFile.createNewFile(); - } - dao = SqliteSubkeyLookupDaoImpl.forDatabaseFile(databaseFile); - } catch (SQLException | IOException e) { - throw new RuntimeException(e); - } - return new DatabaseSubkeyLookup(dao); - } -} diff --git a/pgp-cert-d-java/build.gradle b/pgp-cert-d-java/build.gradle index fabb0a8..9513682 100644 --- a/pgp-cert-d-java/build.gradle +++ b/pgp-cert-d-java/build.gradle @@ -26,8 +26,6 @@ dependencies { // Logging testImplementation "ch.qos.logback:logback-classic:$logbackVersion" - api project(":pgp-certificate-store") - // SQL Subkey table testImplementation project(":pgp-cert-d-java-jdbc-sqlite-lookup") } diff --git a/pgp-cert-d-java/src/main/java/pgp/cert_d/PGPCertificateDirectories.java b/pgp-cert-d-java/src/main/java/pgp/cert_d/PGPCertificateDirectories.java index e248e0c..1dfeefb 100644 --- a/pgp-cert-d-java/src/main/java/pgp/cert_d/PGPCertificateDirectories.java +++ b/pgp-cert-d-java/src/main/java/pgp/cert_d/PGPCertificateDirectories.java @@ -6,10 +6,8 @@ package pgp.cert_d; import pgp.cert_d.backend.FileBasedCertificateDirectoryBackend; import pgp.cert_d.backend.InMemoryCertificateDirectoryBackend; -import pgp.cert_d.subkey_lookup.InMemorySubkeyLookup; -import pgp.cert_d.subkey_lookup.SubkeyLookup; -import pgp.certificate_store.certificate.KeyMaterialReaderBackend; -import pgp.certificate_store.exception.NotAStoreException; +import pgp.cert_d.exception.NotAStoreException; +import pgp.certificate.KeyMaterialReaderBackend; import java.io.File; @@ -20,18 +18,18 @@ public final class PGPCertificateDirectories { } public static PGPCertificateDirectory inMemoryCertificateDirectory(KeyMaterialReaderBackend keyReader) { - return new PGPCertificateDirectory(new InMemoryCertificateDirectoryBackend(keyReader), new InMemorySubkeyLookup()); + return new PGPCertificateDirectory(new InMemoryCertificateDirectoryBackend(keyReader)); } - public static PGPCertificateDirectory defaultFileBasedCertificateDirectory(KeyMaterialReaderBackend keyReader, SubkeyLookup subkeyLookup) + public static PGPCertificateDirectory defaultFileBasedCertificateDirectory(KeyMaterialReaderBackend keyReader) throws NotAStoreException { - return fileBasedCertificateDirectory(keyReader, BaseDirectoryProvider.getDefaultBaseDir(), subkeyLookup); + return fileBasedCertificateDirectory(keyReader, BaseDirectoryProvider.getDefaultBaseDir()); } public static PGPCertificateDirectory fileBasedCertificateDirectory( - KeyMaterialReaderBackend keyReader, File baseDirectory, SubkeyLookup subkeyLookup) + KeyMaterialReaderBackend keyReader, File baseDirectory) throws NotAStoreException { return new PGPCertificateDirectory( - new FileBasedCertificateDirectoryBackend(baseDirectory, keyReader), subkeyLookup); + new FileBasedCertificateDirectoryBackend(baseDirectory, keyReader)); } } diff --git a/pgp-cert-d-java/src/main/java/pgp/cert_d/PGPCertificateDirectory.java b/pgp-cert-d-java/src/main/java/pgp/cert_d/PGPCertificateDirectory.java index c84af4d..48de056 100644 --- a/pgp-cert-d-java/src/main/java/pgp/cert_d/PGPCertificateDirectory.java +++ b/pgp-cert-d-java/src/main/java/pgp/cert_d/PGPCertificateDirectory.java @@ -4,28 +4,23 @@ package pgp.cert_d; -import pgp.cert_d.subkey_lookup.SubkeyLookup; -import pgp.certificate_store.certificate.Certificate; -import pgp.certificate_store.certificate.KeyMaterial; -import pgp.certificate_store.certificate.KeyMaterialMerger; -import pgp.certificate_store.exception.BadDataException; -import pgp.certificate_store.exception.BadNameException; +import pgp.cert_d.exception.BadDataException; +import pgp.cert_d.exception.BadNameException; +import pgp.certificate.Certificate; +import pgp.certificate.KeyMaterial; +import pgp.certificate.KeyMaterialMerger; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; -import java.util.List; -import java.util.Set; public class PGPCertificateDirectory - implements ReadOnlyPGPCertificateDirectory, WritingPGPCertificateDirectory, SubkeyLookup { + implements ReadOnlyPGPCertificateDirectory, WritingPGPCertificateDirectory { private final Backend backend; - private final SubkeyLookup subkeyLookup; - public PGPCertificateDirectory(Backend backend, SubkeyLookup subkeyLookup) { + public PGPCertificateDirectory(Backend backend) { this.backend = backend; - this.subkeyLookup = subkeyLookup; } @Override @@ -88,7 +83,6 @@ public class PGPCertificateDirectory throws IOException, BadDataException, InterruptedException { backend.getLock().lockDirectory(); KeyMaterial inserted = backend.doInsertTrustRoot(data, merge); - subkeyLookup.storeCertificateSubkeyIds(inserted.getFingerprint(), inserted.getSubkeyIds()); backend.getLock().releaseDirectory(); return inserted; } @@ -100,7 +94,6 @@ public class PGPCertificateDirectory return null; } KeyMaterial inserted = backend.doInsertTrustRoot(data, merge); - subkeyLookup.storeCertificateSubkeyIds(inserted.getFingerprint(), inserted.getSubkeyIds()); backend.getLock().releaseDirectory(); return inserted; } @@ -112,7 +105,6 @@ public class PGPCertificateDirectory throws IOException, BadDataException, InterruptedException { backend.getLock().lockDirectory(); Certificate inserted = backend.doInsert(data, merge); - subkeyLookup.storeCertificateSubkeyIds(inserted.getFingerprint(), inserted.getSubkeyIds()); backend.getLock().releaseDirectory(); return inserted; } @@ -124,7 +116,6 @@ public class PGPCertificateDirectory return null; } Certificate inserted = backend.doInsert(data, merge); - subkeyLookup.storeCertificateSubkeyIds(inserted.getFingerprint(), inserted.getSubkeyIds()); backend.getLock().releaseDirectory(); return inserted; } @@ -134,7 +125,6 @@ public class PGPCertificateDirectory throws IOException, BadDataException, BadNameException, InterruptedException { backend.getLock().lockDirectory(); Certificate inserted = backend.doInsertWithSpecialName(specialName, data, merge); - subkeyLookup.storeCertificateSubkeyIds(inserted.getFingerprint(), inserted.getSubkeyIds()); backend.getLock().releaseDirectory(); return inserted; } @@ -146,21 +136,10 @@ public class PGPCertificateDirectory return null; } Certificate inserted = backend.doInsertWithSpecialName(specialName, data, merge); - subkeyLookup.storeCertificateSubkeyIds(inserted.getFingerprint(), inserted.getSubkeyIds()); backend.getLock().releaseDirectory(); return inserted; } - @Override - public Set getCertificateFingerprintsForSubkeyId(long subkeyId) throws IOException { - return subkeyLookup.getCertificateFingerprintsForSubkeyId(subkeyId); - } - - @Override - public void storeCertificateSubkeyIds(String certificate, List subkeyIds) throws IOException { - subkeyLookup.storeCertificateSubkeyIds(certificate, subkeyIds); - } - public interface Backend { LockingMechanism getLock(); diff --git a/pgp-cert-d-java/src/main/java/pgp/cert_d/PGPCertificateStoreAdapter.java b/pgp-cert-d-java/src/main/java/pgp/cert_d/PGPCertificateStoreAdapter.java deleted file mode 100644 index 5d95e6f..0000000 --- a/pgp-cert-d-java/src/main/java/pgp/cert_d/PGPCertificateStoreAdapter.java +++ /dev/null @@ -1,77 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Paul Schaub -// -// SPDX-License-Identifier: Apache-2.0 - -package pgp.cert_d; - -import pgp.certificate_store.PGPCertificateStore; -import pgp.certificate_store.certificate.Certificate; -import pgp.certificate_store.certificate.KeyMaterialMerger; -import pgp.certificate_store.exception.BadDataException; -import pgp.certificate_store.exception.BadNameException; - -import java.io.IOException; -import java.io.InputStream; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; - -/** - * Adapter class to adapt a {@link PGPCertificateDirectory} to the {@link PGPCertificateStore} interface. - */ -public class PGPCertificateStoreAdapter implements PGPCertificateStore { - - private final PGPCertificateDirectory directory; - - public PGPCertificateStoreAdapter(PGPCertificateDirectory directory) { - this.directory = directory; - } - - @Override - public Certificate getCertificate(String identifier) - throws IOException, BadNameException, BadDataException { - if (SpecialNames.lookupSpecialName(identifier) != null) { - return directory.getBySpecialName(identifier); - } else { - return directory.getByFingerprint(identifier.toLowerCase()); - } - } - - @Override - public Iterator getCertificatesBySubkeyId(long subkeyId) - throws IOException, BadDataException { - Set fingerprints = directory.getCertificateFingerprintsForSubkeyId(subkeyId); - Set certificates = new HashSet<>(); - for (String fingerprint : fingerprints) { - try { - certificates.add(directory.getByFingerprint(fingerprint)); - } catch (BadNameException e) { - throw new RuntimeException(e); - } - } - return certificates.iterator(); - } - - @Override - public Certificate insertCertificate(InputStream data, KeyMaterialMerger merge) - throws IOException, InterruptedException, BadDataException { - Certificate certificate = directory.insert(data, merge); - return certificate; - } - - @Override - public Certificate insertCertificateBySpecialName(String specialName, InputStream data, KeyMaterialMerger merge) - throws IOException, InterruptedException, BadDataException, BadNameException { - return directory.insertWithSpecialName(specialName, data, merge); - } - - @Override - public Iterator getCertificates() { - return directory.items(); - } - - @Override - public Iterator getFingerprints() { - return directory.fingerprints(); - } -} diff --git a/pgp-cert-d-java/src/main/java/pgp/cert_d/ReadOnlyPGPCertificateDirectory.java b/pgp-cert-d-java/src/main/java/pgp/cert_d/ReadOnlyPGPCertificateDirectory.java index 4c9fabc..801179f 100644 --- a/pgp-cert-d-java/src/main/java/pgp/cert_d/ReadOnlyPGPCertificateDirectory.java +++ b/pgp-cert-d-java/src/main/java/pgp/cert_d/ReadOnlyPGPCertificateDirectory.java @@ -4,9 +4,9 @@ package pgp.cert_d; -import pgp.certificate_store.certificate.Certificate; -import pgp.certificate_store.exception.BadDataException; -import pgp.certificate_store.exception.BadNameException; +import pgp.cert_d.exception.BadDataException; +import pgp.cert_d.exception.BadNameException; +import pgp.certificate.Certificate; import java.io.IOException; import java.util.Iterator; diff --git a/pgp-cert-d-java/src/main/java/pgp/cert_d/WritingPGPCertificateDirectory.java b/pgp-cert-d-java/src/main/java/pgp/cert_d/WritingPGPCertificateDirectory.java index 2857165..03f2c51 100644 --- a/pgp-cert-d-java/src/main/java/pgp/cert_d/WritingPGPCertificateDirectory.java +++ b/pgp-cert-d-java/src/main/java/pgp/cert_d/WritingPGPCertificateDirectory.java @@ -4,11 +4,11 @@ package pgp.cert_d; -import pgp.certificate_store.certificate.Certificate; -import pgp.certificate_store.certificate.KeyMaterial; -import pgp.certificate_store.certificate.KeyMaterialMerger; -import pgp.certificate_store.exception.BadDataException; -import pgp.certificate_store.exception.BadNameException; +import pgp.cert_d.exception.BadDataException; +import pgp.cert_d.exception.BadNameException; +import pgp.certificate.Certificate; +import pgp.certificate.KeyMaterial; +import pgp.certificate.KeyMaterialMerger; import java.io.IOException; import java.io.InputStream; diff --git a/pgp-cert-d-java/src/main/java/pgp/cert_d/backend/FileBasedCertificateDirectoryBackend.java b/pgp-cert-d-java/src/main/java/pgp/cert_d/backend/FileBasedCertificateDirectoryBackend.java index 5decae2..d802077 100644 --- a/pgp-cert-d-java/src/main/java/pgp/cert_d/backend/FileBasedCertificateDirectoryBackend.java +++ b/pgp-cert-d-java/src/main/java/pgp/cert_d/backend/FileBasedCertificateDirectoryBackend.java @@ -6,13 +6,13 @@ package pgp.cert_d.backend; import pgp.cert_d.PGPCertificateDirectory; import pgp.cert_d.SpecialNames; -import pgp.certificate_store.certificate.Certificate; -import pgp.certificate_store.certificate.KeyMaterial; -import pgp.certificate_store.certificate.KeyMaterialMerger; -import pgp.certificate_store.certificate.KeyMaterialReaderBackend; -import pgp.certificate_store.exception.BadDataException; -import pgp.certificate_store.exception.BadNameException; -import pgp.certificate_store.exception.NotAStoreException; +import pgp.cert_d.exception.BadDataException; +import pgp.cert_d.exception.BadNameException; +import pgp.cert_d.exception.NotAStoreException; +import pgp.certificate.Certificate; +import pgp.certificate.KeyMaterial; +import pgp.certificate.KeyMaterialMerger; +import pgp.certificate.KeyMaterialReaderBackend; import java.io.BufferedInputStream; import java.io.File; diff --git a/pgp-cert-d-java/src/main/java/pgp/cert_d/backend/InMemoryCertificateDirectoryBackend.java b/pgp-cert-d-java/src/main/java/pgp/cert_d/backend/InMemoryCertificateDirectoryBackend.java index caea4a8..5fac78c 100644 --- a/pgp-cert-d-java/src/main/java/pgp/cert_d/backend/InMemoryCertificateDirectoryBackend.java +++ b/pgp-cert-d-java/src/main/java/pgp/cert_d/backend/InMemoryCertificateDirectoryBackend.java @@ -6,12 +6,12 @@ package pgp.cert_d.backend; import pgp.cert_d.PGPCertificateDirectory; import pgp.cert_d.SpecialNames; -import pgp.certificate_store.certificate.Certificate; -import pgp.certificate_store.certificate.KeyMaterial; -import pgp.certificate_store.certificate.KeyMaterialMerger; -import pgp.certificate_store.certificate.KeyMaterialReaderBackend; -import pgp.certificate_store.exception.BadDataException; -import pgp.certificate_store.exception.BadNameException; +import pgp.cert_d.exception.BadDataException; +import pgp.cert_d.exception.BadNameException; +import pgp.certificate.Certificate; +import pgp.certificate.KeyMaterial; +import pgp.certificate.KeyMaterialMerger; +import pgp.certificate.KeyMaterialReaderBackend; import java.io.IOException; import java.io.InputStream; diff --git a/pgp-certificate-store/src/main/java/pgp/certificate_store/exception/BadDataException.java b/pgp-cert-d-java/src/main/java/pgp/cert_d/exception/BadDataException.java similarity index 85% rename from pgp-certificate-store/src/main/java/pgp/certificate_store/exception/BadDataException.java rename to pgp-cert-d-java/src/main/java/pgp/cert_d/exception/BadDataException.java index 3bb7019..7dc8b7d 100644 --- a/pgp-certificate-store/src/main/java/pgp/certificate_store/exception/BadDataException.java +++ b/pgp-cert-d-java/src/main/java/pgp/cert_d/exception/BadDataException.java @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: Apache-2.0 -package pgp.certificate_store.exception; +package pgp.cert_d.exception; /** * The data was not a valid OpenPGP cert or key in binary format. diff --git a/pgp-certificate-store/src/main/java/pgp/certificate_store/exception/BadNameException.java b/pgp-cert-d-java/src/main/java/pgp/cert_d/exception/BadNameException.java similarity index 90% rename from pgp-certificate-store/src/main/java/pgp/certificate_store/exception/BadNameException.java rename to pgp-cert-d-java/src/main/java/pgp/cert_d/exception/BadNameException.java index 957126e..510804e 100644 --- a/pgp-certificate-store/src/main/java/pgp/certificate_store/exception/BadNameException.java +++ b/pgp-cert-d-java/src/main/java/pgp/cert_d/exception/BadNameException.java @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: Apache-2.0 -package pgp.certificate_store.exception; +package pgp.cert_d.exception; /** * Provided name was neither a valid fingerprint, nor a known special name. diff --git a/pgp-certificate-store/src/main/java/pgp/certificate_store/exception/NotAStoreException.java b/pgp-cert-d-java/src/main/java/pgp/cert_d/exception/NotAStoreException.java similarity index 89% rename from pgp-certificate-store/src/main/java/pgp/certificate_store/exception/NotAStoreException.java rename to pgp-cert-d-java/src/main/java/pgp/cert_d/exception/NotAStoreException.java index a19aa9c..734de49 100644 --- a/pgp-certificate-store/src/main/java/pgp/certificate_store/exception/NotAStoreException.java +++ b/pgp-cert-d-java/src/main/java/pgp/cert_d/exception/NotAStoreException.java @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: Apache-2.0 -package pgp.certificate_store.exception; +package pgp.cert_d.exception; /** * The base dir cannot possibly contain a store. diff --git a/pgp-certificate-store/src/main/java/pgp/certificate_store/exception/package-info.java b/pgp-cert-d-java/src/main/java/pgp/cert_d/exception/package-info.java similarity index 76% rename from pgp-certificate-store/src/main/java/pgp/certificate_store/exception/package-info.java rename to pgp-cert-d-java/src/main/java/pgp/cert_d/exception/package-info.java index 302b1d2..b051b8b 100644 --- a/pgp-certificate-store/src/main/java/pgp/certificate_store/exception/package-info.java +++ b/pgp-cert-d-java/src/main/java/pgp/cert_d/exception/package-info.java @@ -5,4 +5,4 @@ /** * Exceptions. */ -package pgp.certificate_store.exception; +package pgp.cert_d.exception; diff --git a/pgp-cert-d-java/src/main/java/pgp/cert_d/subkey_lookup/InMemorySubkeyLookupFactory.java b/pgp-cert-d-java/src/main/java/pgp/cert_d/subkey_lookup/InMemorySubkeyLookupFactory.java deleted file mode 100644 index a224c64..0000000 --- a/pgp-cert-d-java/src/main/java/pgp/cert_d/subkey_lookup/InMemorySubkeyLookupFactory.java +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Paul Schaub -// -// SPDX-License-Identifier: Apache-2.0 - -package pgp.cert_d.subkey_lookup; - -import java.io.File; - -public class InMemorySubkeyLookupFactory implements SubkeyLookupFactory { - @Override - public SubkeyLookup createFileBasedInstance(File baseDirectory) { - return new InMemorySubkeyLookup(); - } -} diff --git a/pgp-cert-d-java/src/main/java/pgp/cert_d/subkey_lookup/SubkeyLookupFactory.java b/pgp-cert-d-java/src/main/java/pgp/cert_d/subkey_lookup/SubkeyLookupFactory.java deleted file mode 100644 index 442e9ef..0000000 --- a/pgp-cert-d-java/src/main/java/pgp/cert_d/subkey_lookup/SubkeyLookupFactory.java +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Paul Schaub -// -// SPDX-License-Identifier: Apache-2.0 - -package pgp.cert_d.subkey_lookup; - -import java.io.File; - -public interface SubkeyLookupFactory { - - /** - * Create a new {@link SubkeyLookup} instance that lives in the given baseDirectory. - * - * @param baseDirectory base directory - * @return subkey lookup - */ - SubkeyLookup createFileBasedInstance(File baseDirectory); -} diff --git a/pgp-certificate-store/src/main/java/pgp/certificate_store/certificate/Certificate.java b/pgp-cert-d-java/src/main/java/pgp/certificate/Certificate.java similarity index 87% rename from pgp-certificate-store/src/main/java/pgp/certificate_store/certificate/Certificate.java rename to pgp-cert-d-java/src/main/java/pgp/certificate/Certificate.java index d2b1d1b..969064d 100644 --- a/pgp-certificate-store/src/main/java/pgp/certificate_store/certificate/Certificate.java +++ b/pgp-cert-d-java/src/main/java/pgp/certificate/Certificate.java @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: Apache-2.0 -package pgp.certificate_store.certificate; +package pgp.certificate; /** * OpenPGP certificate (public key). diff --git a/pgp-certificate-store/src/main/java/pgp/certificate_store/certificate/Key.java b/pgp-cert-d-java/src/main/java/pgp/certificate/Key.java similarity index 91% rename from pgp-certificate-store/src/main/java/pgp/certificate_store/certificate/Key.java rename to pgp-cert-d-java/src/main/java/pgp/certificate/Key.java index 5d6d713..80c9636 100644 --- a/pgp-certificate-store/src/main/java/pgp/certificate_store/certificate/Key.java +++ b/pgp-cert-d-java/src/main/java/pgp/certificate/Key.java @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: Apache-2.0 -package pgp.certificate_store.certificate; +package pgp.certificate; /** * OpenPGP key (secret key). diff --git a/pgp-certificate-store/src/main/java/pgp/certificate_store/certificate/KeyMaterial.java b/pgp-cert-d-java/src/main/java/pgp/certificate/KeyMaterial.java similarity index 88% rename from pgp-certificate-store/src/main/java/pgp/certificate_store/certificate/KeyMaterial.java rename to pgp-cert-d-java/src/main/java/pgp/certificate/KeyMaterial.java index 5293edf..87c309e 100644 --- a/pgp-certificate-store/src/main/java/pgp/certificate_store/certificate/KeyMaterial.java +++ b/pgp-cert-d-java/src/main/java/pgp/certificate/KeyMaterial.java @@ -2,11 +2,10 @@ // // SPDX-License-Identifier: Apache-2.0 -package pgp.certificate_store.certificate; +package pgp.certificate; import java.io.IOException; import java.io.InputStream; -import java.util.List; import java.util.Set; public interface KeyMaterial { @@ -37,5 +36,5 @@ public interface KeyMaterial { * @return subkeys * @throws IOException in case of an IO error */ - List getSubkeyIds() throws IOException; + Set getSubkeyIds() throws IOException; } diff --git a/pgp-certificate-store/src/main/java/pgp/certificate_store/certificate/KeyMaterialMerger.java b/pgp-cert-d-java/src/main/java/pgp/certificate/KeyMaterialMerger.java similarity index 94% rename from pgp-certificate-store/src/main/java/pgp/certificate_store/certificate/KeyMaterialMerger.java rename to pgp-cert-d-java/src/main/java/pgp/certificate/KeyMaterialMerger.java index 20ad268..bd70bc8 100644 --- a/pgp-certificate-store/src/main/java/pgp/certificate_store/certificate/KeyMaterialMerger.java +++ b/pgp-cert-d-java/src/main/java/pgp/certificate/KeyMaterialMerger.java @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: Apache-2.0 -package pgp.certificate_store.certificate; +package pgp.certificate; import java.io.IOException; diff --git a/pgp-certificate-store/src/main/java/pgp/certificate_store/certificate/KeyMaterialReaderBackend.java b/pgp-cert-d-java/src/main/java/pgp/certificate/KeyMaterialReaderBackend.java similarity index 87% rename from pgp-certificate-store/src/main/java/pgp/certificate_store/certificate/KeyMaterialReaderBackend.java rename to pgp-cert-d-java/src/main/java/pgp/certificate/KeyMaterialReaderBackend.java index 42b2bb4..2ee7972 100644 --- a/pgp-certificate-store/src/main/java/pgp/certificate_store/certificate/KeyMaterialReaderBackend.java +++ b/pgp-cert-d-java/src/main/java/pgp/certificate/KeyMaterialReaderBackend.java @@ -2,9 +2,9 @@ // // SPDX-License-Identifier: Apache-2.0 -package pgp.certificate_store.certificate; +package pgp.certificate; -import pgp.certificate_store.exception.BadDataException; +import pgp.cert_d.exception.BadDataException; import java.io.IOException; import java.io.InputStream; diff --git a/pgp-certificate-store/src/main/java/pgp/certificate_store/certificate/package-info.java b/pgp-cert-d-java/src/main/java/pgp/certificate/package-info.java similarity index 80% rename from pgp-certificate-store/src/main/java/pgp/certificate_store/certificate/package-info.java rename to pgp-cert-d-java/src/main/java/pgp/certificate/package-info.java index 5060b18..ac5b0f4 100644 --- a/pgp-certificate-store/src/main/java/pgp/certificate_store/certificate/package-info.java +++ b/pgp-cert-d-java/src/main/java/pgp/certificate/package-info.java @@ -5,4 +5,4 @@ /** * General OpenPGP Certificate Storage related classes. */ -package pgp.certificate_store.certificate; +package pgp.certificate; diff --git a/pgp-cert-d-java/src/test/java/pgp/cert_d/FilenameResolverTest.java b/pgp-cert-d-java/src/test/java/pgp/cert_d/FilenameResolverTest.java index ee27bf0..8d94279 100644 --- a/pgp-cert-d-java/src/test/java/pgp/cert_d/FilenameResolverTest.java +++ b/pgp-cert-d-java/src/test/java/pgp/cert_d/FilenameResolverTest.java @@ -7,7 +7,7 @@ package pgp.cert_d; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import pgp.cert_d.backend.FileBasedCertificateDirectoryBackend; -import pgp.certificate_store.exception.BadNameException; +import pgp.cert_d.exception.BadNameException; import java.io.File; import java.io.IOException; diff --git a/pgp-certificate-store/README.md b/pgp-certificate-store/README.md deleted file mode 100644 index 58f9af9..0000000 --- a/pgp-certificate-store/README.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# PGP Certificate Store Definitions - -[![javadoc](https://javadoc.io/badge2/org.pgpainless/pgp-certificate-store/javadoc.svg)](https://javadoc.io/doc/org.pgpainless/pgp-certificate-store) -[![Maven Central](https://badgen.net/maven/v/maven-central/org.pgpainless/pgp-certificate-store)](https://search.maven.org/artifact/org.pgpainless/pgp-certificate-store) - -This module contains API definitions for an OpenPGP certificate store. -A certificate store is used to store public key certificates only. diff --git a/pgp-certificate-store/build.gradle b/pgp-certificate-store/build.gradle deleted file mode 100644 index f2d7d7a..0000000 --- a/pgp-certificate-store/build.gradle +++ /dev/null @@ -1,36 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Paul Schaub -// -// SPDX-License-Identifier: Apache-2.0 - -plugins { - id 'java-library' -} - -group 'org.pgpainless' - -repositories { - mavenCentral() -} - -apply plugin: 'ru.vyarus.animalsniffer' - -dependencies { - // animal sniffer for ensuring Android API compatibility - signature "net.sf.androidscents.signature:android-api-level-${minAndroidSdk}:2.3.3_r2@signature" - - // JUnit for testing - testImplementation "org.junit.jupiter:junit-jupiter-api:$junitVersion" - testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junitVersion" - - // Logging - api "org.slf4j:slf4j-api:$slf4jVersion" - testImplementation "ch.qos.logback:logback-classic:$logbackVersion" -} - -animalsniffer { - sourceSets = [sourceSets.main] -} - -test { - useJUnitPlatform() -} diff --git a/pgp-certificate-store/src/main/java/pgp/certificate_store/PGPCertificateStore.java b/pgp-certificate-store/src/main/java/pgp/certificate_store/PGPCertificateStore.java deleted file mode 100644 index acca57e..0000000 --- a/pgp-certificate-store/src/main/java/pgp/certificate_store/PGPCertificateStore.java +++ /dev/null @@ -1,104 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Paul Schaub -// -// SPDX-License-Identifier: Apache-2.0 - -package pgp.certificate_store; - -import pgp.certificate_store.certificate.Certificate; -import pgp.certificate_store.certificate.KeyMaterialMerger; -import pgp.certificate_store.exception.BadDataException; -import pgp.certificate_store.exception.BadNameException; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Iterator; - -/** - * Interface for an OpenPGP certificate (public key) store. - */ -public interface PGPCertificateStore { - - /** - * Return the certificate that matches the given identifier. - * If no matching certificate can be found, return null. - * - * @param identifier identifier for a certificate. - * @return certificate or null - * - * @throws IOException in case of an IO-error - * @throws BadNameException if the identifier is invalid - * @throws BadDataException if the certificate file contains invalid data - */ - Certificate getCertificate(String identifier) - throws IOException, BadNameException, BadDataException; - - /** - * Return an {@link Iterator} over all certificates in the store that contain a subkey with the given - * subkey id. - * @param subkeyId id of the subkey - * @return iterator - * - * @throws IOException in case of an IO error - * @throws BadDataException if any of the certificate files contains invalid data - */ - Iterator getCertificatesBySubkeyId(long subkeyId) - throws IOException, BadDataException; - - /** - * Insert a certificate into the store. - * If an instance of the certificate is already present in the store, the given {@link KeyMaterialMerger} will be - * used to merge both the existing and the new instance of the {@link Certificate}. The resulting merged certificate - * will be stored in the store and returned. - * - * This method will block until a write-lock on the store can be acquired. - * - * @param data input stream containing the new certificate instance - * @param merge callback for merging with an existing certificate instance - * @return merged certificate - * - * @throws IOException in case of an IO-error - * @throws InterruptedException in case the inserting thread gets interrupted - * @throws BadDataException if the data stream does not contain valid OpenPGP data - */ - Certificate insertCertificate(InputStream data, KeyMaterialMerger merge) - throws IOException, InterruptedException, BadDataException; - - /** - * Insert a certificate into the store. - * The certificate will be stored under the given special name instead of its fingerprint. - * - * If an instance of the certificate is already present under the special name in the store, the given {@link KeyMaterialMerger} will be - * used to merge both the existing and the new instance of the {@link Certificate}. The resulting merged certificate - * will be stored in the store and returned. - * - * This method will block until a write-lock on the store can be acquired. - * - * @param specialName special name of the certificate - * @param data input stream containing the new certificate instance - * @param merge callback for merging with an existing certificate instance - * @return merged certificate or null if the store cannot be locked - * - * @throws IOException in case of an IO-error - * @throws InterruptedException if the thread is interrupted - * @throws BadDataException if the certificate file does not contain valid OpenPGP data - * @throws BadNameException if the special name is unknown - */ - Certificate insertCertificateBySpecialName(String specialName, InputStream data, KeyMaterialMerger merge) - throws IOException, InterruptedException, BadDataException, BadNameException; - - /** - * Return an {@link Iterator} containing all certificates in the store. - * The iterator will contain both certificates addressed by special names and by fingerprints. - * - * @return certificates - */ - Iterator getCertificates(); - - /** - * Return an {@link Iterator} containing all certificate fingerprints from the store. - * Note that this only includes the fingerprints of certificate primary keys, not those of subkeys. - * - * @return fingerprints - */ - Iterator getFingerprints(); -} diff --git a/pgp-certificate-store/src/main/java/pgp/certificate_store/package-info.java b/pgp-certificate-store/src/main/java/pgp/certificate_store/package-info.java deleted file mode 100644 index 39164d4..0000000 --- a/pgp-certificate-store/src/main/java/pgp/certificate_store/package-info.java +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Paul Schaub -// -// SPDX-License-Identifier: Apache-2.0 - -/** - * Abstract definitions of an OpenPGP certificate store. - */ -package pgp.certificate_store; diff --git a/pgp-certificate-store/src/test/java/pgp/certificate_store/DummyTest.java b/pgp-certificate-store/src/test/java/pgp/certificate_store/DummyTest.java deleted file mode 100644 index e766c29..0000000 --- a/pgp-certificate-store/src/test/java/pgp/certificate_store/DummyTest.java +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Paul Schaub -// -// SPDX-License-Identifier: Apache-2.0 - -package pgp.certificate_store; - -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertTrue; - -public class DummyTest { - @Test - public void test() { - assertTrue(true); - } -} diff --git a/settings.gradle b/settings.gradle index ef5cea0..39451e2 100644 --- a/settings.gradle +++ b/settings.gradle @@ -4,7 +4,6 @@ rootProject.name = 'cert-d-java' -include 'pgp-certificate-store', - 'pgp-cert-d-java', +include 'pgp-cert-d-java', 'pgp-cert-d-java-jdbc-sqlite-lookup'