From e41ae508123c641686b0f6ec25f0a65dc68796b7 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 22 May 2014 14:44:09 -0400 Subject: [PATCH] make LocalRepoKeyStore into a proper singleton Hopefully this makes Peter happy ;-) --- .../fdroid/localrepo/LocalRepoKeyStore.java | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java b/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java index 5b92e0fa5..b21d4815e 100644 --- a/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java +++ b/src/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java @@ -1,6 +1,8 @@ package org.fdroid.fdroid.localrepo; +import android.content.Context; + import org.fdroid.fdroid.FDroidApp; import org.spongycastle.asn1.ASN1Sequence; import org.spongycastle.asn1.x500.X500Name; @@ -48,11 +50,36 @@ public class LocalRepoKeyStore { private static final String DEFAULT_INDEX_CERT_INFO = "O=Kerplapp,OU=GuardianProject"; + private static LocalRepoKeyStore localRepoKeyStore; private KeyStore keyStore; private KeyManager[] keyManagers; private File backingFile; - public LocalRepoKeyStore(File backingFile) throws KeyStoreException, NoSuchAlgorithmException, + public static LocalRepoKeyStore get(Context context) { + + if (localRepoKeyStore == null) { + File appKeyStoreDir = context.getDir("keystore", Context.MODE_PRIVATE); + File keyStoreFile = new File(appKeyStoreDir, "kerplapp.bks"); + try { + localRepoKeyStore = new LocalRepoKeyStore(keyStoreFile); + } catch (UnrecoverableKeyException e) { + e.printStackTrace(); + } catch (KeyStoreException e) { + e.printStackTrace(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (CertificateException e) { + e.printStackTrace(); + } catch (OperatorCreationException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return localRepoKeyStore; + } + + private LocalRepoKeyStore(File backingFile) throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException, OperatorCreationException, UnrecoverableKeyException { this.backingFile = backingFile; this.keyStore = KeyStore.getInstance(KeyStore.getDefaultType());