
2 changed files with 171 additions and 0 deletions
@ -0,0 +1,32 @@ |
|||||
|
include ../../../../../../../Makefile.conf |
||||
|
include ../Makefile.conf |
||||
|
|
||||
|
TEST_UNIT_NAME=jni98 |
||||
|
|
||||
|
JAVA_CLASSES = \
|
||||
|
TestMain.class \
|
||||
|
../utils/TestUtils.class |
||||
|
|
||||
|
.PHONY: compile run test clean |
||||
|
|
||||
|
all: compile |
||||
|
$(MAKE) run |
||||
|
|
||||
|
run: compile |
||||
|
cd $(JAVA_CWD);pwd;HOME=$(JAVA_PEP_HOME_DIR) $(JAVA) $(JAVA_PKG_BASENAME).$(TEST_UNIT_NAME).TestMain |
||||
|
|
||||
|
compile: $(JAVA_CLASSES) |
||||
|
|
||||
|
%.class: %.java |
||||
|
cd $(JAVA_CWD);javac -cp $(CLASSPATH) $(JAVA_PKG_BASEPATH)/$(TEST_UNIT_NAME)/$< |
||||
|
|
||||
|
clean: |
||||
|
rm -f $(JAVA_CLASSES) |
||||
|
rm -f *.class |
||||
|
rm -f *.log |
||||
|
rm -Rf .gnupg |
||||
|
rm -Rf .lldb |
||||
|
|
||||
|
clean-pep-home: |
||||
|
rm -rf $(PEP_HOME_DIR)/* |
||||
|
rm -rf $(PEP_HOME_DIR)/.pEp |
@ -0,0 +1,139 @@ |
|||||
|
package foundation.pEp.jniadapter.test.jni98; |
||||
|
|
||||
|
import foundation.pEp.jniadapter.test.utils.TestUtils; |
||||
|
import foundation.pEp.jniadapter.*; |
||||
|
|
||||
|
import java.nio.file.Files; |
||||
|
import java.nio.file.Path; |
||||
|
import java.nio.file.Paths; |
||||
|
import java.util.Vector; |
||||
|
import java.util.function.Consumer; |
||||
|
|
||||
|
/* |
||||
|
JNI-98 - "Factory function for generating incoming message from PGP text" |
||||
|
|
||||
|
Problem: |
||||
|
There must be a static function in class Engine, which is generating an encrypted |
||||
|
version of a Message, which is structured like messages coming out from encrypt_message() |
||||
|
when being used with Message.EncFormat.PEP. Additionally, it should work with inline format, too. |
||||
|
The signature is expected to be: |
||||
|
|
||||
|
public static Message incomingMessageFromPGPText(String pgpText, Message.EncFormat encFormat) |
||||
|
|
||||
|
Solution: |
||||
|
First, we need to know how the Message Object coming out from encrypt_message() are looking. |
||||
|
Then, we try to get the same Message from "incomingMessageFromPGPText()" |
||||
|
*/ |
||||
|
|
||||
|
/* |
||||
|
The one person we know is called bob and his pubkey is like this |
||||
|
bob.address = bob@peptest.org |
||||
|
bob.FPR = F804FBE1781F3E2F6158F9F709FB5BDA72BE51C1 |
||||
|
*/ |
||||
|
class TestEnv { |
||||
|
public Sync.DefaultCallback cb = new Sync.DefaultCallback(); |
||||
|
public Identity alice = new Identity(); |
||||
|
public Identity bob = new Identity(); |
||||
|
public Message msgToSelf; |
||||
|
public Message msgToBob; |
||||
|
public Vector<Identity> vID = new Vector<Identity>(); |
||||
|
public Vector<String> vStr = new Vector<String>(); |
||||
|
public byte[] keyBobPub; |
||||
|
private String fileNameKeyBobPub = "../resources/test_keys/bob-pub.asc"; |
||||
|
public Engine engine = new Engine(); |
||||
|
|
||||
|
public TestEnv() throws Exception { |
||||
|
// We are alice
|
||||
|
alice.address = "alice@peptest.org"; |
||||
|
alice.user_id = "23"; |
||||
|
alice.me = true; |
||||
|
alice = engine.myself(alice); |
||||
|
|
||||
|
// We know Bob and his pubkey
|
||||
|
try { |
||||
|
Path path = Paths.get(fileNameKeyBobPub); |
||||
|
keyBobPub = Files.readAllBytes(path); |
||||
|
} catch (Exception e) { |
||||
|
TestUtils.log("Could not open key file:" + fileNameKeyBobPub); |
||||
|
throw e; |
||||
|
} |
||||
|
engine.importKey(keyBobPub); |
||||
|
bob.address = "bob@peptest.org"; |
||||
|
|
||||
|
msgToSelf = makeNewMessage(alice, alice, Message.Direction.Outgoing); |
||||
|
msgToBob = makeNewMessage(alice, bob, Message.Direction.Outgoing); |
||||
|
|
||||
|
vID.add(bob); |
||||
|
vStr.add(""); |
||||
|
} |
||||
|
|
||||
|
public static Message makeNewMessage(Identity from, Identity to, Message.Direction dir) { |
||||
|
Message msg = new Message(); |
||||
|
Vector<Identity> vID = new Vector<Identity>(); |
||||
|
vID.add(to); |
||||
|
|
||||
|
msg.setFrom(from); |
||||
|
msg.setTo(vID); |
||||
|
msg.setDir(dir); |
||||
|
msg.setLongmsg("Hi i am the message longmsg"); |
||||
|
return msg; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
class TestUnit { |
||||
|
TestEnv env; |
||||
|
String testUnitName = "default test unit"; |
||||
|
Consumer<TestEnv> lambda; |
||||
|
|
||||
|
public TestUnit(String name, Consumer<TestEnv> consumer) throws Exception { |
||||
|
testUnitName = name; |
||||
|
lambda = consumer; |
||||
|
env = new TestEnv(); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
public void run() { |
||||
|
TestUtils.logH1(testUnitName); |
||||
|
try { |
||||
|
lambda.accept(env); |
||||
|
} catch (Throwable e) { |
||||
|
TestUtils.logH1("TestUnit FAILED: " + e.toString()); |
||||
|
return; |
||||
|
} |
||||
|
TestUtils.logH2("SUCCESS!"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
class TestMain { |
||||
|
public static void main(String[] args) throws Exception { |
||||
|
testRunNew(); |
||||
|
} |
||||
|
|
||||
|
public static void testRunNew() throws Exception { |
||||
|
new TestUnit("JNI-98 - Factory function for generating incoming message from PGP text", env -> { |
||||
|
// Make msg1 by encrypting msgToBob
|
||||
|
TestUtils.logH2("Create target Message"); |
||||
|
Message msg1 = env.engine.encrypt_message(env.msgToBob, null, Message.EncFormat.PEP); |
||||
|
TestUtils.log(TestUtils.msgToString(msg1)); |
||||
|
TestUtils.log("msg returned from encrypt_message is null"); |
||||
|
|
||||
|
// Lets get the pgpText of the msg1, and the EncFormat
|
||||
|
String pgpText = Engine.toUTF16(msg1.getAttachments().elementAt(1).data); |
||||
|
Message.EncFormat ef = msg1.getEncFormat(); |
||||
|
|
||||
|
// Create msg2 by using incomingMessageFromPGPText with the pgpText and EncFormat from msg1
|
||||
|
TestUtils.logH2("incomingMessageFromPGPText()"); |
||||
|
Message msg2 = Engine.incomingMessageFromPGPText(pgpText, ef); |
||||
|
TestUtils.log(TestUtils.msgToString(msg2)); |
||||
|
TestUtils.log("msg returned from incomingMessageFromPGPText() is null"); |
||||
|
|
||||
|
TestUtils.logH2("Verify msg2"); |
||||
|
Engine.decrypt_message_Return result = null; |
||||
|
result = env.engine.decrypt_message(msg2, env.vStr, 0); |
||||
|
TestUtils.log(TestUtils.msgToString(result.dst)); |
||||
|
}).run(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
Loading…
Reference in new issue