mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-11-23 20:42:06 +01:00
Integration tests are working!
This commit is contained in:
parent
fa559d157b
commit
7b56cc79e6
4 changed files with 27 additions and 6 deletions
|
@ -75,8 +75,8 @@ public class BasicOpenPgpInstantMessagingIntegrationTest extends AbstractOpenPgp
|
||||||
FileBasedOpenPgpStore bobStore = new FileBasedOpenPgpStore(bobStorePath);
|
FileBasedOpenPgpStore bobStore = new FileBasedOpenPgpStore(bobStorePath);
|
||||||
bobStore.setKeyRingProtector(new UnprotectedKeysProtector());
|
bobStore.setKeyRingProtector(new UnprotectedKeysProtector());
|
||||||
|
|
||||||
PainlessOpenPgpProvider aliceProvider = new PainlessOpenPgpProvider(aliceStore);
|
PainlessOpenPgpProvider aliceProvider = new PainlessOpenPgpProvider(aliceConnection, aliceStore);
|
||||||
PainlessOpenPgpProvider bobProvider = new PainlessOpenPgpProvider(bobStore);
|
PainlessOpenPgpProvider bobProvider = new PainlessOpenPgpProvider(bobConnection, bobStore);
|
||||||
|
|
||||||
OpenPgpManager aliceOpenPgp = OpenPgpManager.getInstanceFor(aliceConnection);
|
OpenPgpManager aliceOpenPgp = OpenPgpManager.getInstanceFor(aliceConnection);
|
||||||
OpenPgpManager bobOpenPgp = OpenPgpManager.getInstanceFor(bobConnection);
|
OpenPgpManager bobOpenPgp = OpenPgpManager.getInstanceFor(bobConnection);
|
||||||
|
|
|
@ -100,7 +100,7 @@ public class SecretKeyBackupRestoreIntegrationTest extends AbstractOpenPgpIntegr
|
||||||
|
|
||||||
OpenPgpStore beforeStore = new FileBasedOpenPgpStore(beforePath);
|
OpenPgpStore beforeStore = new FileBasedOpenPgpStore(beforePath);
|
||||||
beforeStore.setKeyRingProtector(new UnprotectedKeysProtector());
|
beforeStore.setKeyRingProtector(new UnprotectedKeysProtector());
|
||||||
PainlessOpenPgpProvider beforeProvider = new PainlessOpenPgpProvider(beforeStore);
|
PainlessOpenPgpProvider beforeProvider = new PainlessOpenPgpProvider(aliceConnection, beforeStore);
|
||||||
OpenPgpManager openPgpManager = OpenPgpManager.getInstanceFor(aliceConnection);
|
OpenPgpManager openPgpManager = OpenPgpManager.getInstanceFor(aliceConnection);
|
||||||
openPgpManager.setOpenPgpProvider(beforeProvider);
|
openPgpManager.setOpenPgpProvider(beforeProvider);
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ public class SecretKeyBackupRestoreIntegrationTest extends AbstractOpenPgpIntegr
|
||||||
|
|
||||||
FileBasedOpenPgpStore afterStore = new FileBasedOpenPgpStore(afterPath);
|
FileBasedOpenPgpStore afterStore = new FileBasedOpenPgpStore(afterPath);
|
||||||
afterStore.setKeyRingProtector(new UnprotectedKeysProtector());
|
afterStore.setKeyRingProtector(new UnprotectedKeysProtector());
|
||||||
PainlessOpenPgpProvider afterProvider = new PainlessOpenPgpProvider(afterStore);
|
PainlessOpenPgpProvider afterProvider = new PainlessOpenPgpProvider(aliceConnection, afterStore);
|
||||||
openPgpManager.setOpenPgpProvider(afterProvider);
|
openPgpManager.setOpenPgpProvider(afterProvider);
|
||||||
|
|
||||||
self = openPgpManager.getOpenPgpSelf();
|
self = openPgpManager.getOpenPgpSelf();
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
package org.jivesoftware.smackx.ox;
|
package org.jivesoftware.smackx.ox;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -73,7 +74,7 @@ public class OpenPgpContact {
|
||||||
BareJidUserId.PubRingSelectionStrategy userIdFilter = new BareJidUserId.PubRingSelectionStrategy();
|
BareJidUserId.PubRingSelectionStrategy userIdFilter = new BareJidUserId.PubRingSelectionStrategy();
|
||||||
AnnouncedKeys.PubKeyRingSelectionStrategy announcedFilter = new AnnouncedKeys.PubKeyRingSelectionStrategy();
|
AnnouncedKeys.PubKeyRingSelectionStrategy announcedFilter = new AnnouncedKeys.PubKeyRingSelectionStrategy();
|
||||||
|
|
||||||
for (PGPPublicKeyRing ring : anyKeys) {
|
for (PGPPublicKeyRing ring : (anyKeys != null ? anyKeys : Collections.<PGPPublicKeyRing>emptyList())) {
|
||||||
|
|
||||||
if (!userIdFilter.accept(getJid(), ring)) {
|
if (!userIdFilter.accept(getJid(), ring)) {
|
||||||
LOGGER.log(Level.WARNING, "Ignore key " + Long.toHexString(ring.getPublicKey().getKeyID()) +
|
LOGGER.log(Level.WARNING, "Ignore key " + Long.toHexString(ring.getPublicKey().getKeyID()) +
|
||||||
|
|
|
@ -21,7 +21,12 @@ import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import org.jivesoftware.smack.SmackException;
|
||||||
|
import org.jivesoftware.smack.XMPPConnection;
|
||||||
|
import org.jivesoftware.smack.XMPPException;
|
||||||
import org.jivesoftware.smack.util.stringencoder.Base64;
|
import org.jivesoftware.smack.util.stringencoder.Base64;
|
||||||
import org.jivesoftware.smackx.ox.OpenPgpContact;
|
import org.jivesoftware.smackx.ox.OpenPgpContact;
|
||||||
import org.jivesoftware.smackx.ox.OpenPgpMessage;
|
import org.jivesoftware.smackx.ox.OpenPgpMessage;
|
||||||
|
@ -31,6 +36,7 @@ import org.jivesoftware.smackx.ox.element.OpenPgpElement;
|
||||||
import org.jivesoftware.smackx.ox.element.SignElement;
|
import org.jivesoftware.smackx.ox.element.SignElement;
|
||||||
import org.jivesoftware.smackx.ox.element.SigncryptElement;
|
import org.jivesoftware.smackx.ox.element.SigncryptElement;
|
||||||
import org.jivesoftware.smackx.ox.store.definition.OpenPgpStore;
|
import org.jivesoftware.smackx.ox.store.definition.OpenPgpStore;
|
||||||
|
import org.jivesoftware.smackx.pubsub.PubSubException;
|
||||||
|
|
||||||
import org.bouncycastle.openpgp.PGPException;
|
import org.bouncycastle.openpgp.PGPException;
|
||||||
import org.bouncycastle.openpgp.PGPPublicKeyRingCollection;
|
import org.bouncycastle.openpgp.PGPPublicKeyRingCollection;
|
||||||
|
@ -42,9 +48,13 @@ import org.pgpainless.pgpainless.encryption_signing.EncryptionStream;
|
||||||
|
|
||||||
public class PainlessOpenPgpProvider implements OpenPgpProvider {
|
public class PainlessOpenPgpProvider implements OpenPgpProvider {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = Logger.getLogger(PainlessOpenPgpProvider.class.getName());
|
||||||
|
|
||||||
|
private final XMPPConnection connection;
|
||||||
private final OpenPgpStore store;
|
private final OpenPgpStore store;
|
||||||
|
|
||||||
public PainlessOpenPgpProvider(OpenPgpStore store) {
|
public PainlessOpenPgpProvider(XMPPConnection connection, OpenPgpStore store) {
|
||||||
|
this.connection = connection;
|
||||||
this.store = store;
|
this.store = store;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,6 +147,16 @@ public class PainlessOpenPgpProvider implements OpenPgpProvider {
|
||||||
ByteArrayOutputStream plainText = new ByteArrayOutputStream();
|
ByteArrayOutputStream plainText = new ByteArrayOutputStream();
|
||||||
InputStream cipherText = element.toInputStream();
|
InputStream cipherText = element.toInputStream();
|
||||||
|
|
||||||
|
PGPPublicKeyRingCollection announcedPublicKeys = sender.getAnnouncedPublicKeys();
|
||||||
|
if (announcedPublicKeys == null) {
|
||||||
|
try {
|
||||||
|
sender.updateKeys(connection);
|
||||||
|
announcedPublicKeys = sender.getAnnouncedPublicKeys();
|
||||||
|
} catch (InterruptedException | PubSubException.NotAPubSubNodeException | PubSubException.NotALeafNodeException | XMPPException.XMPPErrorException | SmackException.NoResponseException | SmackException.NotConnectedException e) {
|
||||||
|
LOGGER.log(Level.WARNING, "Error fetching keys of " + sender.getJid(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DecryptionStream cipherStream = PGPainless.createDecryptor().onInputStream(cipherText)
|
DecryptionStream cipherStream = PGPainless.createDecryptor().onInputStream(cipherText)
|
||||||
.decryptWith(store.getKeyRingProtector(), self.getSecretKeys())
|
.decryptWith(store.getKeyRingProtector(), self.getSecretKeys())
|
||||||
.verifyWith(sender.getAnnouncedPublicKeys())
|
.verifyWith(sender.getAnnouncedPublicKeys())
|
||||||
|
|
Loading…
Reference in a new issue