mirror of
https://github.com/pgpainless/pgpainless.git
synced 2025-09-11 19:29:39 +02:00
WIP: Implement delegations
THERE ARE THINGS BROKEN NOW. DO NOT MERGE!
This commit is contained in:
parent
c1170773bc
commit
fa5ddfd112
7 changed files with 272 additions and 55 deletions
|
@ -23,6 +23,7 @@ import org.bouncycastle.util.Arrays;
|
|||
import org.junit.jupiter.api.Test;
|
||||
import org.pgpainless.PGPainless;
|
||||
import org.pgpainless.algorithm.SignatureType;
|
||||
import org.pgpainless.algorithm.Trustworthiness;
|
||||
import org.pgpainless.key.protection.SecretKeyRingProtector;
|
||||
import org.pgpainless.signature.consumer.SignatureVerifier;
|
||||
import org.pgpainless.util.CollectionUtils;
|
||||
|
@ -31,7 +32,7 @@ import org.pgpainless.util.DateUtil;
|
|||
public class CertifyCertificateTest {
|
||||
|
||||
@Test
|
||||
public void testSuccessfulCertificationOfUserId() throws PGPException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, IOException {
|
||||
public void testUserIdCertification() throws PGPException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, IOException {
|
||||
SecretKeyRingProtector protector = SecretKeyRingProtector.unprotectedKeys();
|
||||
PGPSecretKeyRing alice = PGPainless.generateKeyRing().modernKeyRing("Alice <alice@pgpainless.org>", null);
|
||||
String bobUserId = "Bob <bob@pgpainless.org>";
|
||||
|
@ -39,8 +40,8 @@ public class CertifyCertificateTest {
|
|||
|
||||
PGPPublicKeyRing bobCertificate = PGPainless.extractCertificate(bob);
|
||||
|
||||
CertifyCertificate.CertifyUserIdResult result = PGPainless.certifyCertificate()
|
||||
.certifyUserId(bobCertificate, bobUserId)
|
||||
CertifyCertificate.CertificationResult result = PGPainless.certify()
|
||||
.userIdOnCertificate(bobUserId, bobCertificate)
|
||||
.withKey(alice, protector)
|
||||
.build();
|
||||
|
||||
|
@ -64,4 +65,37 @@ public class CertifyCertificateTest {
|
|||
|
||||
assertFalse(Arrays.areEqual(bobCertificate.getEncoded(), bobCertified.getEncoded()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testKeyDelegation() throws PGPException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, IOException {
|
||||
SecretKeyRingProtector protector = SecretKeyRingProtector.unprotectedKeys();
|
||||
PGPSecretKeyRing alice = PGPainless.generateKeyRing().modernKeyRing("Alice <alice@pgpainless.org>", null);
|
||||
PGPSecretKeyRing bob = PGPainless.generateKeyRing().modernKeyRing("Bob <bob@pgpainless.org>", null);
|
||||
|
||||
PGPPublicKeyRing bobCertificate = PGPainless.extractCertificate(bob);
|
||||
|
||||
CertifyCertificate.CertificationResult result = PGPainless.certify()
|
||||
.certificate(bobCertificate, Trustworthiness.fullyTrusted().introducer())
|
||||
.withKey(alice, protector)
|
||||
.build();
|
||||
|
||||
assertNotNull(result);
|
||||
PGPSignature signature = result.getCertification();
|
||||
assertNotNull(signature);
|
||||
assertEquals(SignatureType.DIRECT_KEY, SignatureType.valueOf(signature.getSignatureType()));
|
||||
assertEquals(alice.getPublicKey().getKeyID(), signature.getKeyID());
|
||||
|
||||
assertTrue(SignatureVerifier.verifyDirectKeySignature(
|
||||
signature, alice.getPublicKey(), bob.getPublicKey(), PGPainless.getPolicy(), DateUtil.now()));
|
||||
|
||||
PGPPublicKeyRing bobCertified = result.getCertifiedCertificate();
|
||||
PGPPublicKey bobCertifiedKey = bobCertified.getPublicKey();
|
||||
|
||||
List<PGPSignature> sigsByAlice = CollectionUtils.iteratorToList(
|
||||
bobCertifiedKey.getSignaturesForKeyID(alice.getPublicKey().getKeyID()));
|
||||
assertEquals(1, sigsByAlice.size());
|
||||
assertEquals(signature, sigsByAlice.get(0));
|
||||
|
||||
assertFalse(Arrays.areEqual(bobCertificate.getEncoded(), bobCertified.getEncoded()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,6 +40,8 @@ public class DirectKeySignatureBuilderTest {
|
|||
secretKeys.getSecretKey(),
|
||||
SecretKeyRingProtector.unprotectedKeys());
|
||||
|
||||
System.out.println("FIXME"); // will cause checkstyle warning, so I remember
|
||||
/*
|
||||
dsb.applyCallback(new SelfSignatureSubpackets.Callback() {
|
||||
@Override
|
||||
public void modifyHashedSubpackets(SelfSignatureSubpackets hashedSubpackets) {
|
||||
|
@ -50,6 +52,7 @@ public class DirectKeySignatureBuilderTest {
|
|||
hashedSubpackets.setFeatures(Feature.MODIFICATION_DETECTION);
|
||||
}
|
||||
});
|
||||
*/
|
||||
|
||||
Thread.sleep(1000);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue