From c744cad8db7ba0b9ea38907f0c7f61032792ef84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Sun, 9 Feb 2014 21:37:01 +0100 Subject: [PATCH] Allow import of full keys from qr codes --- .../keychain/ui/ImportKeysQrCodeFragment.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysQrCodeFragment.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysQrCodeFragment.java index 27628dad4..ee91b2434 100644 --- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysQrCodeFragment.java +++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysQrCodeFragment.java @@ -98,22 +98,29 @@ public class ImportKeysQrCodeFragment extends Fragment { IntentResult scanResult = IntentIntegratorSupportV4.parseActivityResult(requestCode, resultCode, data); if (scanResult != null && scanResult.getFormatName() != null) { + String scannedContent = scanResult.getContents(); - Log.d(Constants.TAG, "scanResult content: " + scanResult.getContents()); + Log.d(Constants.TAG, "scannedContent: " + scannedContent); // look if it's fingerprint only - if (scanResult.getContents().toLowerCase(Locale.ENGLISH).startsWith(Constants.FINGERPRINT_SCHEME)) { + if (scannedContent.toLowerCase(Locale.ENGLISH).startsWith(Constants.FINGERPRINT_SCHEME)) { importFingerprint(Uri.parse(scanResult.getContents())); return; } // look if it is the whole key - String[] parts = scanResult.getContents().split(","); + String[] parts = scannedContent.split(","); if (parts.length == 3) { importParts(parts); return; } + // is this a full key encoded as qr code? + if (scannedContent.startsWith("-----BEGIN PGP")) { + mImportActivity.loadCallback(scannedContent.getBytes(), null, null, null); + return; + } + // fail... Toast.makeText(getActivity(), R.string.import_qr_code_wrong, Toast.LENGTH_LONG) .show();