1
0
Fork 0
mirror of https://github.com/pgpainless/pgpainless.git synced 2024-11-26 06:12:06 +01:00

Basic support for sop encrypt --profile=XXX

This commit is contained in:
Paul Schaub 2023-04-14 15:13:43 +02:00
parent 5b363de6e4
commit 3b1edb076c
Signed by: vanitasvitae
GPG key ID: 62BEE9264BF17311
2 changed files with 23 additions and 0 deletions

View file

@ -8,7 +8,9 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
import java.util.List;
import java.util.Set; import java.util.Set;
import org.bouncycastle.openpgp.PGPException; import org.bouncycastle.openpgp.PGPException;
@ -28,6 +30,7 @@ import org.pgpainless.exception.WrongPassphraseException;
import org.pgpainless.key.OpenPgpFingerprint; import org.pgpainless.key.OpenPgpFingerprint;
import org.pgpainless.key.info.KeyRingInfo; import org.pgpainless.key.info.KeyRingInfo;
import org.pgpainless.util.Passphrase; import org.pgpainless.util.Passphrase;
import sop.Profile;
import sop.Ready; import sop.Ready;
import sop.enums.EncryptAs; import sop.enums.EncryptAs;
import sop.exception.SOPGPException; import sop.exception.SOPGPException;
@ -39,10 +42,15 @@ import sop.util.ProxyOutputStream;
*/ */
public class EncryptImpl implements Encrypt { public class EncryptImpl implements Encrypt {
private static final Profile DEFAULT_PROFILE = new Profile("default", "Use the implementer's recommendations");
public static final List<Profile> SUPPORTED_PROFILES = Arrays.asList(DEFAULT_PROFILE);
EncryptionOptions encryptionOptions = EncryptionOptions.get(); EncryptionOptions encryptionOptions = EncryptionOptions.get();
SigningOptions signingOptions = null; SigningOptions signingOptions = null;
MatchMakingSecretKeyRingProtector protector = new MatchMakingSecretKeyRingProtector(); MatchMakingSecretKeyRingProtector protector = new MatchMakingSecretKeyRingProtector();
private final Set<PGPSecretKeyRing> signingKeys = new HashSet<>(); private final Set<PGPSecretKeyRing> signingKeys = new HashSet<>();
private String profile = DEFAULT_PROFILE.getName(); // TODO: Use in future releases
private EncryptAs encryptAs = EncryptAs.Binary; private EncryptAs encryptAs = EncryptAs.Binary;
boolean armor = true; boolean armor = true;
@ -111,6 +119,18 @@ public class EncryptImpl implements Encrypt {
return this; return this;
} }
@Override
public Encrypt profile(String profileName) {
for (Profile profile : SUPPORTED_PROFILES) {
if (profile.getName().equals(profileName)) {
this.profile = profile.getName();
return this;
}
}
throw new SOPGPException.UnsupportedProfile("encrypt", profileName);
}
@Override @Override
public Ready plaintext(InputStream plaintext) throws IOException { public Ready plaintext(InputStream plaintext) throws IOException {
if (!encryptionOptions.hasEncryptionMethod()) { if (!encryptionOptions.hasEncryptionMethod()) {

View file

@ -22,6 +22,9 @@ public class ListProfilesImpl implements ListProfiles {
case "generate-key": case "generate-key":
return GenerateKeyImpl.SUPPORTED_PROFILES; return GenerateKeyImpl.SUPPORTED_PROFILES;
case "encrypt":
return EncryptImpl.SUPPORTED_PROFILES;
default: default:
throw new SOPGPException.UnsupportedProfile(command); throw new SOPGPException.UnsupportedProfile(command);
} }