64 lines
1.7 KiB
Java
64 lines
1.7 KiB
Java
package de.vanitasvitae.crypto.pgpainless.key.generation;
|
|
|
|
import de.vanitasvitae.crypto.pgpainless.algorithm.CompressionAlgorithm;
|
|
import de.vanitasvitae.crypto.pgpainless.algorithm.Feature;
|
|
import de.vanitasvitae.crypto.pgpainless.algorithm.HashAlgorithm;
|
|
import de.vanitasvitae.crypto.pgpainless.algorithm.KeyFlag;
|
|
import de.vanitasvitae.crypto.pgpainless.algorithm.SymmetricKeyAlgorithm;
|
|
import de.vanitasvitae.crypto.pgpainless.key.generation.type.KeyType;
|
|
|
|
public interface KeySpecBuilderInterface {
|
|
|
|
WithKeyFlags ofType(KeyType type);
|
|
|
|
interface WithKeyFlags {
|
|
|
|
WithDetailedConfiguration withKeyFlags(KeyFlag... flags);
|
|
|
|
WithDetailedConfiguration withDefaultKeyFlags();
|
|
|
|
KeySpec withInheritedSubPackets();
|
|
}
|
|
|
|
interface WithDetailedConfiguration {
|
|
|
|
WithPreferredSymmetricAlgorithms withDetailedConfiguration();
|
|
|
|
KeySpec withDefaultAlgorithms();
|
|
}
|
|
|
|
interface WithPreferredSymmetricAlgorithms {
|
|
|
|
WithPreferredHashAlgorithms withPreferredSymmetricAlgorithms(SymmetricKeyAlgorithm... algorithms);
|
|
|
|
WithPreferredHashAlgorithms withDefaultSymmetricAlgorithms();
|
|
|
|
WithFeatures withDefaultAlgorithms();
|
|
|
|
}
|
|
|
|
interface WithPreferredHashAlgorithms {
|
|
|
|
WithPreferredCompressionAlgorithms withPreferredHashAlgorithms(HashAlgorithm... algorithms);
|
|
|
|
WithPreferredCompressionAlgorithms withDefaultHashAlgorithms();
|
|
|
|
}
|
|
|
|
interface WithPreferredCompressionAlgorithms {
|
|
|
|
WithFeatures withPreferredCompressionAlgorithms(CompressionAlgorithm... algorithms);
|
|
|
|
WithFeatures withDefaultCompressionAlgorithms();
|
|
|
|
}
|
|
|
|
interface WithFeatures {
|
|
|
|
WithFeatures withFeature(Feature feature);
|
|
|
|
KeySpec done();
|
|
}
|
|
|
|
}
|