prepare functionality to join oob-verification

This commit is contained in:
B. Petersen
2018-03-21 01:17:33 +01:00
parent f450b14fa9
commit efec8c45d9
4 changed files with 38 additions and 16 deletions
+6
View File
@@ -606,6 +606,12 @@ JNIEXPORT jlong Java_com_b44t_messenger_MrMailbox_checkScannedQrCPtr(JNIEnv *env
}
JNIEXPORT void Java_com_b44t_messenger_MrMailbox_joinOob(JNIEnv *env, jclass cls, jint contact_id)
{
mrmailbox_join_oob(get_mrmailbox_t(env, cls), contact_id);
}
/* MrMailbox - misc. */
JNIEXPORT jstring Java_com_b44t_messenger_MrMailbox_getInfo(JNIEnv *env, jclass cls)
@@ -38,6 +38,7 @@ import android.content.res.Configuration;
import android.graphics.Outline;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.StringRes;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.MotionEvent;
@@ -721,8 +722,21 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
String qrRawString = scanResult.getContents();
final MrLot qrParsed = MrMailbox.checkScannedQr(qrRawString);
String nameNAddr = MrMailbox.getContact(qrParsed.getId()).getNameNAddr();
switch( qrParsed.getState() ) {
case MrMailbox.MR_QR_FINGERPRINT_ASK_OOB:
builder.setMessage(AndroidUtilities.replaceTags(String.format(ApplicationLoader.applicationContext.getString(R.string.OobFingerprintAskOob), nameNAddr)));
builder.setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
MrMailbox.joinOob(qrParsed.getId());
}
});
builder.setNegativeButton(R.string.Cancel, null);
break;
case MrMailbox.MR_QR_FINGERPRINT_WITHOUT_ADDR:
builder.setMessage(AndroidUtilities.replaceTags(ApplicationLoader.applicationContext.getString(R.string.OobFingerprintWithoutAddr)+"\n\n<c#808080>"+ApplicationLoader.applicationContext.getString(R.string.OobFingerprint)+":\n"+qrParsed.getText2()+"</c>"));
builder.setPositiveButton(R.string.OK, null);
@@ -735,10 +749,15 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
});
break;
case MrMailbox.MR_QR_FINGERPRINT_ASK_CMP:
case MrMailbox.MR_QR_FINGERPRINT_MISMATCH:
builder.setMessage(AndroidUtilities.replaceTags(String.format(ApplicationLoader.applicationContext.getString(R.string.OobFingerprintMismatch), nameNAddr)));
builder.setPositiveButton(R.string.OK, null);
break;
case MrMailbox.MR_QR_FINGERPRINT_OK:
case MrMailbox.MR_QR_ADDR:
String name = MrMailbox.getContact(qrParsed.getId()).getNameNAddr();
builder.setMessage(AndroidUtilities.replaceTags(String.format(ApplicationLoader.applicationContext.getString(R.string.AskStartChatWith), name)));
@StringRes int resId = qrParsed.getState()==MrMailbox.MR_QR_ADDR? R.string.AskStartChatWith : R.string.OobFingerprintOk;
builder.setMessage(AndroidUtilities.replaceTags(String.format(ApplicationLoader.applicationContext.getString(resId, nameNAddr))));
builder.setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
@@ -750,13 +769,6 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
builder.setNegativeButton(R.string.Cancel, null);
break;
case MrMailbox.MR_QR_FINGERPRINT_MISMATCH: {
String addr = MrMailbox.getContact(qrParsed.getId()).getAddr();
builder.setMessage(AndroidUtilities.replaceTags(String.format(ApplicationLoader.applicationContext.getString(R.string.OobFingerprintMismatch), addr)));
builder.setPositiveButton(R.string.OK, null);
}
break;
default:
String msg;
final String scannedText;
@@ -183,14 +183,16 @@ public class MrMailbox {
// out-of-band verification
public native static String getQr();
public final static int MR_QR_FINGERPRINT_ASK_CMP = 200;
public final static int MR_QR_FINGERPRINT_MISMATCH = 205;
public final static int MR_QR_FINGERPRINT_WITHOUT_ADDR = 210;
public final static int MR_QR_ADDR = 220;
public final static int MR_QR_TEXT = 230;
public final static int MR_QR_FINGERPRINT_ASK_OOB = 200;
public final static int MR_QR_FINGERPRINT_OK = 210;
public final static int MR_QR_FINGERPRINT_MISMATCH = 220;
public final static int MR_QR_FINGERPRINT_WITHOUT_ADDR = 230;
public final static int MR_QR_ADDR = 320;
public final static int MR_QR_TEXT = 330;
public final static int MR_QR_ERROR = 400;
public static MrLot checkScannedQr(String qr) { return new MrLot(checkScannedQrCPtr(qr)); }
public native static int checkScannedQrCPtr(String qr);
public native static void joinOob(int contact_id);
// static
public native static String MrGetVersionStr ();
@@ -431,6 +431,8 @@
<string name="QrShow">Show QR code</string>
<string name="QrScanContainsText">The scanned QR code contains the following text:\n\n%1$s</string>
<string name="OobFingerprint">Fingerprint</string>
<string name="OobFingerprintWithoutAddr">This QR code contains a fingerprint but no e-mail address.\n\nFor an out-of-band-verification, please first establish an encrpyted connection to the recipient.</string>
<string name="OobFingerprintAskOob">Verify contact and start chatting with <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
<string name="OobFingerprintOk">Contact <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> verified successfully. Start chatting now?</string>
<string name="OobFingerprintMismatch">The scanned fingerprint does <![CDATA[<b>]]>not match<![CDATA[</b>]]> the fingerprint last seen for <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.</string>
<string name="OobFingerprintWithoutAddr">This QR code contains a fingerprint but no e-mail address.\n\nFor an out-of-band-verification, please first establish an encrpyted connection to the recipient.</string>
</resources>