diff options
author | Dominik Schürmann <dominik@dominikschuermann.de> | 2013-09-17 10:58:35 -0700 |
---|---|---|
committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2013-09-17 10:58:35 -0700 |
commit | 7f46c40eb894a7198f9a96bd999a2bd6f984eabc (patch) | |
tree | 13993a9b6ee262481b3045a83baa3f058d884e21 | |
parent | 73ccb816acda7879c66f795045a98e228cb8b58a (diff) | |
parent | 32b2711e6184721ceb74c4220b86295f0e51e5ad (diff) | |
download | open-keychain-7f46c40eb894a7198f9a96bd999a2bd6f984eabc.tar.gz open-keychain-7f46c40eb894a7198f9a96bd999a2bd6f984eabc.tar.bz2 open-keychain-7f46c40eb894a7198f9a96bd999a2bd6f984eabc.zip |
Merge pull request #128 from ashh87/master
add public keys when importing secret keys
-rw-r--r-- | OpenPGP-Keychain/src/org/sufficientlysecure/keychain/pgp/PgpImportExport.java | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/pgp/PgpImportExport.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/pgp/PgpImportExport.java index c4ce3d29a..d7ab5d8fe 100644 --- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/pgp/PgpImportExport.java +++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/pgp/PgpImportExport.java @@ -26,9 +26,12 @@ import java.io.OutputStream; import java.util.ArrayList; import org.spongycastle.bcpg.ArmoredOutputStream; +import org.spongycastle.openpgp.operator.KeyFingerPrintCalculator; +import org.spongycastle.openpgp.operator.jcajce.JcaKeyFingerprintCalculator; import org.spongycastle.openpgp.PGPException; import org.spongycastle.openpgp.PGPKeyRing; import org.spongycastle.openpgp.PGPObjectFactory; +import org.spongycastle.openpgp.PGPPublicKey; import org.spongycastle.openpgp.PGPPublicKeyRing; import org.spongycastle.openpgp.PGPSecretKey; import org.spongycastle.openpgp.PGPSecretKeyRing; @@ -261,6 +264,16 @@ public class PgpImportExport { if (save) { ProviderHelper.saveKeyRing(mContext, secretKeyRing); + // TODO: preserve certifications (http://osdir.com/ml/encryption.bouncy-castle.devel/2007-01/msg00054.html ?) + PGPPublicKeyRing newPubRing = null; + for (PGPPublicKey key : new IterableIterator<PGPPublicKey>(secretKeyRing.getPublicKeys())) { + if (newPubRing == null) { + newPubRing = new PGPPublicKeyRing(key.getEncoded(), new JcaKeyFingerprintCalculator()); + } + newPubRing = PGPPublicKeyRing.insertPublicKey(newPubRing, key); + } + if (newPubRing != null) + ProviderHelper.saveKeyRing(mContext, newPubRing); // TODO: remove status returns, use exceptions! status = Id.return_value.ok; } |