/* * Copyright (C) 2021, Thomas Wolf 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.util; import java.text.MessageFormat; import java.util.Locale; import org.eclipse.jgit.internal.JGitText; import org.eclipse.jgit.lib.GpgSignatureVerifier.SignatureVerification; import org.eclipse.jgit.lib.GpgSignatureVerifier.TrustLevel; import org.eclipse.jgit.lib.PersonIdent; /** * Utilities for signature verification. * * @since 5.11 */ public final class SignatureUtils { private SignatureUtils() { // No instantiation } /** * Writes information about a signature verification to a string. * * @param verification * to show * @param creator * of the object verified; used for time zone information * @param formatter * to use for dates * @return a textual representation of the {@link SignatureVerification}, * using LF as line separator */ public static String toString(SignatureVerification verification, PersonIdent creator, GitDateFormatter formatter) { StringBuilder result = new StringBuilder(); // Use the creator's timezone for the signature date PersonIdent dateId = new PersonIdent(creator, verification.getCreationDate()); result.append(MessageFormat.format(JGitText.get().verifySignatureMade, formatter.formatDate(dateId))); result.append('\n'); result.append(MessageFormat.format( JGitText.get().verifySignatureKey, verification.getKeyFingerprint().toUpperCase(Locale.ROOT))); result.append('\n'); if (!StringUtils.isEmptyOrNull(verification.getSigner())) { result.append( MessageFormat.format(JGitText.get().verifySignatureIssuer, verification.getSigner())); result.append('\n'); } String msg; if (verification.getVerified()) { if (verification.isExpired()) { msg = JGitText.get().verifySignatureExpired; } else { msg = JGitText.get().verifySignatureGood; } } else { msg = JGitText.get().verifySignatureBad; } result.append(MessageFormat.format(msg, verification.getKeyUser())); if (!TrustLevel.UNKNOWN.equals(verification.getTrustLevel())) { result.append(' ' + MessageFormat .format(JGitText.get().verifySignatureTrust, verification .getTrustLevel().name().toLowerCase(Locale.ROOT))); } result.append('\n'); msg = verification.getMessage(); if (!StringUtils.isEmptyOrNull(msg)) { result.append(msg); result.append('\n'); } return result.toString(); } }