mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-11-11 03:25:05 -05:00
Merge branch 'master' of github.com:open-keychain/open-keychain
This commit is contained in:
commit
e76a8aaedf
@ -404,8 +404,9 @@ public class ProviderHelper {
|
||||
values.put(Keys.HAS_SECRET, 1);
|
||||
// then, mark exactly the keys we have available
|
||||
for (PGPSecretKey sub : new IterableIterator<PGPSecretKey>(keyRing.getSecretKeys())) {
|
||||
S2K s2k = sub.getS2K();
|
||||
// Set to 1, except if the encryption type is GNU_DUMMY_S2K
|
||||
if(sub.getS2K().getType() != S2K.GNU_DUMMY_S2K) {
|
||||
if(s2k == null || s2k.getType() != S2K.GNU_DUMMY_S2K) {
|
||||
mContentResolver.update(uri, values, Keys.KEY_ID + " = ?", new String[]{
|
||||
Long.toString(sub.getKeyID())
|
||||
});
|
||||
|
@ -247,6 +247,7 @@ public class EncryptAsymmetricFragment extends Fragment {
|
||||
|
||||
private void selectSecretKey() {
|
||||
Intent intent = new Intent(getActivity(), SelectSecretKeyActivity.class);
|
||||
intent.putExtra(SelectSecretKeyActivity.EXTRA_FILTER_SIGN, true);
|
||||
startActivityForResult(intent, REQUEST_CODE_SECRET_KEYS);
|
||||
}
|
||||
|
||||
|
@ -28,10 +28,10 @@ import org.sufficientlysecure.keychain.R;
|
||||
public class SelectSecretKeyActivity extends ActionBarActivity {
|
||||
|
||||
public static final String EXTRA_FILTER_CERTIFY = "filter_certify";
|
||||
public static final String EXTRA_FILTER_SIGN = "filter_sign";
|
||||
|
||||
public static final String RESULT_EXTRA_MASTER_KEY_ID = "master_key_id";
|
||||
|
||||
private boolean mFilterCertify;
|
||||
private SelectSecretKeyFragment mSelectFragment;
|
||||
|
||||
@Override
|
||||
@ -45,7 +45,8 @@ public class SelectSecretKeyActivity extends ActionBarActivity {
|
||||
actionBar.setDisplayHomeAsUpEnabled(false);
|
||||
actionBar.setHomeButtonEnabled(false);
|
||||
|
||||
mFilterCertify = getIntent().getBooleanExtra(EXTRA_FILTER_CERTIFY, false);
|
||||
boolean filterCertify = getIntent().getBooleanExtra(EXTRA_FILTER_CERTIFY, false);
|
||||
boolean filterSign = getIntent().getBooleanExtra(EXTRA_FILTER_SIGN, false);
|
||||
|
||||
// Check that the activity is using the layout version with
|
||||
// the fragment_container FrameLayout
|
||||
@ -59,7 +60,7 @@ public class SelectSecretKeyActivity extends ActionBarActivity {
|
||||
}
|
||||
|
||||
// Create an instance of the fragment
|
||||
mSelectFragment = SelectSecretKeyFragment.newInstance(mFilterCertify);
|
||||
mSelectFragment = SelectSecretKeyFragment.newInstance(filterCertify, filterSign);
|
||||
|
||||
// Add the fragment to the 'fragment_container' FrameLayout
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
|
@ -41,18 +41,22 @@ public class SelectSecretKeyFragment extends ListFragment implements
|
||||
private SelectSecretKeyActivity mActivity;
|
||||
private SelectKeyCursorAdapter mAdapter;
|
||||
|
||||
private boolean mFilterCertify;
|
||||
private boolean mFilterCertify, mFilterSign;
|
||||
|
||||
private static final String ARG_FILTER_CERTIFY = "filter_certify";
|
||||
private static final String ARG_FILTER_SIGN = "filter_sign";
|
||||
|
||||
/**
|
||||
* Creates new instance of this fragment
|
||||
*
|
||||
* filterCertify and filterSign must not both be set!
|
||||
*/
|
||||
public static SelectSecretKeyFragment newInstance(boolean filterCertify) {
|
||||
public static SelectSecretKeyFragment newInstance(boolean filterCertify, boolean filterSign) {
|
||||
SelectSecretKeyFragment frag = new SelectSecretKeyFragment();
|
||||
|
||||
Bundle args = new Bundle();
|
||||
args.putBoolean(ARG_FILTER_CERTIFY, filterCertify);
|
||||
args.putBoolean(ARG_FILTER_CERTIFY, filterSign);
|
||||
frag.setArguments(args);
|
||||
|
||||
return frag;
|
||||
@ -63,6 +67,7 @@ public class SelectSecretKeyFragment extends ListFragment implements
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
mFilterCertify = getArguments().getBoolean(ARG_FILTER_CERTIFY);
|
||||
mFilterSign = getArguments().getBoolean(ARG_FILTER_SIGN);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -115,9 +120,10 @@ public class SelectSecretKeyFragment extends ListFragment implements
|
||||
KeyRings.USER_ID,
|
||||
KeyRings.EXPIRY,
|
||||
KeyRings.IS_REVOKED,
|
||||
// can certify info only related to master key
|
||||
KeyRings.CAN_CERTIFY,
|
||||
// has sign may be any subkey
|
||||
KeyRings.HAS_SIGN,
|
||||
KeyRings.HAS_SECRET,
|
||||
KeyRings.HAS_ANY_SECRET
|
||||
};
|
||||
|
||||
@ -152,7 +158,7 @@ public class SelectSecretKeyFragment extends ListFragment implements
|
||||
|
||||
private class SelectSecretKeyCursorAdapter extends SelectKeyCursorAdapter {
|
||||
|
||||
private int mIndexHasSecret, mIndexHasSign, mIndexCanCertify;
|
||||
private int mIndexHasSign, mIndexCanCertify;
|
||||
|
||||
public SelectSecretKeyCursorAdapter(Context context, Cursor c, int flags, ListView listView) {
|
||||
super(context, c, flags, listView);
|
||||
@ -162,7 +168,6 @@ public class SelectSecretKeyFragment extends ListFragment implements
|
||||
protected void initIndex(Cursor cursor) {
|
||||
super.initIndex(cursor);
|
||||
if (cursor != null) {
|
||||
mIndexHasSecret = cursor.getColumnIndexOrThrow(KeyRings.HAS_SECRET);
|
||||
mIndexCanCertify = cursor.getColumnIndexOrThrow(KeyRings.CAN_CERTIFY);
|
||||
mIndexHasSign = cursor.getColumnIndexOrThrow(KeyRings.HAS_SIGN);
|
||||
}
|
||||
@ -179,23 +184,26 @@ public class SelectSecretKeyFragment extends ListFragment implements
|
||||
// Special from superclass: Te
|
||||
boolean enabled = false;
|
||||
if((Boolean) h.status.getTag()) {
|
||||
if (cursor.getInt(mIndexHasSecret) == 0) {
|
||||
h.status.setText(R.string.no_subkey);
|
||||
// Check if key is viable for our purposes (certify or sign)
|
||||
} else if(mFilterCertify) {
|
||||
if(mFilterCertify) {
|
||||
// Only enable if can certify
|
||||
if (cursor.getInt(mIndexCanCertify) == 0) {
|
||||
h.status.setText(R.string.can_certify_not);
|
||||
} else {
|
||||
h.status.setText(R.string.can_certify);
|
||||
enabled = true;
|
||||
}
|
||||
} else {
|
||||
} else if(mFilterSign) {
|
||||
// Only enable if can sign
|
||||
if (cursor.getInt(mIndexHasSign) == 0) {
|
||||
h.status.setText(R.string.no_key);
|
||||
h.status.setText(R.string.can_sign_not);
|
||||
} else {
|
||||
h.status.setText(R.string.can_sign);
|
||||
enabled = true;
|
||||
}
|
||||
} else {
|
||||
// No filters, just enable
|
||||
enabled = true;
|
||||
}
|
||||
}
|
||||
h.setEnabled(enabled);
|
||||
|
@ -45,7 +45,7 @@ public class SelectSecretKeyLayoutFragment extends Fragment implements LoaderMan
|
||||
private TextView mKeyMasterKeyIdHex;
|
||||
private TextView mNoKeySelected;
|
||||
private BootstrapButton mSelectKeyButton;
|
||||
private Boolean mFilterCertify;
|
||||
private Boolean mFilterCertify, mFilterSign;
|
||||
|
||||
private Uri mReceivedUri = null;
|
||||
|
||||
@ -72,10 +72,14 @@ public class SelectSecretKeyLayoutFragment extends Fragment implements LoaderMan
|
||||
mCallback = callback;
|
||||
}
|
||||
|
||||
public void setFilterCertify(Boolean filterCertify) {
|
||||
public void setFilterCertify(boolean filterCertify) {
|
||||
mFilterCertify = filterCertify;
|
||||
}
|
||||
|
||||
public void setFilterSign(boolean filterSign) {
|
||||
mFilterSign = filterSign;
|
||||
}
|
||||
|
||||
public void setNoKeySelected() {
|
||||
mNoKeySelected.setVisibility(View.VISIBLE);
|
||||
mKeyUserId.setVisibility(View.GONE);
|
||||
@ -115,6 +119,7 @@ public class SelectSecretKeyLayoutFragment extends Fragment implements LoaderMan
|
||||
mSelectKeyButton = (BootstrapButton) view
|
||||
.findViewById(R.id.select_secret_key_select_key_button);
|
||||
mFilterCertify = false;
|
||||
mFilterSign = false;
|
||||
mSelectKeyButton.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
@ -135,6 +140,7 @@ public class SelectSecretKeyLayoutFragment extends Fragment implements LoaderMan
|
||||
private void startSelectKeyActivity() {
|
||||
Intent intent = new Intent(getActivity(), SelectSecretKeyActivity.class);
|
||||
intent.putExtra(SelectSecretKeyActivity.EXTRA_FILTER_CERTIFY, mFilterCertify);
|
||||
intent.putExtra(SelectSecretKeyActivity.EXTRA_FILTER_SIGN, mFilterSign);
|
||||
startActivityForResult(intent, REQUEST_CODE_SELECT_KEY);
|
||||
}
|
||||
|
||||
|
@ -499,5 +499,6 @@
|
||||
<string name="secret_cannot_multiple">Secret keys can only be deleted individually!</string>
|
||||
<string name="title_view_cert">View Certificate Details</string>
|
||||
<string name="unknown_algorithm">unknown</string>
|
||||
<string name="can_sign_not">cannot sign</string>
|
||||
|
||||
</resources>
|
||||
|
Loading…
Reference in New Issue
Block a user