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.util.Date; 008import java.util.List; 009import java.util.Set; 010import javax.annotation.Nonnull; 011import javax.annotation.Nullable; 012 013import org.bouncycastle.bcpg.sig.Features; 014import org.bouncycastle.bcpg.sig.KeyExpirationTime; 015import org.bouncycastle.bcpg.sig.KeyFlags; 016import org.bouncycastle.bcpg.sig.PreferredAlgorithms; 017import org.bouncycastle.bcpg.sig.PrimaryUserID; 018import org.bouncycastle.bcpg.sig.RevocationKey; 019import org.bouncycastle.openpgp.PGPPublicKey; 020import org.pgpainless.algorithm.CompressionAlgorithm; 021import org.pgpainless.algorithm.Feature; 022import org.pgpainless.algorithm.HashAlgorithm; 023import org.pgpainless.algorithm.KeyFlag; 024import org.pgpainless.algorithm.SymmetricKeyAlgorithm; 025 026public interface SelfSignatureSubpackets extends BaseSignatureSubpackets { 027 028 interface Callback extends SignatureSubpacketCallback<SelfSignatureSubpackets> { 029 030 } 031 032 SelfSignatureSubpackets setKeyFlags(KeyFlag... keyFlags); 033 034 default SelfSignatureSubpackets setKeyFlags(List<KeyFlag> keyFlags) { 035 KeyFlag[] flags = keyFlags.toArray(new KeyFlag[0]); 036 return setKeyFlags(flags); 037 } 038 039 SelfSignatureSubpackets setKeyFlags(boolean isCritical, KeyFlag... keyFlags); 040 041 SelfSignatureSubpackets setKeyFlags(@Nullable KeyFlags keyFlags); 042 043 SelfSignatureSubpackets setPrimaryUserId(); 044 045 SelfSignatureSubpackets setPrimaryUserId(boolean isCritical); 046 047 SelfSignatureSubpackets setPrimaryUserId(@Nullable PrimaryUserID primaryUserId); 048 049 SelfSignatureSubpackets setKeyExpirationTime(@Nonnull PGPPublicKey key, @Nonnull Date keyExpirationTime); 050 051 SelfSignatureSubpackets setKeyExpirationTime(@Nonnull Date keyCreationTime, @Nonnull Date keyExpirationTime); 052 053 SelfSignatureSubpackets setKeyExpirationTime(boolean isCritical, @Nonnull Date keyCreationTime, @Nonnull Date keyExpirationTime); 054 055 SelfSignatureSubpackets setKeyExpirationTime(boolean isCritical, long secondsFromCreationToExpiration); 056 057 SelfSignatureSubpackets setKeyExpirationTime(@Nullable KeyExpirationTime keyExpirationTime); 058 059 SelfSignatureSubpackets setPreferredCompressionAlgorithms(CompressionAlgorithm... algorithms); 060 061 SelfSignatureSubpackets setPreferredCompressionAlgorithms(Set<CompressionAlgorithm> algorithms); 062 063 SelfSignatureSubpackets setPreferredCompressionAlgorithms(boolean isCritical, Set<CompressionAlgorithm> algorithms); 064 065 SelfSignatureSubpackets setPreferredCompressionAlgorithms(@Nullable PreferredAlgorithms algorithms); 066 067 SelfSignatureSubpackets setPreferredSymmetricKeyAlgorithms(SymmetricKeyAlgorithm... algorithms); 068 069 SelfSignatureSubpackets setPreferredSymmetricKeyAlgorithms(Set<SymmetricKeyAlgorithm> algorithms); 070 071 SelfSignatureSubpackets setPreferredSymmetricKeyAlgorithms(boolean isCritical, Set<SymmetricKeyAlgorithm> algorithms); 072 073 SelfSignatureSubpackets setPreferredSymmetricKeyAlgorithms(@Nullable PreferredAlgorithms algorithms); 074 075 SelfSignatureSubpackets setPreferredHashAlgorithms(HashAlgorithm... algorithms); 076 077 SelfSignatureSubpackets setPreferredHashAlgorithms(Set<HashAlgorithm> algorithms); 078 079 SelfSignatureSubpackets setPreferredHashAlgorithms(boolean isCritical, Set<HashAlgorithm> algorithms); 080 081 SelfSignatureSubpackets setPreferredHashAlgorithms(@Nullable PreferredAlgorithms algorithms); 082 083 SelfSignatureSubpackets addRevocationKey(@Nonnull PGPPublicKey revocationKey); 084 085 SelfSignatureSubpackets addRevocationKey(boolean isCritical, @Nonnull PGPPublicKey revocationKey); 086 087 SelfSignatureSubpackets addRevocationKey(boolean isCritical, boolean isSensitive, @Nonnull PGPPublicKey revocationKey); 088 089 SelfSignatureSubpackets addRevocationKey(@Nonnull RevocationKey revocationKey); 090 091 SelfSignatureSubpackets clearRevocationKeys(); 092 093 SelfSignatureSubpackets setFeatures(Feature... features); 094 095 SelfSignatureSubpackets setFeatures(boolean isCritical, Feature... features); 096 097 SelfSignatureSubpackets setFeatures(@Nullable Features features); 098}