/******************************************************************************* * Copyright (C) 2015 Connor Lanigan (email: dev@connorlanigan.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. *******************************************************************************/ package de.norvos.axolotl; import java.util.List; import org.whispersystems.libaxolotl.AxolotlAddress; import org.whispersystems.libaxolotl.IdentityKey; import org.whispersystems.libaxolotl.IdentityKeyPair; import org.whispersystems.libaxolotl.InvalidKeyIdException; import org.whispersystems.libaxolotl.state.PreKeyRecord; import org.whispersystems.libaxolotl.state.SessionRecord; import org.whispersystems.libaxolotl.state.SignedPreKeyRecord; import de.norvos.axolotl.stores.IdentityKeyStore; import de.norvos.axolotl.stores.PreKeyStore; import de.norvos.axolotl.stores.SessionStore; import de.norvos.axolotl.stores.SignedPreKeyStore; /** * The store containing all data needed for the encryption and decryption * process in the TextSecure protocol. * * @author Connor Lanigan */ public class AxolotlStore implements org.whispersystems.libaxolotl.state.AxolotlStore { private static AxolotlStore instance; synchronized public static AxolotlStore getInstance() { if (instance == null) { instance = new AxolotlStore(); } return instance; } private AxolotlStore() { } @Override public boolean containsPreKey(final int preKeyId) { return PreKeyStore.getInstance().containsPreKey(preKeyId); } @Override public boolean containsSession(final AxolotlAddress address) { return SessionStore.getInstance().containsSession(address); } @Override public boolean containsSignedPreKey(final int signedPreKeyId) { return SignedPreKeyStore.getInstance().containsSignedPreKey(signedPreKeyId); } @Override public void deleteAllSessions(final String name) { SessionStore.getInstance().deleteAllSessions(name); } @Override public void deleteSession(final AxolotlAddress address) { SessionStore.getInstance().deleteSession(address); } @Override public IdentityKeyPair getIdentityKeyPair() { return IdentityKeyStore.getInstance().getIdentityKeyPair(); } @Override public int getLocalRegistrationId() { return IdentityKeyStore.getInstance().getLocalRegistrationId(); } @Override public List<Integer> getSubDeviceSessions(final String name) { return SessionStore.getInstance().getSubDeviceSessions(name); } @Override public boolean isTrustedIdentity(final String name, final IdentityKey identityKey) { return IdentityKeyStore.getInstance().isTrustedIdentity(name, identityKey); } @Override public PreKeyRecord loadPreKey(final int preKeyId) throws InvalidKeyIdException { return PreKeyStore.getInstance().loadPreKey(preKeyId); } @Override public SessionRecord loadSession(final AxolotlAddress address) { return SessionStore.getInstance().loadSession(address); } @Override public SignedPreKeyRecord loadSignedPreKey(final int signedPreKeyId) throws InvalidKeyIdException { return SignedPreKeyStore.getInstance().loadSignedPreKey(signedPreKeyId); } @Override public List<SignedPreKeyRecord> loadSignedPreKeys() { return SignedPreKeyStore.getInstance().loadSignedPreKeys(); } @Override public void removePreKey(final int preKeyId) { PreKeyStore.getInstance().removePreKey(preKeyId); } @Override public void removeSignedPreKey(final int signedPreKeyId) { SignedPreKeyStore.getInstance().removeSignedPreKey(signedPreKeyId); } @Override public void saveIdentity(final String name, final IdentityKey identityKey) { IdentityKeyStore.getInstance().saveIdentity(name, identityKey); } @Override public void storePreKey(final int preKeyId, final PreKeyRecord record) { PreKeyStore.getInstance().storePreKey(preKeyId, record); } @Override public void storeSession(final AxolotlAddress address, final SessionRecord record) { SessionStore.getInstance().storeSession(address, record); } @Override public void storeSignedPreKey(final int signedPreKeyId, final SignedPreKeyRecord record) { SignedPreKeyStore.getInstance().storeSignedPreKey(signedPreKeyId, record); } }