mirror of
https://github.com/pgpainless/pgpainless.git
synced 2024-11-17 18:02:05 +01:00
Introduce VerificationHelper class and export signature mode in decrypt operation
This commit is contained in:
parent
06c924d41d
commit
e3bacdbe35
5 changed files with 57 additions and 53 deletions
|
@ -129,7 +129,7 @@ public class RoundTripEncryptDecryptCmdTest extends CLITest {
|
|||
String romeosVerif = readStringFromFile(anotherVerificationsFile);
|
||||
assertEquals(julietsVerif, romeosVerif);
|
||||
assertFalse(julietsVerif.isEmpty());
|
||||
assertEquals(103, julietsVerif.length()); // 103 is number of symbols in [DATE, FINGER, FINGER] for V4
|
||||
assertEquals(115, julietsVerif.length()); // 115 is number of symbols in [DATE, FINGER, FINGER, MODE] for V4
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -274,7 +274,7 @@ public class RoundTripEncryptDecryptCmdTest extends CLITest {
|
|||
|
||||
assertEquals(plaintext, out.toString());
|
||||
String verificationString = readStringFromFile(verifications);
|
||||
assertEquals("2022-11-09T17:22:48Z C0DCEC44B1A173664B05DABCECD0BF863F65C9A5 A2EC077FC977E15DD799EFF92C0D3C123CF51C08\n",
|
||||
assertEquals("2022-11-09T17:22:48Z C0DCEC44B1A173664B05DABCECD0BF863F65C9A5 A2EC077FC977E15DD799EFF92C0D3C123CF51C08 mode:binary\n",
|
||||
verificationString);
|
||||
}
|
||||
|
||||
|
|
|
@ -147,7 +147,7 @@ public class DecryptImpl implements Decrypt {
|
|||
|
||||
List<Verification> verificationList = new ArrayList<>();
|
||||
for (SignatureVerification signatureVerification : metadata.getVerifiedInlineSignatures()) {
|
||||
verificationList.add(map(signatureVerification));
|
||||
verificationList.add(VerificationHelper.mapVerification(signatureVerification));
|
||||
}
|
||||
|
||||
SessionKey sessionKey = null;
|
||||
|
@ -163,10 +163,4 @@ public class DecryptImpl implements Decrypt {
|
|||
}
|
||||
};
|
||||
}
|
||||
|
||||
private Verification map(SignatureVerification sigVerification) {
|
||||
return new Verification(sigVerification.getSignature().getCreationTime(),
|
||||
sigVerification.getSigningKey().getSubkeyFingerprint().toString(),
|
||||
sigVerification.getSigningKey().getPrimaryKeyFingerprint().toString());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,6 @@ import java.util.List;
|
|||
|
||||
import org.bouncycastle.openpgp.PGPException;
|
||||
import org.bouncycastle.openpgp.PGPPublicKeyRingCollection;
|
||||
import org.bouncycastle.openpgp.PGPSignature;
|
||||
import org.bouncycastle.util.io.Streams;
|
||||
import org.pgpainless.PGPainless;
|
||||
import org.pgpainless.decryption_verification.ConsumerOptions;
|
||||
|
@ -21,7 +20,6 @@ import org.pgpainless.decryption_verification.MessageMetadata;
|
|||
import org.pgpainless.decryption_verification.SignatureVerification;
|
||||
import org.pgpainless.exception.MalformedOpenPgpMessageException;
|
||||
import sop.Verification;
|
||||
import sop.enums.SignatureMode;
|
||||
import sop.exception.SOPGPException;
|
||||
import sop.operation.DetachedVerify;
|
||||
|
||||
|
@ -78,7 +76,7 @@ public class DetachedVerifyImpl implements DetachedVerify {
|
|||
List<Verification> verificationList = new ArrayList<>();
|
||||
|
||||
for (SignatureVerification signatureVerification : metadata.getVerifiedDetachedSignatures()) {
|
||||
verificationList.add(map(signatureVerification));
|
||||
verificationList.add(VerificationHelper.mapVerification(signatureVerification));
|
||||
}
|
||||
|
||||
if (!options.getCertificateSource().getExplicitCertificates().isEmpty()) {
|
||||
|
@ -92,23 +90,4 @@ public class DetachedVerifyImpl implements DetachedVerify {
|
|||
throw new SOPGPException.BadData(e);
|
||||
}
|
||||
}
|
||||
|
||||
private Verification map(SignatureVerification sigVerification) {
|
||||
return new Verification(sigVerification.getSignature().getCreationTime(),
|
||||
sigVerification.getSigningKey().getSubkeyFingerprint().toString(),
|
||||
sigVerification.getSigningKey().getPrimaryKeyFingerprint().toString(),
|
||||
getMode(sigVerification.getSignature()),
|
||||
null);
|
||||
}
|
||||
|
||||
private static SignatureMode getMode(PGPSignature signature) {
|
||||
if (signature.getSignatureType() == PGPSignature.BINARY_DOCUMENT) {
|
||||
return SignatureMode.binary;
|
||||
}
|
||||
if (signature.getSignatureType() == PGPSignature.CANONICAL_TEXT_DOCUMENT) {
|
||||
return SignatureMode.text;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,6 @@ import java.util.List;
|
|||
|
||||
import org.bouncycastle.openpgp.PGPException;
|
||||
import org.bouncycastle.openpgp.PGPPublicKeyRingCollection;
|
||||
import org.bouncycastle.openpgp.PGPSignature;
|
||||
import org.bouncycastle.util.io.Streams;
|
||||
import org.pgpainless.PGPainless;
|
||||
import org.pgpainless.decryption_verification.ConsumerOptions;
|
||||
|
@ -24,7 +23,6 @@ import org.pgpainless.exception.MalformedOpenPgpMessageException;
|
|||
import org.pgpainless.exception.MissingDecryptionMethodException;
|
||||
import sop.ReadyWithResult;
|
||||
import sop.Verification;
|
||||
import sop.enums.SignatureMode;
|
||||
import sop.exception.SOPGPException;
|
||||
import sop.operation.InlineVerify;
|
||||
|
||||
|
@ -76,7 +74,7 @@ public class InlineVerifyImpl implements InlineVerify {
|
|||
metadata.getVerifiedInlineSignatures();
|
||||
|
||||
for (SignatureVerification signatureVerification : verifications) {
|
||||
verificationList.add(map(signatureVerification));
|
||||
verificationList.add(VerificationHelper.mapVerification(signatureVerification));
|
||||
}
|
||||
|
||||
if (!options.getCertificateSource().getExplicitCertificates().isEmpty()) {
|
||||
|
@ -94,23 +92,4 @@ public class InlineVerifyImpl implements InlineVerify {
|
|||
}
|
||||
};
|
||||
}
|
||||
|
||||
private Verification map(SignatureVerification sigVerification) {
|
||||
return new Verification(sigVerification.getSignature().getCreationTime(),
|
||||
sigVerification.getSigningKey().getSubkeyFingerprint().toString(),
|
||||
sigVerification.getSigningKey().getPrimaryKeyFingerprint().toString(),
|
||||
getMode(sigVerification.getSignature()),
|
||||
null);
|
||||
}
|
||||
|
||||
private static SignatureMode getMode(PGPSignature signature) {
|
||||
if (signature.getSignatureType() == PGPSignature.BINARY_DOCUMENT) {
|
||||
return SignatureMode.binary;
|
||||
}
|
||||
if (signature.getSignatureType() == PGPSignature.CANONICAL_TEXT_DOCUMENT) {
|
||||
return SignatureMode.text;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
// SPDX-FileCopyrightText: 2023 Paul Schaub <vanitasvitae@fsfe.org>
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package org.pgpainless.sop;
|
||||
|
||||
import org.bouncycastle.openpgp.PGPSignature;
|
||||
import org.pgpainless.decryption_verification.SignatureVerification;
|
||||
import sop.Verification;
|
||||
import sop.enums.SignatureMode;
|
||||
|
||||
/**
|
||||
* Helper class for shared methods related to {@link Verification Verifications}.
|
||||
*/
|
||||
public class VerificationHelper {
|
||||
|
||||
/**
|
||||
* Map a {@link SignatureVerification} object to a {@link Verification}.
|
||||
*
|
||||
* @param sigVerification signature verification
|
||||
* @return verification
|
||||
*/
|
||||
public static Verification mapVerification(SignatureVerification sigVerification) {
|
||||
return new Verification(
|
||||
sigVerification.getSignature().getCreationTime(),
|
||||
sigVerification.getSigningKey().getSubkeyFingerprint().toString(),
|
||||
sigVerification.getSigningKey().getPrimaryKeyFingerprint().toString(),
|
||||
getMode(sigVerification.getSignature()),
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Map an OpenPGP signature type to a {@link SignatureMode} enum.
|
||||
* Note: This method only maps {@link PGPSignature#BINARY_DOCUMENT} and {@link PGPSignature#CANONICAL_TEXT_DOCUMENT}.
|
||||
* Other values are mapped to <pre>null</pre>.
|
||||
*
|
||||
* @param signature signature
|
||||
* @return signature mode enum or null
|
||||
*/
|
||||
private static SignatureMode getMode(PGPSignature signature) {
|
||||
|
||||
if (signature.getSignatureType() == PGPSignature.BINARY_DOCUMENT) {
|
||||
return SignatureMode.binary;
|
||||
}
|
||||
|
||||
if (signature.getSignatureType() == PGPSignature.CANONICAL_TEXT_DOCUMENT) {
|
||||
return SignatureMode.text;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue