All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fun.mike.crypto.pgp.alpha.PGPCryptoFactory Maven / Gradle / Ivy

package fun.mike.crypto.pgp.alpha;

import static fun.mike.map.alpha.Get.populatedString;
import static fun.mike.map.alpha.Get.requiredStringEnum;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

public class PGPCryptoFactory {
    private static final String TYPE_KEY = "pgp.crypto.type";

    private static final String PUBLIC_KEY_RING_PATH_KEY = "pgp.crypto.public.key.ring.path";
    private static final String SECRET_KEY_RING_PATH_KEY = "pgp.crypto.secret.key.ring.path";
    private static final String PASSPHRASE_KEY = "pgp.crypto.passphrase";

    private static final String FILE_BASED_TYPE = "File-based";
    private static final List TYPE_OPTIONS = Arrays.asList(FILE_BASED_TYPE);

    public static PGPCrypto build(Map config) {
        String cryptoType = requiredStringEnum(config, TYPE_KEY, TYPE_OPTIONS);

        if (cryptoType.equalsIgnoreCase(FILE_BASED_TYPE)) {
            String publicKeyRingPath = populatedString(config, PUBLIC_KEY_RING_PATH_KEY);
            String secretKeyRingPath = populatedString(config, SECRET_KEY_RING_PATH_KEY);
            String passphrase = populatedString(config, PASSPHRASE_KEY);
            return new FileBasedPGPCrypto(publicKeyRingPath,
                    secretKeyRingPath,
                    passphrase);
        }

        throw new IllegalStateException("Factory failed to produce PGPCrypto instance.");
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy