001// SPDX-FileCopyrightText: 2021 Paul Schaub <vanitasvitae@fsfe.org> 002// 003// SPDX-License-Identifier: Apache-2.0 004 005package org.pgpainless.signature.subpackets; 006 007import java.io.IOException; 008import java.util.Date; 009import javax.annotation.Nonnull; 010import javax.annotation.Nullable; 011 012import org.bouncycastle.bcpg.sig.EmbeddedSignature; 013import org.bouncycastle.bcpg.sig.Exportable; 014import org.bouncycastle.bcpg.sig.IntendedRecipientFingerprint; 015import org.bouncycastle.bcpg.sig.IssuerFingerprint; 016import org.bouncycastle.bcpg.sig.IssuerKeyID; 017import org.bouncycastle.bcpg.sig.NotationData; 018import org.bouncycastle.bcpg.sig.Revocable; 019import org.bouncycastle.bcpg.sig.SignatureCreationTime; 020import org.bouncycastle.bcpg.sig.SignatureExpirationTime; 021import org.bouncycastle.bcpg.sig.SignatureTarget; 022import org.bouncycastle.bcpg.sig.SignerUserID; 023import org.bouncycastle.bcpg.sig.TrustSignature; 024import org.bouncycastle.openpgp.PGPPublicKey; 025import org.bouncycastle.openpgp.PGPSignature; 026import org.pgpainless.algorithm.HashAlgorithm; 027import org.pgpainless.algorithm.PublicKeyAlgorithm; 028 029public interface BaseSignatureSubpackets { 030 031 interface Callback extends SignatureSubpacketCallback<BaseSignatureSubpackets> { 032 033 } 034 035 BaseSignatureSubpackets setIssuerFingerprintAndKeyId(PGPPublicKey key); 036 037 BaseSignatureSubpackets setIssuerKeyId(long keyId); 038 039 BaseSignatureSubpackets setIssuerKeyId(boolean isCritical, long keyId); 040 041 BaseSignatureSubpackets setIssuerKeyId(@Nullable IssuerKeyID issuerKeyID); 042 043 BaseSignatureSubpackets setIssuerFingerprint(@Nonnull PGPPublicKey key); 044 045 BaseSignatureSubpackets setIssuerFingerprint(boolean isCritical, @Nonnull PGPPublicKey key); 046 047 BaseSignatureSubpackets setIssuerFingerprint(@Nullable IssuerFingerprint fingerprint); 048 049 BaseSignatureSubpackets setSignatureCreationTime(@Nonnull Date creationTime); 050 051 BaseSignatureSubpackets setSignatureCreationTime(boolean isCritical, @Nonnull Date creationTime); 052 053 BaseSignatureSubpackets setSignatureCreationTime(@Nullable SignatureCreationTime signatureCreationTime); 054 055 BaseSignatureSubpackets setSignatureExpirationTime(@Nonnull Date creationTime, @Nonnull Date expirationTime); 056 057 BaseSignatureSubpackets setSignatureExpirationTime(boolean isCritical, @Nonnull Date creationTime, @Nonnull Date expirationTime); 058 059 BaseSignatureSubpackets setSignatureExpirationTime(boolean isCritical, long seconds); 060 061 BaseSignatureSubpackets setSignatureExpirationTime(@Nullable SignatureExpirationTime expirationTime); 062 063 BaseSignatureSubpackets setSignerUserId(@Nonnull String userId); 064 065 BaseSignatureSubpackets setSignerUserId(boolean isCritical, @Nonnull String userId); 066 067 BaseSignatureSubpackets setSignerUserId(@Nullable SignerUserID signerUserId); 068 069 BaseSignatureSubpackets addNotationData(boolean isCritical, @Nonnull String notationName, @Nonnull String notationValue); 070 071 BaseSignatureSubpackets addNotationData(boolean isCritical, boolean isHumanReadable, @Nonnull String notationName, @Nonnull String notationValue); 072 073 BaseSignatureSubpackets addNotationData(@Nonnull NotationData notationData); 074 075 BaseSignatureSubpackets clearNotationData(); 076 077 BaseSignatureSubpackets addIntendedRecipientFingerprint(@Nonnull PGPPublicKey recipient); 078 079 BaseSignatureSubpackets addIntendedRecipientFingerprint(boolean isCritical, @Nonnull PGPPublicKey recipient); 080 081 BaseSignatureSubpackets addIntendedRecipientFingerprint(IntendedRecipientFingerprint intendedRecipientFingerprint); 082 083 BaseSignatureSubpackets clearIntendedRecipientFingerprints(); 084 085 BaseSignatureSubpackets setExportable(boolean isCritical, boolean isExportable); 086 087 BaseSignatureSubpackets setExportable(@Nullable Exportable exportable); 088 089 BaseSignatureSubpackets setRevocable(boolean isCritical, boolean isRevocable); 090 091 BaseSignatureSubpackets setRevocable(@Nullable Revocable revocable); 092 093 BaseSignatureSubpackets setSignatureTarget(@Nonnull PublicKeyAlgorithm keyAlgorithm, @Nonnull HashAlgorithm hashAlgorithm, @Nonnull byte[] hashData); 094 095 BaseSignatureSubpackets setSignatureTarget(boolean isCritical, @Nonnull PublicKeyAlgorithm keyAlgorithm, @Nonnull HashAlgorithm hashAlgorithm, @Nonnull byte[] hashData); 096 097 BaseSignatureSubpackets setSignatureTarget(@Nullable SignatureTarget signatureTarget); 098 099 BaseSignatureSubpackets setTrust(int depth, int amount); 100 101 BaseSignatureSubpackets setTrust(boolean isCritical, int depth, int amount); 102 103 BaseSignatureSubpackets setTrust(@Nullable TrustSignature trust); 104 105 BaseSignatureSubpackets addEmbeddedSignature(@Nonnull PGPSignature signature) throws IOException; 106 107 BaseSignatureSubpackets addEmbeddedSignature(boolean isCritical, @Nonnull PGPSignature signature) throws IOException; 108 109 BaseSignatureSubpackets addEmbeddedSignature(@Nonnull EmbeddedSignature embeddedSignature); 110 111 BaseSignatureSubpackets clearEmbeddedSignatures(); 112}