mirror of
https://github.com/pgpainless/pgpainless.git
synced 2024-11-14 16:32:06 +01:00
Fix test and add temporary workaround
This commit is contained in:
parent
23e31a1483
commit
8f8b8f534b
2 changed files with 29 additions and 5 deletions
|
@ -32,6 +32,9 @@ import org.pgpainless.algorithm.KeyFlag;
|
|||
import org.pgpainless.algorithm.PublicKeyAlgorithm;
|
||||
import org.pgpainless.key.util.RevocationAttributes;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class SignatureSubpacketsHelper {
|
||||
|
||||
public static SignatureSubpackets applyFrom(PGPSignatureSubpacketVector vector, SignatureSubpackets subpackets) {
|
||||
|
@ -81,6 +84,19 @@ public class SignatureSubpacketsHelper {
|
|||
subpackets.setPreferredCompressionAlgorithms((PreferredAlgorithms) subpacket);
|
||||
break;
|
||||
case preferredAEADAlgorithms:
|
||||
// Workaround for https://github.com/pgpainless/pgpainless/pull/399
|
||||
// TODO: Remove when BC 1.77 is released
|
||||
if (subpacket instanceof PreferredAlgorithms) {
|
||||
List<PreferredAEADCiphersuites.Combination> combinationList = new ArrayList<>();
|
||||
int[] algorithms = ((PreferredAlgorithms) subpacket).getPreferences();
|
||||
for (int i = 0; i < algorithms.length; i += 2) {
|
||||
combinationList.add(new PreferredAEADCiphersuites.Combination(algorithms[i], algorithms[i + 1]));
|
||||
}
|
||||
PreferredAEADCiphersuites aead = new PreferredAEADCiphersuites(
|
||||
subpacket.isCritical(), combinationList.toArray(new PreferredAEADCiphersuites.Combination[0]));
|
||||
subpackets.setPreferredAEADCiphersuites(aead);
|
||||
break;
|
||||
}
|
||||
subpackets.setPreferredAEADCiphersuites((PreferredAEADCiphersuites) subpacket);
|
||||
break;
|
||||
case primaryUserId:
|
||||
|
|
|
@ -17,12 +17,15 @@ import java.util.Date;
|
|||
import java.util.Iterator;
|
||||
import java.util.Random;
|
||||
|
||||
import org.bouncycastle.bcpg.AEADAlgorithmTags;
|
||||
import org.bouncycastle.bcpg.SignatureSubpacket;
|
||||
import org.bouncycastle.bcpg.SignatureSubpacketTags;
|
||||
import org.bouncycastle.bcpg.SymmetricKeyAlgorithmTags;
|
||||
import org.bouncycastle.bcpg.sig.Exportable;
|
||||
import org.bouncycastle.bcpg.sig.Features;
|
||||
import org.bouncycastle.bcpg.sig.IssuerFingerprint;
|
||||
import org.bouncycastle.bcpg.sig.NotationData;
|
||||
import org.bouncycastle.bcpg.sig.PreferredAEADCiphersuites;
|
||||
import org.bouncycastle.bcpg.sig.PreferredAlgorithms;
|
||||
import org.bouncycastle.bcpg.sig.Revocable;
|
||||
import org.bouncycastle.bcpg.sig.RevocationKey;
|
||||
|
@ -481,9 +484,14 @@ public class SignatureSubpacketsTest {
|
|||
new Random().nextBytes(hash);
|
||||
subpackets.setSignatureTarget(false, publicKeys.getPublicKey().getAlgorithm(), HashAlgorithm.SHA512.getAlgorithmId(), hash);
|
||||
subpackets.addIntendedRecipientFingerprint(true, publicKeys.getPublicKey());
|
||||
PreferredAlgorithms aead = new PreferredAlgorithms(SignatureSubpacketTags.PREFERRED_AEAD_ALGORITHMS, false, new int[] {2});
|
||||
subpackets.addCustomSubpacket(aead);
|
||||
|
||||
PreferredAEADCiphersuites.Combination[] aead = new PreferredAEADCiphersuites.Combination[] {
|
||||
new PreferredAEADCiphersuites.Combination(SymmetricKeyAlgorithmTags.AES_256, AEADAlgorithmTags.OCB),
|
||||
new PreferredAEADCiphersuites.Combination(SymmetricKeyAlgorithmTags.AES_128, AEADAlgorithmTags.EAX)
|
||||
};
|
||||
subpackets.setPreferredAEADAlgorithms(false, new int[] {
|
||||
aead[0].getSymmetricAlgorithm(), aead[0].getAeadAlgorithm(),
|
||||
aead[1].getSymmetricAlgorithm(), aead[1].getAeadAlgorithm()
|
||||
});
|
||||
|
||||
SignatureSubpackets wrapper = SignatureSubpackets.createSubpacketsFrom(subpackets.generate());
|
||||
PGPSignatureSubpacketVector vector = SignatureSubpacketsHelper.toVector(wrapper);
|
||||
|
@ -530,7 +538,7 @@ public class SignatureSubpacketsTest {
|
|||
assertEquals(HashAlgorithm.SHA512.getAlgorithmId(), signatureTarget.getHashAlgorithm());
|
||||
assertArrayEquals(hash, signatureTarget.getHashData());
|
||||
assertArrayEquals(publicKeys.getPublicKey().getFingerprint(), vector.getIntendedRecipientFingerprint().getFingerprint());
|
||||
PreferredAlgorithms aeadAlgorithms = (PreferredAlgorithms) vector.getSubpacket(SignatureSubpacketTags.PREFERRED_AEAD_ALGORITHMS);
|
||||
assertArrayEquals(aead.getPreferences(), aeadAlgorithms.getPreferences());
|
||||
PreferredAEADCiphersuites aeadAlgorithms = (PreferredAEADCiphersuites) vector.getSubpacket(SignatureSubpacketTags.PREFERRED_AEAD_ALGORITHMS);
|
||||
assertArrayEquals(aead, aeadAlgorithms.getRawAlgorithms());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue