tls-psk: second steps

This commit is contained in:
Vincent Breitmoser
2017-05-29 23:56:30 +02:00
parent a55445f5bb
commit 9b3dd27ffd
5 changed files with 85 additions and 23 deletions

View File

@@ -51,8 +51,12 @@ public class TransferPresenter implements KeyTransferServerCallback, KeyTransfer
public void onClickScan() {
clearConnections();
view.scanQrCode();
}
public void onQrCodeScanned(String qrCodeContent) {
keyTransferClientInteractor = new KeyTransferClientInteractor();
keyTransferClientInteractor.connectToServer("10.100.40.126", this);
keyTransferClientInteractor.connectToServer(qrCodeContent, this);
}
private void clearConnections() {
@@ -73,7 +77,7 @@ public class TransferPresenter implements KeyTransferServerCallback, KeyTransfer
@Override
public void onServerStarted(String qrCodeData) {
Bitmap qrCodeBitmap = QrCodeUtils.getQRCodeBitmap(Uri.parse("pgp+transfer:" + qrCodeData), 0);
Bitmap qrCodeBitmap = QrCodeUtils.getQRCodeBitmap(Uri.parse("pgp+transfer://" + qrCodeData));
view.setQrImage(qrCodeBitmap);
}
@@ -93,5 +97,7 @@ public class TransferPresenter implements KeyTransferServerCallback, KeyTransfer
void showWaitingForConnection();
void setQrImage(Bitmap qrCode);
void scanQrCode();
}
}

View File

@@ -18,6 +18,8 @@
package org.sufficientlysecure.keychain.ui.transfer.view;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;
@@ -33,7 +35,9 @@ import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ViewAnimator;
import com.google.zxing.client.android.Intents;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.ui.QrCodeCaptureActivity;
import org.sufficientlysecure.keychain.ui.transfer.presenter.TransferPresenter;
import org.sufficientlysecure.keychain.ui.transfer.presenter.TransferPresenter.TransferMvpView;
@@ -42,10 +46,10 @@ import org.sufficientlysecure.keychain.ui.transfer.presenter.TransferPresenter.T
public class TransferFragment extends Fragment implements TransferMvpView {
public static final int VIEW_WAITING = 0;
public static final int VIEW_CONNECTED = 1;
public static final int REQUEST_CODE_SCAN = 1;
private ImageView vQrCodeImage;
private View vScanButton;
private TransferPresenter presenter;
private ViewAnimator vTransferAnimator;
private TextView vConnectionStatusText;
@@ -60,8 +64,8 @@ public class TransferFragment extends Fragment implements TransferMvpView {
vConnectionStatusText = (TextView) view.findViewById(R.id.connection_status);
vQrCodeImage = (ImageView) view.findViewById(R.id.qr_code_image);
vScanButton = view.findViewById(R.id.button_scan);
vScanButton.setOnClickListener(new OnClickListener() {
view.findViewById(R.id.button_scan).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (presenter != null) {
@@ -121,4 +125,24 @@ public class TransferFragment extends Fragment implements TransferMvpView {
});
vQrCodeImage.requestLayout();
}
@Override
public void scanQrCode() {
Intent intent = new Intent(getActivity(), QrCodeCaptureActivity.class);
startActivityForResult(intent, REQUEST_CODE_SCAN);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQUEST_CODE_SCAN:
if (resultCode == Activity.RESULT_OK) {
String qrCodeData = data.getStringExtra(Intents.Scan.RESULT);
presenter.onQrCodeScanned(qrCodeData);
}
break;
default:
super.onActivityResult(requestCode, resultCode, data);
}
}
}

View File

@@ -41,6 +41,10 @@ import java.util.Locale;
*/
public class QrCodeUtils {
public static Bitmap getQRCodeBitmap(final Uri uri) {
return getQRCodeBitmap(uri.toString(), 0);
}
public static Bitmap getQRCodeBitmap(final Uri uri, final int size) {
// for URIs we want alphanumeric encoding to save space, thus make everything upper case!
// zxing will then select Mode.ALPHANUMERIC internally