| /* | |
| * Copyright (C) 2024, Thomas Wolf <twolf@apache.org> and others | |
| * | |
| * This program and the accompanying materials are made available under the | |
| * terms of the Eclipse Distribution License v. 1.0 which is available at | |
| * https://www.eclipse.org/org/documents/edl-v10.php. | |
| * | |
| * SPDX-License-Identifier: BSD-3-Clause | |
| */ | |
| package org.eclipse.jgit.signing.ssh; | |
| import java.io.IOException; | |
| import java.security.PublicKey; | |
| import org.eclipse.jgit.annotations.NonNull; | |
| import org.eclipse.jgit.internal.signing.ssh.SigningDatabase; | |
| import org.eclipse.jgit.lib.GpgConfig; | |
| import org.eclipse.jgit.lib.PersonIdent; | |
| import org.eclipse.jgit.lib.Repository; | |
| /** | |
| * A database storing meta-information about signing keys and certificates. | |
| * | |
| * @since 7.1 | |
| */ | |
| public interface SigningKeyDatabase { | |
| /** | |
| * Obtains the current global instance. | |
| * | |
| * @return the global {@link SigningKeyDatabase} | |
| */ | |
| static SigningKeyDatabase getInstance() { | |
| return SigningDatabase.getInstance(); | |
| } | |
| /** | |
| * Sets the global {@link SigningKeyDatabase}. | |
| * | |
| * @param database | |
| * to set; if {@code null} a default database using the OpenSSH | |
| * allowed signers file and the OpenSSH revocation list mechanism | |
| * is used. | |
| * @return the previously set {@link SigningKeyDatabase} | |
| */ | |
| static SigningKeyDatabase setInstance(SigningKeyDatabase database) { | |
| return SigningDatabase.setInstance(database); | |
| } | |
| /** | |
| * Determines whether the gives key has been revoked. | |
| * | |
| * @param repository | |
| * {@link Repository} the key is being used in | |
| * @param config | |
| * {@link GpgConfig} to use | |
| * @param key | |
| * {@link PublicKey} to check | |
| * @return {@code true} if the key has been revoked, {@code false} otherwise | |
| * @throws IOException | |
| * if an I/O problem occurred | |
| */ | |
| boolean isRevoked(@NonNull Repository repository, @NonNull GpgConfig config, | |
| @NonNull PublicKey key) throws IOException; | |
| /** | |
| * Checks whether the given key is allowed to be used for signing, and if | |
| * allowed returns the principal. | |
| * | |
| * @param repository | |
| * {@link Repository} the key is being used in | |
| * @param config | |
| * {@link GpgConfig} to use | |
| * @param key | |
| * {@link PublicKey} to check | |
| * @param namespace | |
| * of the signature | |
| * @param ident | |
| * optional {@link PersonIdent} giving a signer's e-mail address | |
| * and a signature time | |
| * @return {@code null} if the database does not contain any information | |
| * about the given key; the principal if it does and all checks | |
| * passed | |
| * @throws IOException | |
| * if an I/O problem occurred | |
| * @throws VerificationException | |
| * if the database contains information about the key and the | |
| * checks determined that the key is not allowed to be used for | |
| * signing | |
| */ | |
| String isAllowed(@NonNull Repository repository, @NonNull GpgConfig config, | |
| @NonNull PublicKey key, @NonNull String namespace, | |
| PersonIdent ident) throws IOException, VerificationException; | |
| } |