1
0
Fork 0
mirror of https://github.com/pgpainless/pgpainless.git synced 2024-06-15 08:04:51 +02:00
pgpainless/src/main/java/de/vanitasvitae/crypto/pgpainless/key/generation/KeySpecBuilderInterface.java

58 lines
1.6 KiB
Java
Raw Normal View History

2018-06-02 21:21:35 +02:00
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;
2018-06-02 21:21:35 +02:00
public interface KeySpecBuilderInterface {
2018-06-04 19:44:47 +02:00
WithDetailedConfiguration withKeyFlags(KeyFlag... flags);
2018-06-02 21:21:35 +02:00
2018-06-04 19:44:47 +02:00
WithDetailedConfiguration withDefaultKeyFlags();
2018-06-02 21:21:35 +02:00
2018-06-04 19:44:47 +02:00
KeySpec withInheritedSubPackets();
2018-06-02 21:21:35 +02:00
interface WithDetailedConfiguration {
WithPreferredSymmetricAlgorithms withDetailedConfiguration();
KeySpec withDefaultAlgorithms();
2018-06-02 21:21:35 +02:00
}
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();
}
}